Stack Overflowが開発者向けイベント「Dev Days」を開催
プログラマー向けQ&Aサイト「Stack Overflow」が10月9日、都内で開発者向けイベント「Dev Days」を開催した。2014年末に日本語版が公開されたのにともない、日本の開発者向けにDev Daysを開催したものだ。
目玉は、Stack Overflowの創設者・社長であるJoel Spolsky氏による講演だ。氏は、人気ブログ「Joel on Software」とそれを元にした書籍でも技術者に知名度が高い。
開会にあたって、日本のコミュニティ管理者であるメシエル・ジョシュア(Joshua Maciel、カタカナ表記は名刺による)氏が挨拶。「日本語版も、やっと質問数が5,000件を超えた。今朝チェックしたら5,050件だった」と報告した。
Stack Overflowは「楽しいことが嫌い」!?
Joel Spolsky氏は、「大きなオンラインコミュニティを継続的に維持する方法」と題して、オンラインコミュニティが大きくなったときに起こる問題と、それに対するルールについて語った。そしてStack Overflowのルールの特異性を「We Hate Fun(楽しいことが嫌い)」とアイロニカルに表現した。
Spolsky氏はまず、Clay Shirky氏(「みんな集まれ! ネットワークが世界を動かす」著者)の「グループはそのグループ自体の最大の敵である」という言葉を引用。オンラインコミュニティで一人が迷惑投稿をし、運営がそれを削除すると、まともなメンバーも運営を批判してオンラインコミュニティが荒れる、ということが何度も繰り返されてきたと説明して、「コミュニティが大きくなりすぎるとバラバラになる」と語った。
ここで氏は、オンラインコミュニティのルールの例として、Wikipediaをひきあいに出した。「なぜうちの犬のページがWikipediaにないのか」とユーモラスに疑問を提示し、価値の特筆性や情報源にこだわるWikipediaのルールを紹介した。
そして、それに反発する執筆者の声や、執筆者の減少の様子を紹介。さらに、小説家のフィリップ・ロス氏が自作についての間違った記述を自分で訂正しようとしたら「あなたは信頼できる情報源ではありません」と言われたというエピソードを披露した。
Spolsky氏は「Wikipediaでは真実(Truth)より確認できる情報(Verifiable)が優先される。Wikipediaは三次情報だ」と問題を指摘しつつ、「現在の事実確認方法では、これ以上は目指せない。だからこそ世界中でWikipediaが好まれている」と述べた。
それでは、やはり巨大なユーザー数を抱えるStack Overflowはどうか。Spolsky氏は「Stack Overflowは客観的な質問サイトであり、目指しているのは会話より結果」とその独特の立場を説明する。
Stack Overflowでは、不建設的な質問は禁止、主観的・賛否を求める・長くなるといった議論は禁止、範囲が狭すぎる質問も禁止など、厳しいルールが定められている。たとえば、「ASP.NET MVCとWeb Formsのどちらがいいか」といった主観的な意見を求める質問は駄目。また、「このコードでどのカッコが足りない?」といった質問も、ほかの人の役に立たないとして駄目とされる。
Spolsky氏はこうした特異ともいえるルールについて、Stack Overflowは「ソーシャルコミュニティではない」「掲示板でもない」「プログラマー向けのリソースである」と説明。冒頭に紹介したように、「We Hate Fun(楽しいことが嫌い)」とアイロニカルに表現した。
ただし、こうしたルールは説明を徹底し、一般人がそのルールにびっくりしないようにする必要があるともSpolsky氏は述べた。
たとえば、「適切な言葉を探すのは大変」として、Stack Overflowで望ましくない質問に対して「Closed(閉鎖された)」、「Too Localized(範囲が狭すぎる)」、「Not Constructive(非建設的な質問)」、「Not a Real Question(本当に質問ではない)」という言葉を使っていたところ、やる気のあるユーザーが離れてしまったと語った。そして、それぞれ「On hold(改善待ち)」、「Off topic(トピックから外れています)」、「Primarily opinion-based(主観的な回答しか集まらない)「、「Unclear what you're asking(質問内容はあっきりしない)」と言いかえたところ、編集率が約2倍にアップしたと報告した。
氏は最後に、月5回以上投稿するユーザー数のグラフを見せ、「われわれはずっと成長している」と、大きなオンラインコミュニティを継続的に維持できていることを示した。
Joel Spolsky氏と海野弘成氏(Qiita)が質問に答える
Joel Spolsky氏と、プログラミング知識共有サイト「Qiita」の創設者であり社長の海野弘成氏(Increments株式会社)が壇上に並び、会場からの質問に答えるセッションも開かれた。Qiitaは、参加者が自分の知識を1トピック単位でブログのように投稿するサイト。Stack Overflowと方式は違うが、どちらも技術的な課題をGoogleで検索したときにしばしば上位にヒットする。
まず、Qiitaには人をフォローする機能があるがStock Overflowにはないことについて会場から質問が出た。これに対してSpolsky氏は「Stack Overflowを設計したJeff Atwoodは、Facebookの反対をやろうと考えた。“人がすることに関心はない、知りたいのは質問の答えだ”という、いわばアンチ・ソーシャルなものだ」と答えた。
一方、海野氏は、「Qiitaには、Q&Aのように明確なアクションがあるわけではない。人やタグをフォローして、人とコンテンツつなげるようにしている。いかに必要な人に情報を届けるかを大事にしている」と答えた。
また、Stack Overflowにはマイナス投票(投稿にマイナスの点を付けること)の機能があり、Qiitaにはない。これについて海野氏は、「情報共有は善意なので、マイナス投票をされると悲しい。Qiitaでは、マイナス投票のかわりに、内容を改善してもらうための編集リクエストの機能を付けることで、コンテンツをよりよくしようとしている」と回答した。一方、Spolsky氏は、「これもAtwoodの考えのスタイルで、正しいか正しくないかだけが重要だというものだ。ただし、ユーザーの気持ちは大切だ」と回答した。
「サービスを開始してから最も印象的だったエピソードは」という質問に対し、Spolsky氏は「サービスを開始して最初の日に、ちょっとした質問をStack Overflowに投稿しようとしたら、すでに同じ質問とその回答が載っていて、いい答えは投票で上に出ていた。これはいい機能だと驚いた」ということを紹介した。
また、海野氏は「開発が自分1人だけだった頃、バグでサーバーを落としてしまったことがある。そのとき、エラーメッセージでGoogle検索したらQiitaの投稿がヒットして、見られないのでGoogleのキャッシュで見た(笑)。自分にも役に立っていると思った」と語った。
幅広いテーマで開発者が発表
そのほか、日本の開発者からさまざまな発表がなされた。テーマを決めたイベントではなく、Q&Aサイトのイベントという性質から、幅広いテーマの発表が集まった。
セキュリティ情報共有コミュニティ「OWASP Japan」のLeadの岡田良太郎氏は、ソフトウェアの設計や開発の段階からセキュリティを考慮することの重要性を説明。タイタニック号の救命ボートが20艘しかなかったことを例に挙げ、「世の中のガイドラインでそれで充分だとされていた。現代の情報漏洩事件などでは、タイタニックと同じようなことが起きている」と語った。
そして、技術の進歩が速い現在では、権威から情報が落ちてくるのを待つというモデルはもう合わないとして、コミュニティが重要だと主張。そのうえで、OWASPの活動を紹介した。
鈴木雄大氏(tenso株式会社)は、EC代理購入サービスの仕組みとそこでの苦労した点を紹介した。氏が開発した代理購入システム「Buyee」では、PhantomJSによるスクレイピングを利用しており、PhantomJSの不具合でクラッシュがしばしば起きていたという。
これを解決するためにシステムを再設計。PhantomJSの使い方を間違って無駄に実行していたジョブを削り、既に知られていた不具合回避策を用いることで、処理件数が増え、失敗件数が減り、クラッシュもなくなり、同時実行数も増やせたという。
高橋健一氏(GMOペパボ株式会社)は、社内の開発者支援の立場から、EC支援事業「カラーミーショップ」のショッピングカートのリニューアルを支援した1年間のふりかえりを紹介した。Team(チームビルディング)、Project(プロジェクトマネージメント)、Programming(コードレビュー、ライブラリ開発、ステージング環境、社内クラウド基盤)、Productの4つの取り組みが語られた。
Yasushi Ando氏(kabuku Inc)は、3Dプリンターについて解説した。3Dプリンターの概要や種類を解説したあと、「3Dプリンターを会社で買おう」とユーモラスに自社を紹介。そして、コードで3Dモデルを記述してその場でプレビューできるOpenSCADや、モデリングツールを紹介。3Dモデルの公開サイトであるThingverseやRinkak(kabuku)についても紹介した。
羽山祥樹氏は、ユーザーに合ったものを仮説検証をすばやく回して作るリーンスタートアップについて論じた。書籍「実践リーンスタートアップ」「リーン顧客開発」をもとに、ユーザーの課題インタビューでバイアスを避けるための方法を解説した。
下川敬弘氏(株式会社Zaim)は、デザインツール「Sketch3」と、Sketch3開発者とデザイナーとの共同作業に使う実例を紹介した。下川氏は、Androidアプリのデザインリニューアルにあたり、デザイナーとデータを共有して、Sketchファイルから色データや画像などを書き出したという。実際に壇上でSketch3でアイコンを作るところもデモした。
niryuu氏は、Stack Overflow上の活動について研究した学術論文が世界でいろいろ出されていると語った。その中から、人気のあるプログラミングテーマや行動、さまざまなAPIに関する質問数の比較、R言語の会話がメーリングリストからStack Overflowに移行していく様子などの研究を紹介。さらに、この分野における自身の研究についても言及した。
besutome氏は、Node.js上のシングルページWebアプリケーション「Meteor」について紹介し、デモした。デモでは、サンプルアプリケーションを1コマンドで自動作成し、そのまま実行してアクセスし、コードの一部を変更してWebブラウザーに自動的に反映してるところまでを見せた。さらに、最初から3分でmeteor.comにデプロイするところまでに挑んだが、アップロード回線が遅かったようで3分では完了しなかった。
松岡洋氏は、複数の写真を合成してパノラマ写真を作るステッチングにおいて、OpenCVをカスタマイズしてGPUをフル活用することで、リアルタイム動画でステッチングを実現するようにしたところを紹介。実際に壇上の3つのカメラの動画をリアルタイムスティッチングしてスクリーンに映してみせた。
Electron(旧Atom-Shell)とCoffeeScriptで、WireSharkのようなパケットアナライザーを作る発表もあった。pcapの部分は別途Go言語で作って特権動作で動かし、ElectronとはMessagePackで通信しているという。さらに、CoffeeScriptのコードは画面の各部分ごとにパッケージ(モジュール)化しているほか、ネットワークのレイヤーごとにも処理をパッケージ化しているという。
神原健一氏は、新しいAndroid 6.0(Marshmallow)で開発者がひっかかるところとして、新パーミッションモデルを紹介した。Marshmallowでは、パーミッションをユーザーが後から変更できること、パーミッションのグループごとに許可と不許可を設定できること、初回起動時にユーザーにパーミッションを確認する場合と該当機能を使う直前に確認する方法があることなどが説明された。
西本航氏(株式会社Zaim)は、Zaimでのデータベースのパーティショニングとシャーディングについて解説した。家計簿はユーザーによるパーティショニングがやりやすいが、当初500万ユーザーまでしか対応していなかったことから、1000万ユーザーまでの対応に変更したという。そのためのスキーマ変更や、サービス停止してメンテナンスすることでシャーディングまでやろうとしたこと、そしてそれを最小限の時間で済ませるための試行錯誤が語られた。ただし、ちょうどAmazon AuroraがAWS東京リージョンに対応を発表したため、発表時点で実行に至っていないという。
※編集部より:初出時に一部の画像が非表示になっていたものを修正致しました。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Stack Overflow、ソースコードのコピー&ペーストについての脆弱性の拡散について注意喚起
- IBMがRustを使ってNode.jsのプロジェクトを書き換え。その背景とは?
- Red Hatが提供するJBoss Enterprise Middlewareとは
- Androidに指紋認証技術と音声認識がもたらされる
- DevRel関連職の求人から見る、職責の細分化
- マイクロソフトのオープンソースプロジェクトは成功に向かっているようだ。
- 2017年に見ておきたい12のJavaScriptライブラリ
- オープンソースのスタートアップが失敗する本当の理由、Linuxカーネルの最新版「Linux 4.0」をリリース、ほか
- DevRelを実践する「4C」の考え方とは
- エンジニアを目指す人が知っておきたい学習の10のルール