月別: 2016年1月

田中哲『APIデザインケーススタディ』面白くはあるのだが……

田中哲『APIデザインケーススタディ』を読んだ。

まず、書かれている内容は面白い話ばかりだった。ぼくは著者のファンなのでという贔屓目はあるかもしれないが。だが、本としてはどうだろうか……?と思った。

本のなかみとしては、プログラミング言語RubyにおけるさまざまなライブラリのAPIを実際に設計した著者が、どのような経緯の末にこのような設計になっているかを解説している。

この本のウリは、その内容の詳細さと丁寧さにあると思う。こういうクラスにこういうAPIが用意されている、それはなぜかというと……といった話がほぼすべてなのだが、世の中というのはそうそう簡単にいくわけではない。他のプログラミング言語ではどのように振る舞うのか、挙動はわかりやすいのか、Rubyでとくに発生するほかの問題とはどうすり合わせるのか……。二律背反する状況では、実際にどのように使われることが多いかも加味して決めなければならない。ときには複雑かつ歴史的な事情を知る必要もある。

こうした複雑な事情が手際よく説明され、そうした個別の場面でどのような指針をたてて先に進んだのか、ということが提示されているのがこの本の価値だ。ここが面白いというのは確かだし、複雑な事情は普遍的なもので、Rubyというプログラミング言語と切り離しても技術エッセイとして面白く読める。

が……あまりにもケーススタディの列挙でしかないところが本書のつらいところでもある。

著者もこの点は認識しており、じっさいにあとがきでも指摘している。プログラミング言語やAPIに冠する良いデザインというものに対する適切な指標というものを人類はまだ手にしていない。だからこそ、さまざまな試行錯誤の結果をケーススタディとして提示することに意味がある。また、一般論や原則のようなものをあまり強く打ち出さずにケーススタディで踏みとどまっているのは、著者の誠実さのあらわれでもある。

がしかし、と思ってしまう。

たとえば本の構成。この本はIO、ソケット、時刻、といった機能ごとに章立てがされている。これを「わかりやすい名前をつける」「隠れたモードを持たない」といった、課題となっているものごとにシャッフルしたほうが、あるいは良かったのかもしれない。そうすることで、読者には良いデザインへの指針がおぼろげながら提示されるような空気が醸成できたのかもしれない。

まあ読みづらくなるだけかもしれないし、なんとも言えないのだけれど。

芝村裕吏『セルフ・クラフト・ワールド1』

612ir9pr6kl-_sl250_芝村裕吏『セルフ・クラフト・ワールド1

これは面白かった!

オンラインゲームのゲーム内世界が舞台。このゲームではモンスターに人工生命的なアプローチが組み込まれており、いつしか人間の想像を超えた独自の進化を遂げた生態系を構成している。この生態系を学術目的で調査しているところに陰謀が……というのが主なあらすじ。

ユニークで良いなと思うのは、視点人物にゲーム内のNPCである村人の娘としているところ。主人公は調査のために訪問した男 GENZ とたまたま遭遇し、その調査と謀略に巻き込まれてしまうという設定になっている。そのため視点人物は外の世界のことはまったくわかっていなくて、すべてをゲーム内の事象との対比によって理解しようとすることになるし、ゲーム外のことがいっさい語られないことによってディティールを省きつつ手際よく世界観が提示できている。

非常によく書けていてよいと思うし、ありそうだが意外となかった設定、オチのそれかという感じ、なによりゲーム畑である著者らしさがいい具合に出ているところなど、とてもよいと思う。 GENZ のかなりネトゲ廃人らしいところなど、そういう方面への目配せも効いていて面白い(し著者らしいところ)。この著者のハヤカワでの著作では一番だろうな。

三部作シリーズらしいので続編も楽しみ。

プロフィール画像を変えるために

年末年始で東京に帰省していたわけだが、そのあいだにふくろうカフェというところに寄った。そういうものがあるらしい、と事前に友達と話題にしていて、行けたら行こうと思っていたがミッション達成である。

でまあそういうところではフクロウを乗せてくれたりして、その写真というのも撮らさせてくれるので、そのなかから適当に見繕ってプロフィール画像を更新することにした。

プロフィールの画像の更新、と一言でいうが、あちこちでいろんなサービスを使っているとそれぞれ変えないといけなくて案外面倒なもんだ。主要なサービスは自分で変えればいいんだけど、まあヌケもあるだろうな、と思う。なんかこういうのもっと楽にならないものだろうか。

