レポート

東京Node学園祭2017 レポート

この記事を読むのに必要な時間:およそ 5 分

東京Node学園祭は,Japan Node.js Associationが主催する,日本最大のNode.jsのカンファレンスです。昨年までは有志団体日本Node.jsユーザーグループによって開催されていましたが,今年は同団体がJapan Node.js Associationとして法人化され,法人格として初めての開催となりました。

今年東京Node学園祭2017は11月25日,11月26日の2日間開催され,1日目は法政大学,2日目はリクルートテクノロジーズを会場としました。本レポートでは,いくつかの注目講演や,セッションをピックアップしてレポートします。

1日目 カンファレンスデイ,オープニングトーク

1日目はカンファレンスデイとなっていて,主に講演で構成される内容になっています。

オープニングトーク時の会場

画像

まず古川代表@yosuke_furukawaより今年のNode.js及びコミュニティについての進捗について発表がありました。また今年のスローガンが,Be More Global and InteractiveとTo grow with biginnersであることに言及しました。

古川代表 (@yosuke_furukawa)

画像

Joyee Cheung氏「アリババでのNode.js」

Joyee Cheung氏@joyeecheungは中国アリババ社のエンジニアです。 アリババ社では現在500人以上のNode.js開発者が在籍し,1,000以上のNode.jsアプリケーションが稼働しています。 講演ではアリババ社におけるNode.jsアプリケーション開発・運用の様子を紹介しました。

Joyee Cheung氏@joyeecheung

画像

中国でこのように大規模にNode.js開発を展開する上での大きな問題の一つは金盾 (国家レベルのファイヤーウォール) です。中国国内から,公式のnpmレジストリに接続することは可能ではありますが,非常に低速であり,開発や運用で求められるスピードを満たせません。そこでアリババではcnpmというツールを開発し,この問題を回避しています。cnpmとはエンタープライズ向けの専用のnpmレジストリを立ち上げるためのツールです。アリババではcnpmで構築した独自のレジストリを社内で運用しており,そこから専用のコマンドラインツールを用いてNodeモジュールをインストールすることで,高速なNodeアプリケーションのインストールを実現しています。

アリババではアプリケーションスタックのコア部分でEgg.jsというフレームワークを利用しています。Egg.jsはKoaをベースにしたフルスタックのフレームワークです。 Egg.jsはコア部分はOSS化されており,その上にプロプライエタリなプラグインを構築することで,アリババの各サービスを構成しています。

Myles Borins氏「OSSガバナンスモデル: BDFL型からコンセンサス探索型へ」

Myles Borins 氏@mylesborinsはGoogle Cloud Platformチームのデベロッパーアドボケイトであり,NodeのBoard of Directorsの1人です。講演では,Nodeの現在のガバナンスモデルと,その歴史的な変遷について発表がありました。

Myles Borins氏@mylesborins

画像

Node コミュニティは現在,11人のBoard of Directors, 20人のTSCメンバーと, 108人のコラボレータによって運営されています。Board of Directorsの役割は,人事面,金銭面などのNode Foundationの運営方針についての判断・決定を行うことです。TSC ⁠Technical Steering Committee)の役割は技術的な方針についてのハイレベルな判断・決定をおこなうことです。コラボレータは個々の具体的な開発・変更に対して具体的な判断を行います。コラボレータ同士が特定の問題に対して,合意に至れない場合はTSCが判断します。TSC内でも合意に至れない場合は,TSCの中での投票によって決裁します。ただし,合意に至れないことはかなり稀です。

ところで,Nodeは過去にはBDFLモデルによって運営されていた時期がありました。BDFLとはBenevolant Dictortor for Lifeの略で,Python言語コミュニティにおいて作者Guido van Rossumの肩書きを表す言葉として造語されました。BDFLはその名前が示すように,プロジェクトの意思決定に関して最終的な決裁権を持った1人の人間です。

世の中には,何名かの有名なBDFLがいます。例えば,リーナス・トーバルズは長年LinuxのBDFLです。ラリー・ウォールはPerl言語のBDFL,そして,まつもとゆきひろはRuby言語のBDFLです。

Node.jsは過去に3名のBDFLによってガバナンスされた時期がありました。1人目のBDFLはRyan Dahlです。彼は2009年のJSConf EUでNode.jsを初めて発表し,そこから現在のNodeプロジェクトが始まりました。2人目のBDFLはIsaacs Schlueterでした。3人目のBDFLはTJ Fontaineでした。この頃からNode.jsはJoyentによってスポンサーされるようになりました。

企業によるスポンサーが始まってからNode.jsは動きが止まってしまいました。0.10.0がリリースされてから,0.12.0がリリースされるまでに,非常に長い時間がかかってしまいました。その影響で2014年12月にNode.jsはio.jsとしてフォークされました。io.jsはその後v1, v2, v3とリリースされ,v4になった時に,再びNode.jsにマージされました。

この時Node.jsはコンセンサス探索型(Consensus-seeking)の意思決定プロセスを採用しました。具体的には,すべての変更はPull Requestを通して行われる必要があります。そして十分な時間,コミュニティーによるチェックを受ける必要があります。チェックの結果,反対意見が無いことがマージされるための条件になります。

また,後方互換性を切る変更(Semver Major Changes)については,すべてTSCのレビューを受ける必要があります。これらはTSCのミーティングで議論されますが,理想的にはPull Requestの議論の中で自然なコンセンサスに至ることが好ましいです。

Nodeでは,よりコミュニティに力を与えることに最適化されているコンセンサス探索型を採用しています。しかしBDFL型と比較して,双方ともメリット・リスクがあり,それを理解した上でガバナンスモデルを選択していくことが重要となるでしょう。

著者プロフィール

日野澤歓也(ひのさわよしや)

大手ソーシャルゲーム系スタートアップを経験後,2015年よりフリーランスのソフトウェアエンジニアに転職。趣味では@kt3k名義で,多数のJavaScriptモジュールを開発し,npmで公開・メンテナンスしている。