Blog

2012.05.26 / Development

karadameguricha-damehirosue

からだ巡茶のコンテンツで「ダメ広末」というのがあるというのを昨日発見。
広末涼子がひたすら「ダメ」と言う動画が70本もあるぶっとんだコンテンツ。
広末涼子「ダメ」と言われるということ、そしてその広末自身も微妙に美しきダメさを醸し出してること。
これはすごい。なんかすごい。
この提案通した人凄いしOKしたクライアントも素敵だ。

で、Facebookでシェアしたときに@chabudaiが「ずっと見てたら精神的に不安定になりました」と言うので、
今日朝起きてふと思って、これずっと見てたらいいんじゃないかってことでずっと見てられるものを作った。

ENDLESS DENIED

機能はふたつだけ、
http://apps.ikekou.jp/endless-denied/にアクセスする
・ひたすら順番に動画が流れダメと言われる
・ その際にURLが動画毎に変わる(http://apps.ikekou.jp/endless-denied/#29みたいな)
・お気に入りのダメがあったら即リロード、または番号つきのURL(http://apps.ikekou.jp/endless-denied/#29みたいな)でアクセスしなおすとそのダメだけひたすら流れる

まあ要はハッシュがついてたらそれだけループ、ついてなかったらシーケンシャルにループ、っていうだけなんだけど。
ということで広末涼子にお気に入りのダメをひたすら言われ続けることができます。
一部の人には嬉しい、かもしれない。
あと確かに 作ってる間1時間くらいずっとダメって言われ続けてこれは病むなと思った。あと広末かわいい。

2012.05.18 / Book

IMG_8046

岡崎京子の短編集、”End of the World”を読んだ。
うーん、どうだろ。
僕はおそらく最初に読んだ岡崎作品であるヘルタースケルター以上のものを求めて岡崎作品を読みあさっているんだと思う。
それ故に多少物足りなさはある。だけどそれをおいておけば充分に面白いし存分に彼女の世界観は楽しめると思う。

あ、「VAMPS」は好き。

2012.05.12 / Development

Google Readerの増えすぎた購読フィードを整理したい。がどれを解除していいか判断がつかない僕のために。

僕は今でもできるだけ毎日Google Readerに目を通しているのだけど、どうにも効率が低下している気がしていた。
基本的に登録はするが削除はしないのでそのせいかもしれない。

そこでふとGoogle ReaderのAPI(非公認)があったのを思い出して、使ってみたかったというのもあって、購読解除してもいいかもしれないフィードを見つけるコードを書いてみた。ついでにTwitter Bootstrapも使ってみたかったので使ってみた。

とはいっても、Google Readerの既読アイテム直近1000件(ほんとはもっと取得したかったのだけど1000件以上取得する方法がぱっとわからなかった)から単純に既読数とスター数の割合で、たくさん読んでるのにちっともスターがついてないフィードはもしかしていらないんじゃない?という風に並べているだけ。かっこいいアルゴリズムとかは現状ない。

Google Reader上に「トレンド」というやつがあってスター率が高いフィードなんかは見れるのだけどその逆は見れない。

ちなみに今やTwitterやFacebookでおなじみOAuthは実装されていないので昔ながらのID/Passwordを入力する方法しかなく、OAuthに慣れた人間からしたら怪しいことこの上ない。もし自分だったらあんまり入力したくない、、、がGoogleが実装していない以上しょうがない。
もちろん悪用する気はないし保存もしてないしセッションにすら入れてない(それはただやらんかっただけだけど)けどそこは信用してもらうしか術がない気がする。市井のサービスはそこってすごい壁だな。それかもしかしたらまだ案外気にせず入力してしまう人も多いのか。

使うとこんな感じ。
僕の場合Newsweekを読んでるけど全然ふぁぼってないから、賢い気分になる自己満足はやめて購読解除しちゃえば?ってことになる。キャプチャだとスターが0ばっかりだけどそれは見えてないだけでもうちょっと下に行くとほんとはある。

Google Never Reader

ちなみに削除ボタンを押すと購読解除して見た目上も削除するけど、データソースとして使っている既読アイテムの履歴からは削除されないからリロードするとまた舞い戻ってしまう仕様。一週間に一度とか都度いらなそうなフィードを削除して最適化していくといいかもしれない。
仕様はそのうちなんとかするかもしれない。

アプリはこちら。Neverの使い方が微妙に間違ってないか、とかは知らない。
Google Never Reader

iOSとAndroidで、メールに書いたURLから特定のアプリの特定のページを開きたい。
Facebookに関して必要があって調べた。Facebookページのイベント一覧を開きたかった。
それに関しては、結論としては無理だったんだけど。そもそもスマホ版のFacebookアプリ(ブラウザ版にもだけど)のFacebookページにイベント一覧がなかった。
以下メモ。

iPhoneAppのURLスキーム – 俺wiki – livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/h_yoshiaki/d/iPhoneApp%A4%CEURL%A5%B9%A5%AD%A1%BC%A5%E0
色々なアプリのURLスキーム一覧、詳細には書いてない

Facebook Pages Can Now Be Opened in Facebook’s iOS Apps Via fb://page URL Scheme Links
http://www.insidefacebook.com/2011/10/21/facebook-url-scheme-pages/

FacebookのiPhoneアプリケーションで使えるURL Schemeのまとめ – ふぃすたぶろぐ
http://d.hatena.ne.jp/penpen-0704/20110711/1310375357
日本語での概要

iPhone/AndroidでURLスキームを利用したアプリ起動[to-R]
http://blog.webcreativepark.net/2011/03/09-041450.html
“Androidにはインテントというすばらしい機能があるのですが、ブラウザからの操作はできなさそうです。”とある。
Androidでは同様のことは無理なのか、、、。

手持ちアプリのURLスキームを調べる方法 iExplorer – W&R : Jazzと読書の日々
http://d.hatena.ne.jp/wineroses/20111112
iExplorerで.plistを読む。

IPhone URL Schemes – akosma wiki
http://wiki.akosma.com/IPhone_URL_Schemes
詳しく載ってる。
はずだったんだけど、今開くと「This Account Has Been Suspended」てなってて見れない。コピペしておいてよかった。謎である。

Facebookに関してはこれだけあるらしい

fb://profile – Open Facebook app to the user’s profile
fb://friends – Open Facebook app to the friends list
fb://notifications – Open Facebook app to the notifications list (NOTE: there appears to be a bug with this URL. The Notifications page opens. However, it’s not possible to navigate to anywhere else in the Facebook app)
fb://feed – Open Facebook app to the News Feed
fb://events – Open Facebook app to the Events page
fb://requests – Open Facebook app to the Requests list
fb://notes- Open Facebook app to the Notes page
fb://albums – – Open Facebook app to Photo Albums list
This “works” but, then again, doesn’t:
fb://post/(post_id)
fb://album/%@
fb://album/(aid)
fb://album/(aid)/cover
fb://album/(initWithAID:)
fb://album/(initWithAID:)/cover
fb://album/new
fb://albums
fb://birthdays
fb://birthdays/(initWithMonth:)/(year:)
fb://birthdays/(month)/(year)
fb://chat/(fbid)
fb://chat/(initWithUID:)
fb://chat/(user.fbid)
fb://contactimporter
fb://contactimporter/invites
fb://contactimporter/legalese
fb://contactimporter/modal
fb://event/%@
fb://event/%llu
fb://event/(event.fbid)/members/(rsvpStatus)
fb://event/(fbid)
fb://event/(fbid)/members/attending
fb://event/(fbid)/members/declined
fb://event/(fbid)/members/not_replied
fb://event/(fbid)/members/unsure
fb://event/(fbid)/rsvp
fb://event/(initWithEventId:)
fb://event/(initWithEventId:)/members/(rsvpStatus:)
fb://event/(initWithEventId:)/rsvp
fb://events
fb://events/
fb://faceweb/(initWithURL:)
fb://facewebmodal/(initWithURL:)
fb://feed
fb://feed/%@
fb://feed/(filter.filterKey)
fb://feed/(initWithFilterKey:)
fb://feedfilters
fb://findfriends
fb://findfriends/legalese
fb://findfriends/modal
fb://friends
fb://friends/picker
fb://friends/sync
fb://friends/sync/(removeData:)
fb://friends/sync/disconnect
fb://friends/sync/legalese
fb://group/(fbid)/members
fb://group/(initWithGroupId:)/members
fb://groups
fb://launcher
fb://mailbox
fb://mailbox/(folder)
fb://mailbox/(initWithFolder:)
fb://mailbox/(initWithFolder:)/(tid:)
fb://mailbox/(mailbox.folder)/(tid)
fb://mailbox/compose
fb://mailbox/compose/(fbid)
fb://mailbox/compose/(initWithUID:)
fb://map
fb://messaging
fb://messaging/(folder)
fb://messaging/(initWithFolder:)
fb://messaging/(initWithFolder:)/(tid:)/participants
fb://messaging/(initWithFolder:)/thread?tid=(tid:)
fb://messaging/(mailbox.folder)/(urlEscapedTid)/participants
fb://messaging/(mailbox.folder)/thread?tid=(urlEscapedTid)
fb://messaging/compose
fb://messaging/compose/(fbid)
fb://messaging/compose/(initWithUID:)
fb://messaging/original_message?mid=(commentId)
fb://messaging/original_message?mid=(initWithMessageId:)
fb://nearby
fb://note/%@
fb://note/(initWithNoteId:)
fb://note/(initWithNoteId:)/edit
fb://note/(noteId)
fb://note/(noteId)/edit
fb://note/compose
fb://notes
fb://notifications
fb://online
fb://online#offline
fb://online#online
fb://pages
fb://photo/%@/0/%@
fb://photo/(album.user.fbid)/(album.aid)/(pid)
fb://photo/(album.user.fbid)/(album.aid)/(pid)/feedback
fb://photo/(fbid)/profilepic
fb://photo/(initWithProfilePicturesUID:)/profilepic
fb://photo/(initWithUID:)/(aid:)/(pid:)
fb://photo/(initWithUID:)/(aid:)/(pid:)/feedback
fb://photosapp
fb://place/%@
fb://place/(initWithPageId:)
fb://place/(targetId)
fb://place/addfriends
fb://place/addphoto
fb://place/create
fb://places
fb://places/%lld/%lld
fb://places/(initWithCheckinAtPlace:)/(byUser:)
fb://places/legalese/tagged/%lld/%lld
fb://places/legalese/tagged/(initWithTaggedAtPlace:)/(byUser:)
fb://post/%@
fb://post/%@_%@
fb://post/(initWithPostId:)
fb://post/(initWithPostId:)/tagged
fb://post/(postId)
fb://post/(postId)/tagged
fb://post/(postId)/untagSelf
fb://post/(untagSelfFromPostWithId:)/untagSelf
fb://profile
fb://profile/
fb://profile/%@
fb://profile/%lld
fb://profile/(addFan:)/addfan
fb://profile/(fbid)
fb://profile/(fbid)/addfan
fb://profile/(fbid)/addfriend
fb://profile/(fbid)/fanpages
fb://profile/(fbid)/fans
fb://profile/(fbid)/favorite
fb://profile/(fbid)/friends
fb://profile/(fbid)/info
fb://profile/(fbid)/menu
fb://profile/(fbid)/mutualfriends
fb://profile/(fbid)/photos
fb://profile/(fbid)/poke
fb://profile/(fbid)/removefriend
fb://profile/(fbid)/wall
fb://profile/(initWithFBID:)/menu
fb://profile/(initWithFansUID:)/fans
fb://profile/(initWithFriendsUID:)/friends
fb://profile/(initWithInfoUID:)/info
fb://profile/(initWithMutualFriendsUID:)/mutualfriends
fb://profile/(initWithPhotosUID:)/photos
fb://profile/(initWithUID:)
fb://profile/(initWithUID:)/addfriend
fb://profile/(initWithUID:)/fanpages
fb://profile/(initWithUID:)/poke
fb://profile/(initWithUID:)/removefriend
fb://profile/(initWithWallUID:)/wall
fb://profile/(toggleFavorite:)/favorite
fb://profile/(user.fbid)/fans
fb://profile/(user.fbid)/friends
fb://profile/(user.fbid)/mutualfriends
fb://profile/0
fb://publish
fb://publish/mailbox/(initWithFolder:)/(tid:)
fb://publish/mailbox/(mailbox.folder)/(tid)
fb://publish/photo/(album.user.fbid)/(album.aid)/(pid)
fb://publish/photo/(initWithUID:)/(aid:)/(pid:)
fb://publish/post/(initWithPostId:)
fb://publish/post/(postId)
fb://publish/profile/(fbid)
fb://publish/profile/(initWithUID:)
fb://publish/profile/(owner.fbid)
fb://requests
fb://root
fb://upload
fb://upload/%@/album/%lld/%@
fb://upload/%@/checkin/%lld
fb://upload/%@/profile/%lld
fb://upload/(initWithSource:)/album/(uid:)/(aid:)
fb://upload/(initWithSource:)/checkin/(checkinId:)
fb://upload/(initWithSource:)/profile/(uid:)
fb://upload/actions
fb://upload/actions/album/(initWithUID:)/(aid:)
fb://upload/actions/album/(user.fbid)/(aid)
fb://upload/actions/checkin/(checkinId)/
fb://upload/actions/checkin/(initWithCheckinId:)
fb://upload/actions/newalbum
fb://upload/actions/profile/(fbid)
fb://upload/actions/profile/(initWithUID:)
fb://upload/actions/resume
fb://upload/album/(showUploadMenuWithUID:)/(aid:)
fb://upload/album/(user.fbid)/(aid)
fb://upload/checkin/(checkinId)
fb://upload/checkin/(showUploadMenuWithCheckinID:)
fb://upload/discard
fb://upload/profile/(fbid)
fb://upload/profile/(owner.fbid)
fb://upload/profile/(showUploadMenuWithUID:)
fb://upload/resume
fb://userset
fb://video/%@
fb://video/(playVideoWithId:)
fb://video/(videoId)
fb://page/(fbid) will work to open to a specific page.
and fb://place/(fbid) will take you to a location page

pageに関してはfb://page/(fbid)のfbidは固有URLじゃだめで、数字のほうのちゃんとしたfbidじゃないとだめだった。

2012.05.10 / Development

音声関係のメモ。合成・出力・認識・入力とか。

入力

x-webkit-speech

音声入力ができる、HTML5の「x-webkit-speech」を試してみた | IDEA*IDEA
http://www.ideaxidea.com/archives/2011/03/x-webkit-speech.html

発音チェッカー
http://termat.sakura.ne.jp/javascript/20110327sample.html

音声入力APIを試してみた – おし、プログラミング
http://d.hatena.ne.jp/ichhi/20110428/1303986170

ファン猛のブログ – Chrome限定で多言語音声認識入力フォームを作ってみた。
http://fantakeshi.blog50.fc2.com/blog-entry-40.html
input要素にlang=”ja”を指定するとよい

Chromeはgoogleのサーバーに投げて認識するから精度いいんだけど、
逆に単語として解釈しようとして頑張ってしまって、叫びとか無意味な言葉をそのまま取りたい場合には向いてない。

Julius

Julius で音声認識させてみた – 凹みTips
http://d.hatena.ne.jp/hecomi/20120111/1326296629

C# で日本語合成音声・音声認識をやってみよう。 – お前の血は何色だ!! 4
http://d.hatena.ne.jp/rti7743/20111215/1323965483

CではJuliusってのがデファクトのよう
win版とlinux版ある

出力

Web音声配信システム:vds
http://www.vdsapi.ne.jp/
Web API。使いやすくてデモは簡単に作れる。だけど無料アカウントの登録は終了しちゃった。
個人的には昔とったアカウントがあるからデモはそれで作れる。

KATAKOTO – wonderfl build flash online
http://wonderfl.net/c/tfRL
自分で作ったやつだけど、google translateを利用してしゃべらせる。
音声認識には文字を分解するフェーズとしゃべらせるフェーズがあって、
分解にはYahoo形態素解析APIを使ってる。

AquesTalk – テキスト音声合成ミドルウェア
http://www.a-quest.com/products/aquestalk.html
日本語音声出力界ではデファクトな感じ。
個人が趣味で使うなら無料、でもライセンス取得の手続きは必要。
法人なら商用非商用問わず有料。諸々相談可。
AquesTalk2なら声が数種類から選べる。
Win,Mac,Linux,iOS,Android等OS大体対応してる。

2012.05.01 / Note

IMG_7924

ビッチ。

“ビッチ”とは要は”あばずれ”のことである。(語源とかネイティブでの話はおいといて日本における一般的使用法としてはね。)男に誘われたらそりゃもうほいほいと、ついていっちゃうわけである。個人的にはそれはそれでひとつのロマンではあるのでビッチ●ねとかは全然思わない。

ところで、僕は肉が好きだ。肉欲にまみれていると言っていい。
焼くのが好きだが、生も好きだ。
生レバーが禁止になりそうで、もしかしたらもう一生食べれなくなるかもしれないことには大変悲しんでいるがその話題は別の時に。

そこでふと思った。僕は”肉行こうぜ”と誘われるとそりゃもうほいほい行く。フットワークが軽い足軽どころか尻軽である。そのさまはさながらビッチであると。ということで僕は自分のその様子を

肉ビッチ

と呼ぶ事にした。そう、僕は肉ビッチであり、僕の知る焼肉大好きでいつも一緒にいってくれる方々も肉ビッチである。@ayacompoのようなセレブがもうすこしお上品に言うと”お肉ビッチ”となるようである。

あ、決して悪意はありません。なんとなく語呂がいいなと思っただけです。ただそんだけ。