投稿

色々あった1年だった

イメージ
今年一年を振り返ってみるとやはり地震の存在は大きいものの、それ以外にも色々激動だった。 が、まあ個人的なブログに偉人が亡くなったとか世の中のことを書くほど真剣に世の中と向き合っていたわけではないので、個人的なことを綴っておきたい。

PHP + MongoDB であいまい検索を作った話

先日、ちょっとしたキッカケで「あいまい検索」を作ってみようと思った。 アニメのタイトルで。 が、そもそもどうやって作るのかまったくわからない。 ただ、一応形態素解析とか N-gram とかは知っていたので、この辺を攻めればなんとかなるだろうと思ったのでちょっと考えた。 この時点で形態素解析を使ってしまうと使える範囲が限られてしまって楽しくなさそうなので、N-gram で行こうと最初に決めた。言語に依存しないし未知語に対しても強いし、アニメのタイトルのようなものに対しては相性が良さそうだから。 要するに似たものを出せばいいのだ。 例えば「らき☆すた」と「らきすた」は結構似ているが微妙に違う。Bigram を使うとすると、 らき☆すた:  らき   き☆ ☆す  すた   た らきすた:  らき   きす  すた   た のように分かれて、強調にした場所のような共通項が存在する。 特に後半の2つは連続でヒットしていて結構重要なデータと言えそうだ。 そういうのを見てスコアリングして順位を決めればいいのではないだろうか? と考えたので、実装してみた。 データは以下のような構造で保存した。 word コレクション 検索対象になる言葉の全文が入っているコレクション。 { "_id": "(MongoDBが適当に素敵な感じのを考えてくれる)", "word": "らき☆すた" } wordNgram コレクション 検索対象になる語句を N 文字に分割した状態のコレクション。 { "_id": "(MongoDBが適当に素敵な感じのを考えてくれる)", "w": "らき", "p": [ { "_id": "(wordコレクションでの「らき☆すた」の_id)", "pos": 0, //「らき☆すた」内での「らき」の出現位置 "len": 5 //「らき☆すた」の長さ } ] } こんな感じのものを沢...

Android アプリケーションの作り方を勉強中

本格的にガッツリやってるわけじゃないので進行速度は結構遅いものの、少しずつ調べつつコード書きつつ学んでるところ。 今のところ知ったことなどを書いてまとめつつ進める。 Java もほとんど触ったことない。 SDK をインストールして実機とエミュレータで HelloWorld を動かした 上手くいったし開発環境もよくできてる気がする 画像を選択するための Intent をどうやって発行するのか調べた Intent.ACTION_PICK で setType("image/*") するのがそれっぽい 検索してる時に機種によっては発行の仕方によって上手く動かないケースの話を見た気がする (記憶が曖昧) MediaStore.ACTION_IMAGE_CAPTURE を使えばカメラのデータも Intent で受け取れるらしい ただし機種によって受け取り方が違うらしい記述を見かけた(特にXperia) Android3.x 系のエミュレータ上で標準のギャラリーアプリを起動すると落ちてしまう 実機上では問題ないのでエミュレータ上にサードパーティ製のギャラリーアプリを入れて回避 ViewFilpper を使うと複数の View をアニメーションで切り替えできることを知ったので使ってみた でかいスクリーンサイズでスライドアニメーションしてもスムースじゃなくて微妙だった 大きい画像を Bitmap クラスに読み込む時そこそこ長い時間止まってしまうので、別スレッドで読み込み処理をすることにして、画面はローディングアニメーションアイコンを置いておこう 別スレッドから UI 触れないというよくある話は Handler で解決するようだ。簡単にできちゃって凄い 戻るボタンを押すとアプリが終了してしまうので ViewFlipper はなんか一般的じゃない方法のような予感がした よくよく調べてみたら基本形は1つのActivityでひとつの画面で対応させる感じだとか 今作ってるアプリは Intent 発行ボタンを押す → ローディングアニメーションアイコン → 読み込み後の画面 という感じで画面が変わっていくんだけど、Intent 発行ボタンがある画面は別の Activity がよさそうな気がする Eclipse 上で新規 Activity 作る方法を調べて...

ワンキーゲームを作った

イメージ
そらけらさんに 素敵なイラスト書いてもらいました 昔ながらのワンキーゲームを速攻で作った。 ちょっとずつ変更を加えながらやってた。 HTML ファイルひとつで動くようにしてある。 以下、リリース順に並んでいます。一番下が最新。 スペースキーを押しっぱなしで浮力を与えて箱を避ける http://test.oov.ch/junk/space-key.html スペースキーをジャンプ機能に変更 http://test.oov.ch/junk/space-key2.html 迫ってくる箱が斜め移動するように変更 http://test.oov.ch/junk/space-key3.html 迫ってくる箱が画面端で跳ね返るように変更 http://test.oov.ch/junk/space-key4.html BGM を追加 http://test.oov.ch/junk/space-key5.html 死んだ時に BGM を停止するように変更 配色を Nyan cat 風に http://test.oov.ch/junk/space-key6.html 自機を Nyan cat に変更 http://test.oov.ch/junk/space-key7.html ブロックの出現パターンを毎回一緒になるように変更 http://test.oov.ch/junk/space-key8.html タイトル画面 スコア表示位置変更 背後に虹 ブロックに枠線 http://test.oov.ch/junk/space-key9.html 上部に余白を設けた 内部処理を若干整理 http://test.oov.ch/junk/space-keyA.html meta タグで Android 上での動作も少し考慮 http://test.oov.ch/junk/space-keyB.html

Google+ の話と、月刊地球さん9月号

イメージ
7月10日から Google+ を始めて、もうすぐ2ヶ月ぐらいになる。 始めは何をしたらいいのかよくわからなかった。 数少ない友人をサークルに入れて機能の確認をして、文字装飾機能があるとか、その機能は日本語だと微妙に使い勝手に難があるとか、再共有や再共有ロック、ブロック機能とかがあることを知った。 いくつか遊んではみたものの結局のところ限られた人数では広がり方にも限界があり、この時点では Google+ 自体が「フーン…」という程度の印象だった。 ただ Google+ は Facebook と違い実際の人間関係をリアルに反映させろとは言っていなかった。 だから元々名前を知っている人や尊敬している人で Google+ を始めてる人を探してサークルに入れ始めた。 この頃は何故かモテメンさんのコラが異常に流行っていてストリームが若干怖い感じではあったものの、なんか雰囲気を見る限り堅苦しい使い方じゃなく、もっとフランクに使っていいものなのだなと感じた。 それでもストリームに流れてくるのはわりと真面目な投稿が多かった。 なので友達候補や、他人がサークルに入れている人の中で投稿が面白い人を探して適当に入れ始めた。 その途中で 2ch のアカウント招待スレで Google+ を始めた人とかをサークルに入れたようで、妙にハイテンションな人達が増えだし、それと同時に一気にストリームが良くも悪くも低レベル化して、軽いノリで投稿したりコメントしたりできる場が出来上がっていった。 この辺から自分の中で急激に Google+ が面白くなってきたので、その分 Twitter に費やしていた時間を Google+ に注ぎこむようになって、一気に Twitter が放置状態になっていった。 ネット拾った二次画像を投稿する人も居るし、それを突然無言でものすごい勢いで行う「地球さん」と呼ばれる人も居る(恐らく中華圏の人のようなのだが具体的にどこなのかは不明)。 この辺のノリは本当に VIP とかに近くて、作者自体に全く言及されないまま過ぎ去っていくことも多いので絵を描く側からすれば素直に喜べない人も居ると思う(最近は Google で画像を元に検索できるので、作者に辿りつける事は多いけど)。 猫画像を定期的に投稿する人も居るし、動画を YouTube ではな...

ブラウザゲーム ColorTiles

イメージ
ColorTiles というブラウザゲームを作った。 ゲームのルールとかはこちらをどうぞ 。最初のダイアログの右下にもリンクがあります。 動作環境: PC   Firefox, Chrome, Safari, Opera の古くないもの iPad   iOS3 以降。ホーム画面に登録するとオフラインでの動作も可能なはず Android タブレット   3.0 の Firefox でそれなりに快適な動作を確認。標準ブラウザだと若干重い 作ったと言っても実際に作業していたのはまだ iPad が iOS3 だった時代で、放置している間に随分時間が流れてしまった。当時 iOS3 では Safari のバグで正常にマルチタッチのイベントが飛んでこなかったので、その影響でマルチタッチは非対応。 もう消せなくなったら盤面をリセットしてタイム追加して続行とか、色々とまだ機能も考えたりはしていたもののモチベーションが続かなくなってしまったので、取りあえず現状を放流して終わりにしようかと思い全部公開することにしました。

Google+™ で速攻挨拶するためのなんか凄いやつ

https://chrome.google.com/webstore/detail/kcjbjghmhjeocljmfloppdhhlafgogei Google+ での Post では日常的に挨拶が行われていて、個人的には「そういうのはデマッターでやってろよ」と思っているものの、わりと簡単にツール化できそうだったので作ってみた。 噂通りクラス名などが圧縮されてるようでちょっとした仕様変更ですぐ使えなくなりそうな気配がしているもの、まあおもちゃとしてはよさそう。 応用しやすい構造にしておいたのでもっといい使い方があればそれに使おう。