9月19日は、オープンソースの祭典 OSC広島、20日は中国地方最大のデータベース勉強会 中国DB勉強会in広島 に参加しました。

昔よりは情報を得る地域格差が縮まっているとは思いますが、議論の場となれば話は別で、やはり地方において、最新の情報について話を聞いたり相談できる場は限られています。そうした溝を少しでも埋めてくれているのが、こうした勉強会で、主催・運営して下さる皆さんには本当に感謝しています。

オープンソースは、高価な製品の代替品ではなく、企業活動の中心的役割を担うに至っています。一方で栄枯盛衰が激しく、選択を間違えるとメンテナンスで大変な思いをしますので、こういう場で情報を集めるだけでなく、いざとなったときに相談できる人脈を作っておくことがとても大事です。いつかここで登壇できるようになりたいものですね。

これだけのイベントですので、それなりのコストがかかります。この2つの勉強会は、そのコストを参加費以外で調達しているため、ある程度の参加者数実績を上げないといけないという苦労があるようです。それには告知が大切なのですが、広島の(広島だけ、という意味ではないです)参加者は、この勉強会の大切さが分かっているので、告知もできる範囲でやりますし、ドタキャン率も低いとか。参加者も、主催者の負担を軽くすることを意識して、こうした活動を継続していけるような文化を創らなければなりません。

そういう意味では、今、ちょうど勉強会ブームが過ぎ、最初に企画した人から、次の世代への運営の世代交代の時期にあるようです。コミュニティに関して意識の高い方は、主催者や運営陣の負荷分散など、地方での勉強会イベントのノウハウ自体をパッケージング(テンプレート化)されていて、長期的な開催を意識した運営をされているようです。この勉強会が長く続けられるように、我々参加者も意識を高く保たないといけませんね。

以下、戦利品です。

OpenSSH実践入門

くじ引きで当たりました。これはかなりの大当たりだと思います。毎日使う重要なインフラなので、一度きちんと読んでおきたいです。

 

たまゆらのお酒

去年に続いて、じゃんけん大会で初回勝利。2年連続たまゆらのお酒を頂きました。これも大当たりだと思います。


AngularJSアプリケーションプログラミング技術評論社さんより出版されている「AngularJS アプリケーションプログラミング」を、WINGSプロジェクトさんの書籍レビュアーに応募し、献本頂きましたので、レビューいたします。私はWebシステム開発の専門家ではないので、間違いがあればご指摘頂ければ助かります。

最近のリッチなWebサイトは、もれなく何らかのフレームワークを用いて作られています。言語とフレームワークが一体となっているJavaとは違い、perlやphpなどの柔軟なスクリプト言語においては、その柔軟さ故に大規模なシステムを一貫したルールに則って開発していくのには不向きでした。そのうち、サーバ側の処理能力も高くなってLAMP(perからphp)が台頭してきたこともあり、コンテンツを一貫した見栄えで供給できるCMS(XoopsやWordpress等)が登場し、より複雑なコンテンツを体系定期に設計・実装していくためのフレームワーク(CakePHPやFuelPHP等)が登場しました。

このAngularJSは、こうした大規模システムを構築するためのフレームワークの一つです。ただし、これまでのフレームワークと違い、クライアント、つまりブラウザ上で動作するJavaScriptのフレームワークです。JavaScriptは、多くのブラウザ上で動く唯一の言語ですが、私から見るとかなり癖の強い言語で、ある意味柔軟ではありますが、とても大規模なシステムを構築するには向いているとは言えません。ですから、登場からかなり長い期間、JavaScriptは不遇の時代を過ごしましたし、2010年代になって脚光を浴びた際も、jQueryのような、ピンポイントの利用に限られていました。

ところが、その後スマートフォンの普及によって、クライアントサイドで動くアプリケーションでも、複雑で洗練された処理が求められるようになってきました。当然、Webシステムに対してもその価値観が及びはじめ、とても生産性が高いとは言えないJavaScriptで、大規模で系統だったシステム開発への要求が高まってきました。

