2013-09-15(日) [長年日記]
■ HTTPでHashやArrayを送る手法に仕様は存在しない……の?
jQueryでこんなふうに書くと:
$.post('/', { hash: { foo: 'hoge', bar: 'fuga'}, array: ['baz', 'piyo'] });
サーバ側でこんなふうに受け取れて(これはSinatra):
post '/' do params.each do |key, val| puts "#{key}: #{val} as #{val.class}" end end
ちゃんとHashやArrayとしてアクセスできる:
hash: {"foo"=>"hoge", "bar"=>"fuga"} as Hash array: ["baz", "piyo"] as Array
ああこりゃ便利だね、で済ましてもいいんだけど、HTTP POSTの中身なんてただのバイト列なんだから型の情報なんて入ってるわけがない。その仕掛けはブラウザの開発者ツールあたりでどんなふうにエンコードされているのか覗いてみればすぐにわかって、上記のコードだとこんな感じになっているんだとわかる:
hash[foo]=hoge&hash[bar]=fuga&array[]=baz&array[]=piyo
最近プリミティブな(フレームワークを使っていない)PHPのコードを読む機会が多いんだけど、PHPerはこのテクをナチュラルに使っているようなのでPHP由来のプロトコルなのかなーと思うんだけど、さっきのコードはjQueryとSinatraだ。もちろんRailsでも使える。言語間をまたがって使える以上、なんらかの共通仕様があるのだろうと考えて調べてみたり、TwitterやFacebookで聞いてみたけど「これ!」っていうのがないような。
- web applications - What RFC defines arrays transmitted over HTTP? - Stack Overflow
- Uniform Resource Identifier (URI): Generic Syntax [RFC3986]
- php - Form input field names containing square brackets like field[index] - Stack Overflow
- square brackets in form names violate HTML specs? - PHP Development
少なくともRFCにはなってないようだ。キーと値を「=」でつないで、それらを「&」や「;」で並べる形式もURIの仕様にあるだけでその他の場面で使うのもわりと慣習っぽい? 「だいたいこんな感じ」で実装されてんのかなー。ご存知のかた、「これを押さえておけばOK」みたいな文書があれば教えていただきたく m(__)m
2013-09-14(土) [長年日記]
■ イプシロンロケット打ち上げ成功
0.07秒のずれのおかげでいったん中止になっていたイプシロンロケットの試験機打ち上げ、今日が再チャレンジだというのでTwitterの宇宙クラスタが朝から騒がしい。こっちもニコ生公式の中継を開いてスタンバイ。土曜日にやってくれるとは、最近のJAXAは本当にサービス精神が旺盛で良い良い。
で、肝心の打ち上げの瞬間はちょっと出かけていて見逃してしまったのだけど(おい)、順調に飛行してほぼ予定通りの軌道で衛星を分離、無事に成功となった。新型のロケットを事実上一発で成功させるんだからたいしたものだよなぁ。めでたい!
それにしても、じわーっと上がる液体ロケットに比べて、固体ロケットは速くていいね。ニコ生のカメラも追尾できてなかったしな(これは想定通りだけど[笑])。マニアな人たちがやってた別の生中継ではちゃんとフレームに収めていたようで、さすがである。「お家芸」という意味だけでなく、ロケットの推進方法にバリエーションが残せたという意味でもすばらしい。多様性は善。
2013-09-11(水) [長年日記]
■ 富田倫生が残した「本の自由」
仕事でアクセシビリティとの関係はなくなってからもアクセシビリティキャンプ東京のスタッフを続けていたりしているのだけど、同様にAccSellのポッドキャストも毎回聴いてたりする。先日公開された第27回後編:「おかんはDropboxとかEvernoteとか分からない」が面白くてですね、これが。
梅本暖さんをゲストに迎えて、青空文庫にある文章を読み上げる「音声文庫」というアプリの開発秘話をインタビューするという趣旨なんだけど、梅本さんの「聞きたい欲」がちょっとおかしいレベルなわけ。なにせ、自炊した本をわざわざ自分で買ったOCRにかけてからMP3に変換してまで音声化していたという。そこから(自炊する必要のない)青空文庫にたどりついてアプリ開発に至るまでに、その道程になるような音声関係のアプリがいくつもあって、どれもいわゆるアクセシビリティについてはぜんぜん意識せずにやっていたと。
で、そういう面白話はもちろんだけど、こういうアプリがスムーズに作れる「自由」があったということ、それこそが青空文庫の最大の価値なんだよなぁと思ったのだった。
8月11日に富田倫生さんが亡くなったという報を聞いて、最初に思ったのが「TPP交渉で著作権が70年まで伸びたら青空文庫はおしまいというこの時期になんで!」ということだったのだけど、富田さんはもう十分に大きな仕事をされたのだから、あとは残ったわれわれが引き継がないといけないのだよなぁ。とりあえずは寄付かなと思ったものの、なんかすっきりしなくてまだしてない。
というのもまぁ、この活動を仕切ってるっぽいのがボイジャーだからなのだけど。上で述べたように、青空文庫の価値はその「自由」さにある。そりゃパブリック・ドメインなんだから当然だけど、公開されているデータが自由に加工が可能なテキストだからこそ音声データに変換できたし、その他さまざまな研究の素材にもできる。紙に印刷されていた頃の本にはできなかったことができる。「本の未来」って、こういうことだと思う。
そう考えると、ボイジャーがやってるBinBってのはまったく自由じゃない(5つの自由があるなんて書いてるけど、こんなの自由でもなんでもない)。好きなフォントで読むこともできない、コピペすら満足にできないような「自由でない本」を扱う電子書店が、青空文庫や本の未来を扱う? そりゃないだろうセニョール。
富田倫生追悼イベントを富田倫生とゆかりの深いボイジャーが仕切るのはなんの不満もないけど、本の未来までは語って欲しくないんだな、おれは。青空文庫の収入は毎年下降してるっぽいので、それが増えるに越したことはないんだよねぇ。まずはこの基金がへんな色を付けずに運用されるかどうかを見守るのかなぁ。なんとも消極的態度だけど。