Hatena::ブログ(Diary)

techlog RSSフィード

理解というものは、つねに誤解の総体に過ぎない
 「スプートニクの恋人」とか「かえるくん、東京を救う 」より

こちらになりました → http://sadah.hatenablog.com/

2007-06-28

[][]Mash up Award 3rd また頑張ろう

よし、これで100万もらえる。

またプログラム書きたいなぁ、と思っていたけど、いまひとつモチベーションが上がりきらなかった。

これはよいきっかけだ。

アイディアはあるので、頑張って実装すればOK。

本をさがそうは、結局数千ステップくらいだった。今度はちゃんとやると、1万ステップは超えるだろうなぁ。

Javaじゃなければ、もっと楽に開発できるんだろうけど・・・。

2007-06-19

[][]田口元の「ひとりで作るネットサービス」探訪

最近、個人が提供するネットサービスが増えている。これらを作る人は何を思い、どのように運営しているのだろうか。

田口元の「ひとりで作るネットサービス」探訪

これすき。最近インデックスページができて、ちょっと嬉しい。

2007-06-18

[][]日本語形態素解析Webサービス

日本語形態素解析Webサービスは、ヤフーの日本語処理技術部がYahoo! JAPAN研究所と共同で開発を進めてきた形態素解析エンジン「Web MA」を社外の開発者向けにAPIとして公開するもの。このエンジンは、ヤフーのブログ検索や商品検索などのテキスト処理、ブログ検索の「評判検索機能」、「まとめ検索機能」などのテキストマイニング処理にも利用されている。

ヤフー、文章を解析できるAPI「日本語形態素解析Webサービス」を公開

日本語形態素解析Webサービスは24時間以内で1IPアドレスにつき5万件のリクエストが上限、1リクエストの最大サイズは100KBに制限されている。

ヤフー、文章を解析できるAPI「日本語形態素解析Webサービス」を公開

なんかすごいもの公開してきたなぁ。制限事項はいくつかあるが、普通に考えれば負荷はかなり高そうな処理だし仕方ないかな。

APIはRESTなので、とりあえずブラウザから試してみる。

# 僕はSOAPは使えるんだけど、RESTは使えない・・・。

# 時代の波に乗れてない・・・。

Yahoo!のサンプルには「庭には二羽ニワトリがいる」があった。でもこれって漢字ではつまらないじゃない。

というわけで、「すもももももももものうち」の検索結果はどうだろう。

Request

http://api.jlp.yahoo.co.jp/MAService/V1/parse?appid=YahooDemo&results=ma,uniq&uniq_filter=9|10&sentence=%E3%81%99%E3%82%82%E3%82%82%E3%82%82%E3%82%82%E3%82%82%E3%82%82%E3%82%82%E3%82%82%E3%81%AE%E3%81%86%E3%81%A1

Response

<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="urn:yahoo:jp:jlp"
 xsi:schemaLocation="urn:yahoo:jp:jlp http://api.jlp.yahoo.co.jp/MAService/V1/parseResponse.xsd">
  <ma_result>
    <total_count>7</total_count>
    <filtered_count>7</filtered_count>
    <word_list>
      <word>
        <surface>すもも</surface>
        <reading>すもも</reading>
        <pos>名詞</pos>
      </word>
      <word>
        <surface></surface>
        <reading></reading>
        <pos>助詞</pos>
      </word>
      <word>
        <surface>もも</surface>
        <reading>もも</reading>
        <pos>動詞</pos>
      </word>
      <word>
        <surface>もも</surface>
        <reading>もも</reading>
        <pos>動詞</pos>
      </word>
      <word>
        <surface></surface>
        <reading></reading>
        <pos>助詞</pos>
      </word>
      <word>
        <surface></surface>
        <reading></reading>
        <pos>助詞</pos>
      </word>
      <word>
        <surface>うち</surface>
        <reading>うち</reading>
        <pos>名詞</pos>
      </word>
    </word_list>
  </ma_result>
  <uniq_result>
    <total_count>7</total_count>
    <filtered_count>4</filtered_count>
    <word_list>
      <word>
        <count>2</count>
        <surface>もも</surface>
        <reading/>
        <pos>動詞</pos>
      </word>
      <word>
        <count>1</count>
        <surface>うち</surface>
        <reading/>
        <pos>名詞</pos>
      </word>
      <word>
        <count>1</count>
        <surface>すもも</surface>
        <reading/>
        <pos>名詞</pos>
      </word>
    </word_list>
  </uniq_result>
</ResultSet>

日本語の品詞とかは、あまりよくわからないが、このResponseはいけてないような気が・・・。

      <word>
        <surface>もも</surface>
        <reading>もも</reading>
        <pos>動詞</pos>
      </word>

そもそも、動詞の「もも」ってなんだ?


Senを使ったときはちゃんとできたんだけどなぁ。SenMeCabJava版。

MeCabでの実行結果はこうなる。

# Senで試したときも同様の結果だった。

すもももももももものうち
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

まあこれだけで、判断できることではないけど。


なにはともあれ、Yahoo!が使っている形態素解析エンジンを使えるっていうのはすごいな。検索技術のコア技術のひとつだし。

こういう技術が公開されている時代の研究ってどんな感じなんだろう。ふと思った。

研究者じゃなくても、形態素解析が簡単にできてしまう。研究を差別化していくのが、どんどん難しくなるかもしれない。アイディアがより求められるようになるのかな。