こういったなかで登場したのが、このAngularJSです。(大きく分類すれば)サーバサイドのフレームワークに広く使われているMVC型のフレームワークをJavaScriptに導入したもので、多くの処理をクライアント側でやってしまおうという、大胆な試みです。このあたりの基礎的な背景も1章で触れられています。類似のフレームワークの中ではやや後発ですが、シリコンバレーでは確実に本命視されているフレームワークです。特にAngularJSはフルスタック(必要な全ての機能を体系的に提供する)フレームワークですので、サンプルコードの中には、非力なマシンだと若干重い事もありました。幸い、プロセッサの処理速度や、ブラウザの実行エンジンの高速化、データ回線の高速化は日進月歩で進んでおり、かなり高度でリッチなシステムも、クライアント側で処理出来るようになっていくと思われます。むしろ、旧来のように、入力を反映させるために「送信」ボタンを押し、POSTをサーバでの処理を経て結果が返ってくるほうが、利用者にとって不便を感じる時代になってきています。また、ブラウザの開発者ツールも充実してきたので、場合によってはクライアントサイドで構築する方がデバッグがやりやすい時代に入ってきています。

AngularJSは、包括的なフレームワークで、jQueryやjQueryUIのような機能なども含めて、アプリケーションに必要なフレームワーク一式を提供します。そのため、その機能は多岐に及んでおり、この本もかなりの分量になっています。正直に言うと、最初の方で簡単なフォームを操作するだけで、なぜこんなに面倒な事をしなければならないのか、jQueryならもっと簡単に、直感的に書けるじゃないか、と思ってしまいました。しかし、それはAngularJSの表面しか見えてなかったからでした。「JavaScriptできちんとしたモダンなプログラミングモデル(例えばMVCモデル)を採用して大きなシステムを構築する」という、素人目には無理難題に挑戦しているのがAngularJSなので、コーディングルールが多いです。本書も見た目の分量は多い(本文で497ページ)ですが、それを一つずつ過不足がなく、無駄なく分かりやすい説明が成されているのが本書でした。これを一冊読めば、かなり高度なサイトも構築できるようになる基礎を身につけられるようにできています。

一方で、JavaScriptは癖が強く、あまり馴染みの無い特徴を多く持っています。jQueryの時代は、そこまで高度な設計はプラグインの作者に任せておいて、利用者はワンラインのおまじないを書いて目的を達することもできました。ですが、AngularJSを使うほどのシステムになると、JavaScriptの細かな動作仕様について知っておかなければ、なぜこういう動作をするのか、なぜこういう「迂回路」のような書き方をしなければならないのか、理解できない部分が多くありました。また、JavaScriptによる制約なのか、AngularJSの設計思想による制限なのかも分からない箇所もありました。もちろん、これは私の勉強不足が原因ですし、そこから説明してたらとても紙面が足りません。言うなれば、本書を読むための「JavaScript入門」がもう一冊あっても良いレベルだと感じました。もちろんJavaScriptの入門書やリファレンスは沢山ありますが、AngularJSの思想は、JavaScriptそのものの思想とはかなり違っていて、むしろそこを埋めるためのフレームワークであると思いますので、本書を理解するための入門書から読みたいと感じました。

本書は「コピペでHello Worldがつくれるよ」という表面上の話だけでなく、フレームワークの構造から、暗黙で動いてるコネクタの仕組みまで詳しく説明している専門書であると言うことです。テーマごとに整理されているので、最初のうちはリファレンスとしても使えるでしょう。本質的な部分を「ここはこういうものです」と誤魔化さずきちんと説明してあるので、フレームワークの裏の挙動をきちんと理解したい、そう思わせる技術書です。

また、後半では、今や必須とも言える「テスト駆動型開発」に必要なユニットテストの自動化や、多くのプラグインによるリッチなUIの実装まで紹介されております。このあたりまで読んでいくと「jQueryでやれば良いじゃん」とは思わなくなってきます。また、本書は入門書から実践書の範囲をしっかりカバーしており、その思想や動作原理を誤魔化すことなくきちんと説明しています。きちんと説明されたら、きちんと理解したい、と思ってしまうのは当然で、それだけ作り込まれた内容であると言えます。JavaScript中級者が、本格的なシステムを構築する際の最初の書籍としてとても良い本です。

