2015年08月07日

世界最速でMithril本をリリースした話

DSC_5516

オライリー・ジャパンから、Mithrilの本を出しました。今まで本は何冊も出してきましたが、今回が初の単著です。O'reilly Authorの帽子もいただきました。出版にあたってはいろいろな方々にお世話になりました。ありがとうございました。もちろん、購入していただいた方、興味をもってシェアしていただいた方々もありがとうございます。

ちょっとお酒が入って酔っぱらっている状況ですが、本について紹介しようと思います。

Mithrilのどこに惹かれたのか?

この業界は常に新しいものがたくさんでてきます。本当にエポックメイキングなものもあれば、車輪の再発明的なものもあります。とはいえ、それらは0/1で区切ることはできなくて連続的なものですし、さらに複数の項目が関連しあっていたり絡まっていたりします。1つの新しいものを学ぶにも、関連する数多くのものを学ぶ必要があります。

当然、この世にあるすべてものを100%学ぶことは不可能で、取捨選択が必要です。ソースコードレベルまでMySQLとLinuxの挙動を理解しつつ、最先端のウェブのフレームワークを知っていて(存在だけではなくバッドノウハウも含め)、なおかつデプロイ周りも完璧にこなせて、ディープラーニングでElixirでビッグデータでGolangでAndroidとiOSのスキルもバッチリで・・・なんて人なんてそんなにいないでしょう。趣味時間をすべて削って何かを学んでも、「100点」にはなりません。せいぜい、1つや2つに分野をしぼって、仕事時間も使い、たまには趣味時間も使ってフォーカスしてようやく1つや2つ語れるようになる、といったところ。

ウェブのクライアントMVCも、さまざまなフレームワークが日々作られ更新されていっています。ダントツの一番人気はReactでしょう。npmで流れてくるパッケージ更新情報を斜め読んでいても、React関連のパッケージの存在感は圧倒的です。ウェブブラウザが主戦場で仕事している人、なおかつ馬力のある若い人は、Reactにチャレンジすべきかと思います。

一方Mithrilは「ウェブがメインの仕事ではないし、なるべく学習コストはかけたくないけど、たまにウェブの画面もつくらないといけないし、どうせなら新しいSPAにしてみたい」みたいな人にベストマッチするフレームワークかと思います。API数が10数個あるといっても、全部を使う必要はありません。よく使うのは半分程度です。そして外部依存がまったくないため、組み合わせ問題とかで苦労することもありません。ドキュメントもきちんと整備されています。どうも企業ベースで開発されたコンポーネントを切り出して公開しているんじゃないか、という風味で、リリースされたのは昨年ですが、だいぶ前から開発されてきたような雰囲気を感じます。安定志向でAPIがガンガン増えることもありません。

僕も、JavaScriptは4年ほど仕事でフルタイムでやってきたもののウェブが仕事の中心ではないし、家族もできて、プログラマの定年の年齢があと3ヶ月後に迫ってきている状況で、より取捨選択が必要だと感じています。どちらかというと多少コードは長くなってもシンプルなモノのほうが取っ付きやすいです。ウェブのMVCは型のあるaltJSと相性があまり良くないものが多く、何かいいものはないかとちょくちょく調べていたのですが、Mithrilはひと目見て(altJS関係なく)「あ、これいいんじゃないかな?」と直感で思いました。本書もそういう「がっつりフルタイムでウェブ技術を追いかける時間は取れないけど、今の仕事に取り入れるべく、なるべく新しく、ウリになりそうなもの(Mithrilは高速)を効率よく学んでおきたい」という人に一番手にとってもらいたいと思っています。

この本でこだわったところ

執筆ついでにMithrilのドキュメントの日本語訳も一通りやって、出版よりちょっと先に公開しました。ドキュメントも網羅的に書かれていて、これを読むだけでもアプリを作ることはできるでしょう。本書では、このドキュメントに書いてあることはもちろん過不足なくカバーしていますし、それにプラスして、実際に使ってみて思った知見、過去の全メーリングリストのログの中からピックアップしたドキュメントにない情報などを盛り込みました。オリジナルのドキュメントにはない、仮想DOMではカバーしきれないパフォーマンスのお話も編集の瀧澤さんから「興味深い」と感想をいただきました。

あとはサンプルコード類も特色を出そうと試行錯誤しました。基本クライアントMVCはTodoを作っておしまいというものが多いですし、本書も最初はTodoです。でもそれではつまらないのですよね?こんなものが入っています:

  1. 僕の中でウェブのプログラミングの最初の一歩は、Cマガジンで見た、結城浩さんのYukiWikiです。せっかくなのでMithrilでシングルページアプリケーションのWikiを作ってみました。最初のコードは400行超えていたのですが、ムダを削って200行以下に収めることができました。
  2. SIerの人だと、その言葉を聞くだけで白目をむくと言われる呪いのken-all.csvを「こんなに簡単に使えるよ!」というサンプルも入れてみました。
  3. 日本発で高機能(だけどコード量は少なくて済む)power-assertを使ったユニットテストも紹介しています。モデルだけではなく、ビューやサーバ通信のテストも入れました。
  4. ウェブMVCでクライアントの設計と実装が楽になるといっても、ビジュアルのCSSまで自分で作りこむのは大変なので、CSSフレームワークとしてBootstrapとの組み合わせについても紹介しました。
  5. 非同期なAjaxをもっと推し進めた同期型コミュニケーションが増えていくと思うので、socket.ioを使ったサンプルを入れました。本文にも書きましたが、既存のアプリも同期的にユーザがやりとりできるようにするだけで世界が変わる気がしています。