ほかのソーシャルサービスから引っ張ってくる系

アカウント設定時にほかのソーシャルサービスからプロフィール画像を取ってくるサービスがある。たとえばMeetupとか、Mediumとか。Feedlyもそうだな。ただ、たいていこういうサービスは画像をインポートして手元のサービスに使うようにしているため、元となるサービス(FacebookとかTwitterとかGoogleとか)で更新しても変わってくれないパターンが多い。

多い、といいつつFeedlyは自動的に更新されている。えらい。ただ、Googleのプロフィール画像URLをそのまま使っているようなので、Googleがえらくて画像URLが固定なのか、Feedlyがえらくて更新検出しているのかはよくわからない。

Meetupは更新してくれないが、プロフィール設定であらためて「Facebookのアイコンを使う」などのボタンを押すと再インポートしてくれるのでお手軽。

Mediumは再インポートができないようなので、更新後は自分でアップロードしないといけない。こういうパターンがいちばんめんどうだなと思う。アカウント作成時にインポートできるなら再インポートもさせてくれよ……。

統合プロフィールサービスの夢

そんなこんなでどっか一箇所だけ変えると勝手にプロパゲートしてくれると嬉しいな、と思う。誰しも思うことであろう。が、こういうのはなんというか、サービスがそういうサービスとうまく連携してくれないと普及しないし、他サービスとの連携がないものは普及しない、といった鶏卵問題が発生するし、むずかしいところ。

standards
https://xkcd.com/927/

この画像に似たような問題もある。似たようなサービスが増えて嬉しかったためしがない。

とはいえそういうサービスもすでにあり、Gravatarは、たぶんそのような事情を念頭に置いて作られているサービスであろう、と思う。姓名とプロフィール画像、サイトリンク程度の簡単な情報だけを持っている。APIは極めて簡素で、メールアドレスのハッシュからプロフィール画像のURLが決まるので、そのURLを埋め込めばいい。かんたんだ。

かんたんだが……やっぱりたいして普及していない気がする。むかしgithubがGravatar使っていたきがしたのだけど、いつのまにかプロフィール画像をアップロードできるようになったとともにGravatar連携がなくなってしまったような。残してくれると嬉しかったのだけど。

Slack方式

Gravatar連携といえば、チャットサービスのSlackはちょっと面白い手法を取っていて感心した。Slackでもプロフィール画像の設定は可能になっている、なっているのだが、何も設定しないときはGravatarにフォールバックするようになっている(Gravatarもない時はデフォルトアイコンにフォールバックするのだと思う)。

したがってアイコン画像を削除しておくと、Gravatarの画像が常に参照されて勝手に更新されていくことになる。これはなかなか便利だし、正しいやり方なように思う。ただ「削除」というのはちょっとわかりづらいかな……。似たような方式を採用しているサイトはほかにないだろうか。

小川一水『砂星からの訪問者』

51tqudldobl-_sl250_小川一水『砂星からの訪問者

こっこれは……竹本泉?

朝日ソノラマからのSF『臨機巧緻のディープブルー』の続編。外宇宙に進出するようになった人類が異星人たちの観察と交渉のために作った「ダーウィン機関」なる組織がある、という設定で、ダーウィン機関のとある艦隊に帯同するカメラマンを主人公に、様々な異星人との遭遇や交渉を描くシリーズ。

前作は単体として楽しめば良い本だったけど、今回は続編ということで前回の結末から話を繋げつつシリーズ全体としての主人公の目的が提示されるくだりがあるので、前作は読んだ方が良いかんじになっている。

で、その序盤を終えると、今回のストーリーの主軸となる異星人「フィーリアン」との遭遇となるわけだけど、この設定はなんというか、唸らされた。端的に言えば既視感を覚える設定ではあって、読みながら「アレかな」とか「ああそういうやつか」と大まかな部分は推定できるんだけど、細かい部分はけっこうなひねりが加えられている。

このひねり方は小川一水の独特の境地であって、これが面白い。こういう設定のSFは過去にあったけれども、こういう設定からこういう設定までを引き出した作家は他にいなかったのではないか。最後まで読むとちょっとそれはないんじゃないか……という感想も個人的には出てくるけれども、それも含めて味だと思う。