同じJavaScriptをベースにしたサーバサイドのnode.jsの開発の勢いは衰えることなく、ECMAScript6 も制定されました。こうしている間にも、AngularJS2 がアルファ版をリリースしていますし、JavaScriptの欠点を補うため、TypeScriptを採用しています。WebSocketのような、粒度の小さい逐次通信技術も発展していますし、AngularJS2とTypeScriptは、今後の大規模Webサイトの本命になるかも知れません。ですが、これはもう少し先の話になりそうですので、ここでAngularJSの基礎を押さえておいて、来たるべき事態に備えておくのは悪くないと思います。

AngularJS2では、双方向バインディングの見直しや、より厳密なモデル化の進化など、より洗練されたフレームワークになりそうですので、AngularJS2が登場した際には、本書のAngularJS2対応版がいち早く読みたいです。また、このレビューの中でやたらjQueryと比較してしまいましたが、本書を読めば分かる様に、本来の目的が全く違います。jQueryと合わせてAngularJSを使う事もできます。カバーする範囲が全く違うのです。また、最近流行のスマートフォンアプリなども、ManifstJS等と合わせて構築できそうな気がします。
AngularJSアプリケーションプログラミング

  • 難易度 : 中級
  • 取っつきやすさ : ★★★
  • 内容充実度 : ★★★★★
  • 読みやすさ : ★★★★
  • 最新テクノロジ : ★★★★★

Web Touch Meeting #78 として、node.js ハンズオンの開催に協力させて貰いました。

東京から、日本のインターネットの中枢を担う、株式会社インターネットイニシアティブの 岩永義弘 さんをお迎えし、たっぷり3時間、座学とハンズオンを行いました。岩永さんと言えば、@ITでの連載もされており、日本の次世代通信技術の最先端におられる方です。地方でのハンズオン開催は初めてとのことで、その初回に広島を選んで頂き、ありがとうございました。wtm78とはいえ、3時間で実装まで行うには厳しく、消化不良で終わらせてしまったので、参加頂いた方には申し訳なく思っています。私が node.js に出会った頃は、日本語で最初の書籍が出版された頃で、まだ大規模案件に使うような段階ではありませんでした。(書籍で紹介されていた node のバージョンも出版時には古くなっているぐらい) ですから、ハンズオンでも、もっとコンパクトでアドホックなお題を想定していました。この点私も勉強不足でした。

また、Windows 環境においては、ターミナルやファイルコピー、エディタなどの基本機能が整っていないため、そういったツールを予め用意して、日頃不慣れな方にむけて、1時間早めに「準備会」を開いておくべきだったと思います。これも次回に活かしたいと思います。

JavaScript ができる人なら、手持ちの技術をネットに繋げてみんなでお互いに操作してみるような事がしたかったのです。WebSocket などでサーバと多数のクライアント(スマートフォンも含む)を結び、片方から emit したメッセージを、他方が on で受け取ったり、それをまた全員にブロードキャストしたりという事が簡単にできるのです。その部分で遊んでもらえるところまでは行きませんでしたが、それ以上に、最新の node.js の事情や、大規模な案件に耐えられる基本設計の指針など、私自身、大変勉強になりました。

私はしばしば上京してこういう勉強会に参加しているのですが、その旅費を使って逆に講師を呼んで、広島で皆に参加して貰ったら面白いのではないか、という発想が元で、このような会を共催させて頂きました。今後も、いろんな企業が、自社の都合で開く勉強会を、少しだけオープンにして、(社外の参加者にはハードルは高くても)最新知識の共有ができたら面白いかな、と思っています。

今回は、参加頂いた方のレベルの高さと、100回を優に超える勉強会を主催されている藤本さんの助けにより、なんとかぎりぎり勉強会としての体はなり立ったのではないかと思います(という事にさせて下さい)。なにより、私にとってこうした機会を与えて下さった皆様に感謝します。

