2014年8月23日、東京お台場・日本科学未来館および東京カルチャーカルチャーにて、Lightweight Languageの総合カンファレンス、「 LL Diver」が開催されました。
今回、9年ぶりとなるは昼と夜の二部構成での開催。昼の部は日本科学未来館内の三会場での発表、夜の部は東京カルチャーカルチャーでのトークイベントとなりました。12年目の今年も活気にあふれた同イベントの模様をレポートします。なお本レポートはイベントのうち一部を時間順に紹介するものです。
昼の部
開会宣言@未来館ホール
LL Diverのイベント名にふさわしい、美しい水族館映像で始まったオープニング。LLイベントといえばこの人、日本UNIXユーザ会法林浩之氏の開会宣言で今日1日にわたるイベントが始まりました。
日本UNIXユーザ会法林浩之氏の開会宣言でスタート
プレゼンテーション@イノベーションホール
イノベーションホールではプレゼンテーションが各種行われました。
Angular.jsで構築したnoteに関して
発表の口火を切ったのは、noteやcakesなどのサービスで知られる株式会社ピースオブケイクの高丸翔英氏(@takamario ) 。自社サービス、そこに導入したAngular.jsについて発表が行われました。
プレゼンテーションへの注目度は非常に高く、イノベーションホールは超満員。至急増席対応がなされたほど。SPA(Single Page Application)のUIの魅力、API層を結局作ること、そしてなにより使ってみたかったという理由から導入したAngular.js。他フレームワークとの比較、実際にAngular.jsを導入したことによる2way data binding(双方向データバインディング)やdirectiveなどの「便利さ」への気づき、SEO対策やパフォーマンスなどの気になる実運用での課題についてなどAngular.jsの導入から運用までを知ることのできるプレゼンテーションでした。
それでもNode.jsをやる
近年、次世代言語の登場で立ち位置が曖昧になりつつあるNode.js。Node.jsをオワコンとする意見も見られます。そんな状況に対し、Node.js日本ユーザーグループ代表の古川陽介氏(@yosuke_furukawa )が、今再びNode.jsの位置付けを明らかにすべく、発表を行いました。
満席の会場からも、Angular.jsの現在の注目度の高さがうかがえた
c10k問題という課題とそれが現実のものとなりうる現代のWeb、そこにはイベントループモデルや非同期ioの必要性が生じます。その課題から、高速な非同期ioを可能とするlibuv、非同期ioを強制可能なJavaScript、そのJavaScriptを高速に処理するV8をあわせてNode.jsが生まれました。その後Node.jsはSocket.ioやExpressで脚光を浴びます。Node.jsの誕生と注目と現在というこれまでの流れを知ることで、コネクションを貼り続ける場面などNode.jsが本来得意な分野とそうでない場面が浮かび上がり、オワコンではない、Node.jsの本当の姿が明らかになりました。
GMOペパボ株式会社のエンジニア新人研修
GMOペパボ株式会社、技術責任者のあんちぽこと栗林健太郎氏(@kentaro )が、現在同社で取り組んでいる新人エンジニア研修について内情を明かしました。「 研修の意義は、企業のビジョン到達のために、ヒトを育てることである」とはじめに語った栗林氏。同時に新卒採用をする企業側の社会的責任についても触れ、しっかりした体制のもとでの新人研修の必要性を説きました。
新卒採用に広く求められる視座から、それを踏まえてGMOペパボが新人研修をどう実践しているかを紹介しました。研修においてどうすれば知識スキルと行動スキルの双方を適切に開発できるのか、基礎の学習や現場での実践をより効果的にする優れた視点が披露されるなど、新人エンジニアを受け入れるWeb企業が参考にできる内容となりました。
トークショー@会議室2
会議室2では簡単な紹介ののち、発表者が会場からの質問に答えていくQ&A形式のセッションが行われました。司会は法林氏です。
bashでCMS作った上田だけどなんか質問ある?
シェル芸人(シェルスクリプトを高度に、あるいは通常思いつく用途を超えて使いこなす人)として知られる上田隆一氏(@ryuichiueda 、USP友の会/産業技術大学院大学)のセッション。シェルスクリプトを書くモチベーションを問われ、限られた時間に対して素早く形にできるメリットなどを答えました。
@takesakoだけどなんか質問ある?
セキュリティ分野からアセンブラ短歌まで幅広く活躍する竹迫良範氏(@takesako 、サイボウズ・ラボ) 。若者のプログラミング離れ、セキュリティへのスキルや注力をどう業務でアピールしていくべきかなど多様な質問が集まりました。
竹迫氏は若者に向けたメッセージを、自身の経験と合わせて伝えた
Qiitaを賑わしてるhiroki_daichiだけどなんか質問ある?
エンジニア向けのノウハウ共有サイトであるQiitaをユニークな投稿で賑わしている広木大地氏(@hiroki_daichi 、ミクシィ) 。長い記事は(読まないため)ブックマークされやすいなど意表をついた実践的なテクニックを紹介し、会場を笑いでつつみました。運用を気にせず、フィードバックをもらいながら技術の話ができるなどQiitaのメリットについても紹介しました。
ドワンゴの技術部隊を立て直したmesoだけどなんか質問ある?
ドワンゴの技術部隊を立て直したと銘打って登場した清水俊博氏(@meso 、ドワンゴ) 。技術的負債が生まれてしまう背景とそれでもそれを回収する仕組み、エンジニアがより良く働くための施策を紹介しました。秘伝のPHPやそこからの移行などには注目が集まりました。
パネルディスカッション@未来館ホール
mozaic.fm 出張版:TypeScript and Dart
Jxck氏(@Jxck_ )によるポッドキャスト、mozaic.fmの出張版です。Jxck氏をモデレータに、Dartユーザとしてあんどうやすし氏(@technohippy ) 、TypeScriptユーザとしてわかめまさひろ氏(@vvakame )らがこれらの言語(altJS)について語りました。
あんどう氏はDartの魅力である大規模開発に適用可能なこと、クライアントとサーバを同一の言語で書けること、Dart IDEが悪くないことや、JavaScriptに練達していなくても書けることなどを紹介。DartVMがAndroidのChromeには既に搭載されていることなど、Dartの着実な歩みが伝わる情報も同時にあんどう氏自身が現場のプロダクションには使用していないことや、仕様が安定しないことなどまだまだ不安定な言語である面も忘れずに補足しました。
わかめ氏はTypeScriptの魅力を型があることと熱弁。もともとJavaをやっていたわかめ氏にはTypeScriptが非常に書きやすかったことや生成されるJavaScriptコードがきれいで保守がしやすい点、d.tsのような型定義ファイルによるドキュメンテーションのよさ、TypeScriptはリファクタリングがしやすくコードの質の向上に貢献していることなどの魅力を紹介しました。
altJSをテーマにしたパネルディスカッションが実現できるのも、このLLイベントならではの魅力
TypeScriptとDartを現実の言語と夢の言語と位置付けた今回のディスカッション。現実的にプロダクトに落とし込まれている言語とこれからその段階に進む夢の言語。altJSとしてECMA Scriptのスーパーセットであることを念頭に置いたTypeScriptと新言語であるDart、その比較は型の導入など一部の共通点を含めつつも、大きく異なります。いずれの言語も今後の動向に注目が集まります。
パネルディスカッション@未来館ホール
エディタ対決(仮)
永年、人気のエディタとして親しまれるVimとEmacs、さらに近年話題のSublime TextとAtomの4つのエディタについて語り合うパネルディスカッションです。Vimはkaoriya氏(@kaoriya ) 、Emacsは吉田昌平氏(@syohex ) 、Atomはtwitter.com/mizchi">@mizchi氏、Sublime Textは平出弥彦氏(@chikatoike )が代表としてディスカッションを繰り広げました。司会を務めたのは前田薫氏(@mad_p 、レピダム) 。
来場者に業務で使用するエディタを質問するところから始まった本パネルディスカッション。今回、会場内にはVimやIDEをエディタとして使用するユーザが多かったようです。
Vim、Emacs、Sublime Text、Atom。このエディタの構図は、どこかLL4大言語の構図に通ずるものがある(かも)
スピーカー自身と各エディタの紹介に続きます。
組み込み系プログラマの吉田氏。Emacsは(同列に語られる)Vimより人気がないのではないかなど現在のEmacs人気に対する実感を語りました。Emacsを使う理由は、Emacsが最もプログラマブルなエディタであるためです。
続いて、こちらも組み込み系プログラマの平出氏。Sublime Textの優れた点としてはクロスプラットフォーム、ファイルを素早く開けること、強力なテキスト編集、豊富なパッケージとスクリプトをPython、設定をJSONで書ける点を挙げています。以前はVimを使っていましたが、Sublime Textに乗り換えたそうです。
そしてフロントエンドエンジニアのmizchi氏はSublime TextをWebブラウザの技術(+npm)で実装したのがAtomであると語ります。すべてHTMLとCSSで書かれたの中身を開発ツールで会場に見せ、atomインスタンスを触って構造を明らかにしました。拡張しやすい革新的なエディタであるとのことです。
kaoriya氏は幅広く組み込みからフロントエンドまで担当するエンジニア。Vimの配布やパッチで有名です。Vimの歴史のうち、外部スクリプト言語のサポート開始やluaサポートなど特に重要な発展を紹介しました。
紹介ののち、ディスカッションに。エディタを拡張したくなってしまうのではないかという議題に対し、ついついEmacs Lispを書いてしまう(吉田氏) 、中身が気になるので仕事ではAtomではなくSublime Textを使う(mizchi氏) 、拡張するのではなくVim本体(cのソースコード)をいじってしまう(kaoriya氏)など特徴的な回答が集まりました。以前はプラグインを書いていた平出氏は、最近はあまりいじらないでも満足とのことです。
Sublime TextやAtomは端末(いわゆる黒い画面)から起動できないこと、Vimモード(エディタによるVimエミュレーション) 、文字コードやエディタの今後など他にも多くの議題、会場からの質問で盛り上がったエディタ対決(仮) 。対決には至らず、終始和やかなムードで進み、広く今日のエディタ事情を知ることができました。
ライトニングトークス
イベント最後の盛り上がりは何と言ってもLT(ライトニングトークス) 。今回も多彩なLTが繰り広げられました。
JavaScript Bad Parts Recycle/Yasushi HASHIMOTO @yellow844
ダメなJavaScriptからより良いJavaScriptを書く方法について紹介。
Ruby2.1のRefinementsで作るSpockライクなテスト構文/橋立友宏 @joker1007 (Yokohama.rb/Shibuya.rb/Asakusa.rb)
RefinementsのRubyへの登場によるDSL書き放題の環境、Spockライクなテスト構文の書き方を可能にするまでについて。
Fumiの思想/野中哲 @anonaka
氏が自作したFumiの設計の裏側の思想を紹介。
JavaScript異文化交流/竹馬光太郎 @mizchi
フロントエンドエンジニア・デザイナー・マークアップエンジニアが触り、異文化交流の場と化すJavaScriptの現状について。
継続的WEBセキュリティ診断/市川 @cakephper (ビットフォレスト)
CIのようにWebセキュリティ診断も継続的に行うべきという持論を展開。
Brainfuckで遊ぼう/shigemk2 @shigemk2 (ファンコミュニケーションズ)
Node.jsでBrainfuckのインタプリタとJITコンパイラを作成した話。
JavaScriptは本当にLLなのか?/川田寛 @kawada_hiroshi (html5jエンタープライズ部)
JavaScriptが本当にLightWeight Languageなのか、JavaScriptを支える企業や団体の例から明らかに。
forやめろ、あるいは「繰り返し」という呪縛から逃れるために/似非原重雄 @esehara (Nana music)
繰り返しがいかに難しいか。また繰り返しとはそもそも何か。
LL Diverでのネットワークの取り組みとCONBUについて/CONBU
会場ネットワークを担当したCONBUの紹介、当日朝からも大変だった話なども。
LL QUIZの正解発表/LL QUIZチーム
LL Diver名物のQuizの答えや考え方を発表。
抽選会+閉会宣言@未来館ホール
LT後は未来館ホールでそのまま抽選会に突入。客席に投げ込まれたボールをキャッチできれば、賞品と交換できます。抽選会からさらに閉会宣言。夜の部への期待も膨らむ中、昼の部が終了しました。
夜の部@東京カルチャーカルチャー
東京カルチャーカルチャーに会場を移した夜の部も満員の人入り。登壇者も来場者もお酒が入り、昼には話せないディープな話題を聞くことができました。
この設計がひどい2014
菊池正史氏(レピダム) 、magicdrive氏、加藤誠氏らが実際に目にしたひどい設計について、ここだけトークといった雰囲気で語りました。ひどい設計に対し会場からは驚きや笑いも多く聞こえ、始終賑やかなムードでした。
夜の部はカジュアルに、ここカルカルこと東京カルチャーカルチャーにて
ここで紹介した以外にも、多くの発表で盛り上がったLL Diver。昼の部、夜の部ともに一日通して盛況のうちに終了しました。
すべての発表についてはタイムテーブル をご覧ください。