何?を/見?て-も何/か*思+い出*す
↓
似てるものを 2 つずつ投稿して共有するだけのウェブサービスを作った。上記は納豆の風味とコーヒーの香りが微妙に似ているということを表現しようとしてるけど、伝わってなさそう。
「A を B に空目した」とか「C さんはこの写真に写ってる原住民に似てる」とかポストしておもしろい感じになればいいなと思っているが、単に何かを 2 つ並べたいときに使えばいい気もする。oEmbed に対応しているので Flickr の画像や YouTube の動画を埋め込むこともできたりします。
特にたいしたことやってないけど、興味あったら使ってみてもらえるとうれしいです。不具合とかあったら Twitter 等で教えてもらえると助かります。
ひまあったらスライドショーモードとか、編集距離を計算して表示するのとかやりたいと思ってます。あと、下記は参考にさせてもらった意見やコード、いつもありがとうございます。
- Ernest Hemingway "I Guess Everything Reminds You of Something" (タイトル文言)
- youpy さんの unsearchable (タイトルの検索よけ)
- ucnv さんの unsearchable2 (タイトルの検索よけ 2)
- mala さんの 最速インターフェース研究会 :: 高橋メソッドなプレゼンツール (文字を大きく表示), あと oEmbed を教えてもらった
追記 (2014/07/16)
dotcloud (http://ermos.dotcloud.com/) から heroku (http://everythingremindsmeofsomething.herokuapp.com/) に移行したので URL を更新しました。
最近作ったものや書いた文章のまとめ (2010/05 〜 2011/12)
年末らしくまとめてみた。前回が 2010/05 だったのでそれ以降のまとめです。時系列に並べたらものすごくまとまりのない感じになったのでカテゴリに分けた。
音声処理
- 2011/02/27 tily/java-android-pixel-synthesizer - GitHub
- 2011/04/02 Twitter / @tily: タイプライターみたいな感じで音が出るテキストエリアを ...
- 2011/04/07 Flash のマイクから取得した波形データを HTML5 canvas に描画するやつ
- 2011/11/19 Twitter / @tily: JavaScript でブルーズを自動生成するやつ途 ...
- 2011/11/20 Twitter / @tily: ファミコンっぽい効果音でチャットできるやつ作った ( ...
- 2011/11/06 ブラウザ + WebSocket で電話する - PARAGRAPHS
画像処理
- 2010/05/12 face.com の顔認識 API + canvas で Google 画像検索に落書きする - PARAGRAPHS
- 2011/01/29 ぶっ壊れた写真しか撮れないカメラ (BrokenCamera for Android) - PARAGRAPHS
- 2011/01/30 glitch yesterday - PARAGRAPHS
- 2011/02/06 カメラを扱う Android アプリではまったところ - 文字 - はてな自習室
- 2011/02/14 BrokenCamera を修正して簡単にいろんな壊れ方を試せるようにした - PARAGRAPHS
- 2011/02/20 BrokenCamera for Android (Version 6) - PARAGRAPHS
物語自動生成
- 2011/11/21 日本語の物語っぽいテキストから登場人物を抽出する (適当) ― Gist
- 2011/08/03 マクガフィン自動生成 ― Gist
- 2011/08/10 架空のアーティスト自動生成 ― Gist
自然言語処理・言葉遊び
- 2010/05/15 喫茶店の名前変換
- 2010/06/10 なんでもバイト敬語っぽくするやつ
- 2010/06/19 なんでも lifehack っぽくするやつ
- 2010/09/29 tily/ruby-faker-japanese - GitHub
- 2011/11/17 日本語文書に出現するカタカナ語の TF/IDF を取得する ― Gist
- 2011/11/17 ニンジャスレイヤーの特徴的なカタカナ語ランキング (ベスト100) ― Gist
- 2011/12/07 Ruby で Double-Array を実装して Common-Prefix Search を試してみる - PARAGRAPHS
- 2011/03/06 無理矢理ニュースっぽく変換するやつ ― Gist
- 2011/08/01 日本語テキストから韻のふめる言葉を抜き出す - PARAGRAPHS
- 2011/08/13 なんでも性的にするやつ ― Gist
- 2011/08/14 なんでも美味そうにするやつ ― Gist
- 2011/10/14 tily/ruby-ja-sound-index - GitHub
- 2011/10/14 tily/ruby-ja-complex-word - GitHub
便利ツール
- 2010/07/18 リフレクション + runkit で既存のクラスをスタブ化する PHP ライブラリ - PARAGRAPHS
- 2010/10/17 GNU screen を簡単に外側から操作できるようにする Ruby ライブラリ easy-screen - PARAGRAPHS
- 2010/10/19 gist/gisty を利用した簡素なメモツール gistpad - PARAGRAPHS
- 2010/10/22 gistpad (2) スマートなファイル指定、自動コミット & プッシュ、ファイル重複時の候補表示、zsh によるファイル名補完 - PARAGRAPHS
- 2011/01/22 1 枚の Java ソースファイルだけで Android アプリを管理できるようにする rur コマンド - PARAGRAPHS
- 2011/03/31 Greasemonkey でインストール時にバイナリデータをサンプリングできるようにするやつ
- 2011/06/12 手動で変換しなくてもいい日本語入力 - PARAGRAPHS
- 2011/06/27 分布を表示してくれる grep - 文字 - はてな自習室
- 2011/09/19 Tumblr、ローカルの写真を複数ドラッグ&ドロップでアップロードできるようにする Greasemonkey スクリプト - 文字 - はてな自習室
- 2011/10/07 MongoDB シェルの printjson() を使いやすくする - 文字 - はてな自習室
- 2011/11/30 ページで使われている JavaScript と CSS の一覧を表示する Greasemonkey スクリプト - 文字 - はてな自習室
- 2011/11/24 tily/ruby-jhc - GitHub
- 2010/06/06 Twitter ボットのエンハンス - PARAGRAPHS
- 2010/10/27 tily/ruby-twdo - GitHub
- 2010/10/30 OAuth::CLI::Twitter - PARAGRAPHS
- 2010/11/13 Twitter へのポストをキューイングする Twiq - PARAGRAPHS
- 2011/11/16 Twitter の特定ユーザの 3200 発言を取得して YAML で保存する (適当) ― Gist
翻訳・文章
- 2010/05/30 EKEN M001 で始める Android アプリケーション開発 - PARAGRAPHS
- 2010/05/31 JGate (AppJet) の使い方 - PARAGRAPHS
- 2011/10/05 イベントログ収集ツール fluent を試しに使ってみる - 文字 - はてな自習室
- 2011/10/10 no.de の SmartMachine に mecab をインストールする - 文字 - はてな自習室
- 2011/11/13 サバクラ両方で動く JavaScript の大規模開発を行うために ― Gist
これだけ作ったのに翻訳した「サバクラ〜」が一番ブクマされてたりするんだけど、やっぱ翻訳するより作るほうがおもしろいのでもっと作りたい。
便利ツールに関しては、結構な数を作っているけどなかなか便利にならず、自分でも継続して使えているものがなくて残念。もっと既存のツールをたくさん使って便利さのセンスをよくしたい。あと、音声処理とか電子書籍の分野でいくつかアイデアがあるので必要な勉強をしてなるべく早く作りたい。
ちなみに今はなぜか Rails でウェブアプリケーションを作るのがナウな tily にバカウケしていて、年明けあたりにいくつかリリースしたいと思ってたりします。来年もよろしくお願いします。
ブラウザ + WebSocket で電話する
- http://tily.no.de/telephone
- トップページ、部屋とニックネームを決めて開始する
- http://tily.no.de/telephone/sandbox
- 手軽に試す用
電話というか音声チャットなんだけど、Flash のマイクでとった音声を WebSocket 経由で送信して、受け取った側では Web Audio API とか Audio Data API とかで再生するというのを作った。Firefox と Chrome で動く。
はずなんだけど、no.de の SmartMachine のスペックが低いせいか、遅延のあるせいか相手側の音声がブツブツ切れて聴こえてしまう…。ローカルではちゃんと音声チャットっぽいことができているんだけど。
なんか色々他の人のコードを使ったり参考にしたりしたので書いておきます。
- socket.io サンプルのチャットプログラム
- デザインとか文字チャット部分は基本的にサンプルをそのまま使わせていただいています
- こてさきAjax:WebSocket + node.jsでAudio Streaming - livedoor Blog(ブログ)
- 非常に短いコードから音楽を生成して再生するやつ - hitode909のダイアリー
- Web Audio API を利用している部分を参考にさせていただきました
- JavaScriptでリアルタイムに音を出すときに簡単便利なやつつくった - つまみ食う
- 今回は使っていないけど、Safari でも動くように pico player を使うようにしたい
- Beyond HTML5 - Implementing device and stream management in WebKit | Ericsson Labs
- Flash マイク + WebSocket とか過渡期っぽいので、早くこういうのが主要ブラウザに実装されるといいな
あとここらへんも。
日本語テキストから韻のふめる言葉を抜き出す
# Usage: ruby extract_rhyme.rb [-m (vowel|vowel_with_help|surface)] -n N /path/to/file.txt
カタカナまんま (デフォルト、-m surface)
$ ruby extract_rhyme.rb -n 3 夏目漱石_坊ちゃん.txt | head アカリ: 月あかり | 灯 | 星明り アガル: 上がる | 起き上がる | 飛び上がる | 揚がる アゲル: 上げる | あげる | 取り上げる | 揚げる アタリ: 辺 | 見当り | 大当り | 心当り | 中り | 突き当り | 辺り アタル: 思い当る | あたる | 中る アルイ: 歩い | あるい | ねりあるい アワセ: 袷 | 不仕合せ | 申し合せ | 打ち合せ | 合せ | 待ち合せ | 仕合せ | 見合せ イガイ: 以外 | 大概 | 例外 イサイ: 制裁 | 体裁 | 委細 イサツ: 挨拶 | 推察 | 警察
母音 (-m vowel)
$ ruby extract_rhyme.rb -n 4 -m vowel 夏目漱石_坊ちゃん.txt | tail オオイア: 床板 | 木の下 | ここいら オオイイ: 恐ろしい | 騒々しい | 明後日 | よろしい | 乏しい | 思い切っ | 思いきっ オオイウ: よろしく | 落っこちる | 頼もしく | 騒々しくっ オオイオ: 思い込ん | 面白 | ごろりと | 躍り込ん オオエウ: 泳げる | 恐る | 求める | 覚える | 見届ける オオオア: ところが | 及ぼさ | 床の間 | どころか オオオイ: 驚 | 驚い | 心持ち | 試み | もとより | 横取り | 一昨日 オオオウ: ことごとく | 喜ぶ | 及ぼす | 驚く オオオエ: 心得 | 整え | 物覚え | 懐手 オオオオ: のそのそ | ごろごろ | ホホホホ | 色男 | そろそろ | きょろきょろ | ぞろぞろ | ちょろちょろ | そこそこ | よろよろ | もともと | 所々
母音 (-m vowel_with_help, ッーンを含む)
$ ruby extract_rhyme.rb -n 4 -m vowel_with_help 夏目漱石_坊ちゃん.txt | egrep "ッ|ー|ン" ウアアアッ: 済まなかっ | ぶら下がっ | ぶらさがっ オイアアッ: 飛びかかっ | 飛び上がっ | 持ち上がっ | 躍り上がっ | 起き上がっ | 取りかかっ オーアアイ: 大当り | 大騒ぎ | 遠廻し
手動で変換しなくてもいい日本語入力
そもそも「変換候補が表示されてそこから選ぶ」というのがめんどくさいから、ぜんぶ Google 日本語入力 API に任せたらどうなるかを試してみた。最後の入力から 0.5 秒経ったら自動で変換処理を開始する。IME を OFF にして "toukyoutokkyokyokakyoku" とかをキーボードから入力するとどういうことか分かる。JavaScript でテキストエリアの文字列を管理するのがむずかしくていろいろちゃんと動いてないけど、だいたい感じは掴めた。違うものを作ってたつもりなのに結局これ (変換操作を省いて自動的に変換・確定する:IME即効テクニック) の劣化版みたいな感じになったような…。
あと副産物として GlitchIME の JavaScript 版とかも作った。
大きな文字で hitode909 amen に合わせて青空文庫を読む Amen Reader
* http://amen-reader.heroku.com/http://www.aozora.gr.jp/cards/000035/files/275_13903.html
* http://amen-reader.heroku.com/[青空文庫HTMLページのURL]
漠然と文章とか音楽とか画像とかを組み合わせてスライドショーみたいのおもしろいと思っていて (YOUNG-HAE CHANG とか brazil さんの YHC とか)、3 月ぐらいに試しに作ってたやつ。
なんか読みづらいし、普通に読書するのよりいい体験になってる気がしなくて納得いかない。たぶんビート検出じゃなくてメロディ検出までいかないと YOUNG-HAE CHANG みたいな滑らかさは出せないんじゃないかなと思った。
あと Firefox でしかまともに動かなくて Chrome で動かすと重くなって落ちたりするかも…。なんかいろいろダメなんだけど、実験というか記録の意味でとりあえず出しておきます。
もっとベーシックに、どのくらいの文字量・どのくらいのスピードで読むのが一番読みやすいのか、実験するようなやつを作ったほうがいいような気がしてる。
参考:
* YOUNG-HAE CHANG HEAVY INDUSTRIES PRESENTS
* TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア
* スライドショーのようにテキストを読むGreasemonkeyスクリプト、YHC - はてなダイアリー
* 無限にAmen Breakを再生するウェブサービス - hitode909のダイアリー
* 最速インターフェース研究会 :: 高橋メソッドなプレゼンツール
Wiki に書いた URL のリストから青空文庫のミックス電子書籍を作れるようにする aozora-mix.rb
青空文庫に掲載されている作品はけっこう短いものが多いので、いくつかの作品をまとめて短編集かアンソロジーみたいな感じで読みたいなと思って、ある程度汎用的に使える仕組みを考えてみた。
Wiki (jottit) のページに書いた URL のリストから、いくつかの作品を詰め合わせた epub を作ることができる。たとえば青空文庫で読める日本古典SFから短い作品だけを抜粋してリンク集にした日本古典SF短編集というページを作ったとして、以下のように実行すると、
ruby aozora-mix.rb 日本古典SF短編集
こんな感じで処理が行われて、out.epub というファイルが生成される。
ダウンロードします (http://www.aozora.gr.jp/cards/000160/files/877_23846.html) ダウンロードしました (海野十三 千年後の世界) ダウンロードします (http://www.aozora.gr.jp/cards/000262/files/1458_14514.html) ダウンロードしました (小酒井不木 恋愛曲線) ダウンロードします (http://www.aozora.gr.jp/cards/000160/files/873_23287.html) ダウンロードしました (海野十三 放送された遺言) (中略) epubファイルを作成しています (out.epub) 完了しました
自分の場合は Kindle で読むために kindlegen で mobi に変換した。残念ながら目次ページはうまく生成されなかったけど、作品ごとにジャンプできるのでそれなりに使えるっぽい。こんな感じで表示されている。
細かい使い方については README に書いてある。Wiki は誰でも編集できるようにしてあるのでよかったら使ってみてください。
Ruby は敷居が高いのでjs-eeepub + グリモンとかにしたほうがよかったかも、画像の埋め込みとか縦書き対応とかやってみたい気もする。