もっと難しいのは企業かもしれない。フットワークの軽いベンチャーなら、新しいビジネスが広がるかもしれない。でもフットワークの重い企業は、どんどん新しいビジネスが難しくなるのかもしれない。

趣味プログラマとしては、こういうの単純に嬉しいけどね。

2007-05-14

[][][]はてな認証APIを試してみる

はてな認証APIのサンプルを作っている。もちろんJavaで。

検索したら、すでにライブラリを作っているひとがいたので、とりあえずこれで試している。

2時間くらい試行錯誤したが、とりあえず動いた。

無理やりSeasarを使おうとしているため、ハードルが高くなってしまう・・・。

S2JSFで外部サイトにリダイレクトってどうやればいいんだ、と悩むが、普通に以下のコードでできた。

response.sendRedirect("リダイレクト先URL");

今の時点だと、かなり適当にActionでresponseをDIさせて、そこで取ってきている。これでいいんだろうか・・・だめだな。

ほんとうはLoginCheckInterceptorとか作ってやるんだろうなぁ。まあとりあずローカル環境での動作確認ということで。

あとはライブラリのクラスとメソッドを参考に、ちゃんとはてな認証APIを実装しようっと。認証部分でブラックボックスというのも、なんとなく嫌なので。はてなに任せる時点でブラックボックスだけど。

2007-05-12

[][][]僕の考える個人サービスを作るコツ

個人サービスを作るコツ」というエントリーがあったので、「本をさがそう」を作ったときに思ったことをまとめてみよう。

# Google「本をさがそう」を検索したら、トップだった!

元ネタはいかの通り。

1.ブラウザのホームページを自分の作っている最中のurlに

2.ドメインを絶対に取る。せめてサブドメイン

3.1週間以内に終わるようにする

4.100やりたかったら、まずはコアな部分だけ10つくる

5.内容よりも出す事を重視する

6.綺麗なコードなんて必要ない

7.デザインは先に作る

8.サービスに名前をつける

個人サービスを作るコツ

上記とかぶる部分はあるけど、僕の考える個人サービスを作るコツは以下のとおり。


僕の考える個人サービスを作るコツ

  1. ブラウザを立ち上げる前にeclipseを立ち上げる
  2. ドメインを取る
  3. 1日1機能実装する
  4. 最初はソースにコメントを書かない
  5. 悩むよりも、簡単にでも実装する
  6. 作りたい部分だけ、まず作る
  7. 動くようになったら、早く見せる
  8. 早い段階でリファクタリングする

解説


ブラウザを立ち上げる前にeclipseを立ち上げる

ブラウザを立ち上げてしまった時点で、負けだ。まずはeclipseを立ち上げて、やらなくてはいけないと自分にプレッシャーを掛ける。


ドメインを取る

ドメイン取得にはお金が掛かる。とってしまったからには作らなくては、と自分にプレッシャーを掛ける。


1日1機能実装する

コードを書くときは、最低1機能は実装したい。機能といっても、1メソッドでも1クラスでもよい。同じ機能に何日も掛けていると、モチベーションが下がるし、飽きてしまう。


最初はソースにコメントを書かない

短いスパンで書いている分には、自分のソースが読めなくなることはない。コメントを書く時間があれば、実装をするべきだ。

また早い段階からコメントを入れてしまうと、リファクタリングの障害となる。ソースを修正だけなら簡単でも、コメントまで修正するのを考えると嫌になってしまう。


悩むよりも、簡単にでも実装する

実装方法に悩んだら、ソースが汚くなっても、簡単な方法で実装する。悩むと飽きてしまい、コーディングが辛くなる。そんなときはまず動くモノを作るために割り切って実装する。


作りたい部分だけ、まず作る

誰かにスケジュールを強制されているわけではないので、まずは作りたい部分から作る。デザインでも、機能でもいい。好きな部分からはじめて、モチベーションを上げる。


動くようになったら、早く見せる

多少機能が足りなくても、動くのなら早く誰かに見てもらうべきだ。自分では思いつかないような意見がもらえるかもしれないし、自分の換わりにテストまでしてもらえる。


早い段階でリファクタリングする

ある程度完成度が上がってきたあとは、機能を追加するときに、まずリファクタリングをする。モチベーションが高いうちに、リファクタリングをする。完成度の高い機能などには、コメントを追加する。リファクタリングは、動くところまで確認する。リファクタリングの途中で中断してしまうと、わけがわからなくなる可能性が高いので、絶対やってはいけない。


僕はJavaしかできないので、基本的に生産性は低いほうだと思う。

Javaを選択したせいで、必要になってくる作業が多い。レンタルサーバでは動かせないので、自分でサーバを立ててLinuxやTomcatの設定をしなくてはならない。ただ一度環境を作ってからは、比較的スムーズに進んだ。

環境構築はたぶん3か月くらいかかった。難しいわけではなくて、モチベーションの問題。

実装を開始してから、最初のリリースは2週間くらい。それからは1週間に1機能くらいをリリースした。

異常系の動作はすごく適当だけど、まあいいかとほっておいてる。

個人でサービスを作るのは大変だけど、仕事での開発では得られない経験がたくさんある(仕事ではほとんど開発はしていないけど)。仕事では得られないレスポンスもある。


そういうのがすごく楽しい。