当初はビジュアルまわりはPolymerも紹介するつもりでした。0.5でChromeでバッチリ動いていて「これはとても良さそうだ」と思ったのですが、Shadow DOMがネイティブでサポートされていない環境では正しく動作しませんでした。1.0がGoogle I/Oで公開されてから、かれこれ2週間ほど試行錯誤してみたのですが、仮想DOMとの組み合わせはまだ時期尚早だと思い、(原稿も書き上がっていましたが)カットしました。今、Material Design Liteは試していますが、これはもしかしたらいけるかも?と思っています。本が売れたらしれっと章が増えるかもしれません。

この本で目指したところ

この本は世界最速を目指して書きました。Mithrilの本はまだ海外では出ていません(僕が知る限り)。本家O'reillyにもないですし、OSS系の本がやたら早いPackt Publishing、Apressあたりもまだ出していませんし、The Pragmatic Bookshelfにもありません。

僕も翻訳は過去何回かやってきました。翻訳は時間はかかりますし、たまに訳注をつけたりしつつ、わかりやすい言葉に置き換えていくという大変さはあります。本になるほど注目度の高いものを、日本の誰よりも先に詳しくなれるというメリットもあります。ですが、どうしても時間的に周回遅れになりがちです。

僕はサンフランシスコで2年ほど駐在をしてました。ソフトウェアの仕事をしている人で知らない人はいないシリコンバレー・ベイエリアですので、もちろんすごくスキルの高いすごい人はいます。ですが、日本にもどってきてみて、日本がそれほど技術で負けているという感じはしませんでした。でも、「あちらは給料が高いぞ」とか「いつかは海外で働きたい」みたいなことを言う人はたくさんいます。なんというか、スキルでは負けてないのに、気持ちの上で負けている(というと言い過ぎかもしれないけど適切な言葉が思い浮かばなかったので)なあ、と。海外から来る情報が良い情報で、それを集めてインプットして周回遅れでアウトプットする・・・というサイクルではいつまでたっても追いつくことも対等になることもできません。

まず第一歩は「地元を好きになる」ことです。「この分野では日本が一番」みたいなものを増やすのがてっとり早いです。例えば、高速文字列解析の世界の本で紹介されているFM-index。海外だと単語で区切った転置インデックス検索で困ることがなかったためにあまり注目する人はいませんでしたが、日本語は検索前に分かち書きが必要という特殊性にミートして日本では詳しい人が大勢いるという状況です。Mithrilは日本語のドキュメントも公開しましたし、最速で本も出ましたし、採用事例が海外よりも増えるという状況も不可能ではないと思います。僕が以前作ったSphinx-Users.jpも、世界で最初のユーザコミュニティだったりします。僕は関わってませんが、世界初のSphinxの電子書籍も出ています。僕個人にできることはそれほど多くはないですが、小さくてもいいので、世界一をたくさん作っていったり、世界一に関わっていきたいなぁ、と思ってます。

別に海外に転職するなとかそういう話ではなく、どうせ行くにしても「海外で働ければなんでもいいです」という姿勢ではなく「俺はこの分野では世界で一番詳しい人間だ」と上から目線で堂々と乗り込んでいく、そんな日本人が増えたらいいな、と思うわけですよ。最近見かけた中で一番すばらしいツイートは以下のツイートです。

日本はプロデュース力という意味ではあまり秀でているとはいえません。クールジャパンだってすでに文化輸出で大多数を占めるゲームは蚊帳の外で、果たしてかけたコスト分のリターンがどれほどあるのか?というと、プラスになると思っている人はあまりいないのでは?と思います。でも、プロデュースなんてしなくても、興味を持ってくれた人は日本語の壁を突破してきます。周回遅れで英語でがんばってアウトプットするぐらいなら、世界初を日本語だけで発信していく方が価値が高いと思います。世界初が日本に増えれば、当然それは世界を周回遅れにしているということです。数学ガールの英語版がアメリカの本屋に並んでいるのを見るのはやっぱり誇らしいですし「これ俺ずっと前に読んだもんね」という優越感あります。

あ、もちろん、分野によりますよ。自動車とか電子機器類みたいに、ロジスティックの整備にとてつもなく時間がかかるようなものは最初から世界で戦っていく気概がないと勝ち目がないと思います。ソフトウェアはまだ個人の力量でなんとかできる範囲が広いですからね。

posted by @shibukawa at 02:38 | TrackBack(0) | 日記 はてなブックマーク - 世界最速でMithril本をリリースした話
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/160479412
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索ボックス

Twitter

www.flickr.com
This is a Flickr badge showing public photos and videos from shibukawa.yoshiki. Make your own badge here.
<< 2016年09月 >>
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
最近の記事
カテゴリ
過去ログ
Powered by さくらのブログ