正直に言うと、広島では、node.js を用いた仕事の案件というのはなかなかないと思います。仕事とは別に、こうした面白そうな技術を使って色々遊んでいきたいと思っていますので、一緒に遊んで下さるという方は、ご連絡下さい。また、次回このような機会がありましたら、またよろしくお願いいたします。

Posted in Web

LINEの自作スタンプ、上位は3カ月で1000万円以上の収入という記事がありました。

クリエイター自作スタンプの販売総額は12億3000万円とのことで、LINE社としては元が取れたのかなと思います。システムへの投資や、権利審査という手間のかかるコストを先に払った分、5割という寺銭は大きいですよね。単純に6億円ですから。

一方で、クリエイターの方は、登録料こそ無料ですが、実際にはスタンプの作成費用として、5~50万円分ぐらいの人件費や制作費を払っての参加です。仮に最低の5万円としても、元が取れた(10万円分以上売れた)人は15%程度です。もちろんこれからも売上は上がるわけですが、スタンプ数も某大になってくるので、あまり大きな期待は出来ないと思います。一方で、100万円以上売り上げた人が3.2%居ます。一部は人気のコンテンツを持っている人でしょうが、オリジナルでこの3%に入った人は「成功」を勝ち取ったと言えます。

この統計に入っているスタンプ数ははっきりとわかりませんが、おそらく5,000ぐらいだと思います。登録数が3万とのことなので、1/6が審査を通過していることになります。思ったよりも審査速度が上がっていますね。最近は単色落書き系のスタンプも審査を通過しており、受付開始当初の「3色以上ないものは却下される」といった噂はなんだったのか、と思います。

さて、5千のスタンプの作成に費やされたコストは、1つ5万円としても、2億5千万円です。これは少なく見積もった数字ですし、簡単のため3億円にしましょう。販売額が12億円ですが、これからの売上も収益になるので、だいたい販売総額は2~3倍ぐらいになりそうです。2倍としても24億円。手数料云々が5割以上販売元に納められ、概ね12億円がクリエイターに配分されます。つまり、投資回収の期待値は「4」という、宝くじもびっくりの還元率だったことがわかりました。何でも良いので初日に登録した人は勝ち組に入れたのではないでしょうか。

一方で、現在登録されているスタンプは3万セット。という事は、費やされたコストは15億円以上です。今後も販売総額はそれほど変わらないとすれば、期待できる配分総額は12億円程度なので、今登録している人の期待値は、ほぼ「1」で、今がちょうど、期待値的には損益分岐点にあることが読み取れます。LINEのユーザ母集団が伸びると信じるならば、まだ参入する価値はありますが、逆に制作に10万円以上かかるなら、それなりに勝ち残る見込が必要です。

今後は、新規のスタンプがリリースされるペースが、LINEの実行ユーザ数の増加よりもずっと早いので、1セットあたりの平均売上額はどんどん下がっていくと考えるのが自然です。LINEとしても、審査に必要なコストはそれほど下がらないと思われるので、この市場システム自体がいつまで持続可能なのかはちょっと不安材料だと思います。一度審査したスタンプは、LINE側としてもコストをかけて審査して商品にした資産なので、既存スタンプの販売が止まることはないでしょう。ある種の焼き直しが行われる可能性すらあると思います。新規参入の壁は高くなるかもしれませんが、かといって既存スタンプとの重複を審査するとさらに審査コストが高くなるので、なにかわかりやすい形で参入のハードルが上がる可能性はあると思います。


LINEスタンプ「Bob」の多カ国語翻訳が有効になりました。といっても、スタンプ中に文字はほとんどないので、説明文の翻訳だけですが、それでも、母国語で説明が出るのは、非英語話者としては嬉しいですよね。
私の環境では試せないのですが、台湾・中国・韓国・タイ・インドネシアの方には、母国語で説明が出るはずです。
facebookを中心に、翻訳にご協力下さった方に改めてお礼申し上げます。

大人気 LINE スタンプ Bob のお求めはこちらから
https://store.line.me/stickershop/product/1000943/