Stack Overflowが開発者向けイベント「Dev Days」を開催

2015年10月23日(金)
高橋 正和

プログラマー向け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の日本のコミュニティ管理者であるメシエル・ジョシュア氏

図1: Stack Overflowの日本のコミュニティ管理者であるメシエル・ジョシュア氏

Stack Overflowは「楽しいことが嫌い」!?

Joel Spolsky氏は、「大きなオンラインコミュニティを継続的に維持する方法」と題して、オンラインコミュニティが大きくなったときに起こる問題と、それに対するルールについて語った。そしてStack Overflowのルールの特異性を「We Hate Fun(楽しいことが嫌い)」とアイロニカルに表現した。

Joel Spolsky氏

図2: Joel Spolsky氏

Spolsky氏はまず、Clay Shirky氏(「みんな集まれ! ネットワークが世界を動かす」著者)の「グループはそのグループ自体の最大の敵である」という言葉を引用。オンラインコミュニティで一人が迷惑投稿をし、運営がそれを削除すると、まともなメンバーも運営を批判してオンラインコミュニティが荒れる、ということが何度も繰り返されてきたと説明して、「コミュニティが大きくなりすぎるとバラバラになる」と語った。

ここで氏は、オンラインコミュニティのルールの例として、Wikipediaをひきあいに出した。「なぜうちの犬のページがWikipediaにないのか」とユーモラスに疑問を提示し、価値の特筆性や情報源にこだわるWikipediaのルールを紹介した。

そして、それに反発する執筆者の声や、執筆者の減少の様子を紹介。さらに、小説家のフィリップ・ロス氏が自作についての間違った記述を自分で訂正しようとしたら「あなたは信頼できる情報源ではありません」と言われたというエピソードを披露した。

Spolsky氏は「Wikipediaでは真実(Truth)より確認できる情報(Verifiable)が優先される。Wikipediaは三次情報だ」と問題を指摘しつつ、「現在の事実確認方法では、これ以上は目指せない。だからこそ世界中でWikipediaが好まれている」と述べた。

Wikipediaの執筆者の減少

図3: Wikipediaの執筆者の減少

Wikipediaでは真実より確認できる情報が優先される

図4: Wikipediaでは真実より確認できる情報が優先される

それでは、やはり巨大なユーザー数を抱えるStack Overflowはどうか。Spolsky氏は「Stack Overflowは客観的な質問サイトであり、目指しているのは会話より結果」とその独特の立場を説明する。

Stack Overflowでは、不建設的な質問は禁止、主観的・賛否を求める・長くなるといった議論は禁止、範囲が狭すぎる質問も禁止など、厳しいルールが定められている。たとえば、「ASP.NET MVCとWeb Formsのどちらがいいか」といった主観的な意見を求める質問は駄目。また、「このコードでどのカッコが足りない?」といった質問も、ほかの人の役に立たないとして駄目とされる。

Spolsky氏はこうした特異ともいえるルールについて、Stack Overflowは「ソーシャルコミュニティではない」「掲示板でもない」「プログラマー向けのリソースである」と説明。冒頭に紹介したように、「We Hate Fun(楽しいことが嫌い)」とアイロニカルに表現した。

Stack Overflowの厳しいルール

図5: Stack Overflowの厳しいルール

「ソーシャルコミュニティではない」

図6: 「ソーシャルコミュニティではない」

ただし、こうしたルールは説明を徹底し、一般人がそのルールにびっくりしないようにする必要があるとも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回以上投稿するユーザー数のグラフを見せ、「われわれはずっと成長している」と、大きなオンラインコミュニティを継続的に維持できていることを示した。

変更前の言葉

図7: 変更前の言葉

変更後の言葉

図8: 変更後の言葉

言葉を変更したら編集率が2倍に

図9: 言葉を変更したら編集率が2倍に

月5回以上投稿するユーザー数がほぼ右肩上がり

図10: 月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のキャッシュで見た(笑)。自分にも役に立っていると思った」と語った。

Joel Spolsky氏(右)とQiitaの海野弘成氏(左)

図11: Joel Spolsky氏(右)とQiitaの海野弘成氏(左)

幅広いテーマで開発者が発表

そのほか、日本の開発者からさまざまな発表がなされた。テーマを決めたイベントではなく、Q&Aサイトのイベントという性質から、幅広いテーマの発表が集まった。

セキュリティ情報共有コミュニティ「OWASP Japan」のLeadの岡田良太郎氏は、ソフトウェアの設計や開発の段階からセキュリティを考慮することの重要性を説明。タイタニック号の救命ボートが20艘しかなかったことを例に挙げ、「世の中のガイドラインでそれで充分だとされていた。現代の情報漏洩事件などでは、タイタニックと同じようなことが起きている」と語った。

そして、技術の進歩が速い現在では、権威から情報が落ちてくるのを待つというモデルはもう合わないとして、コミュニティが重要だと主張。そのうえで、OWASPの活動を紹介した。

岡田良太郎氏(OWASP Japan Lead)

図12: 岡田良太郎氏(OWASP Japan Lead)

早い段階でセキュリティを考慮する重要性を説明

図13: 早い段階でセキュリティを考慮する重要性を説明

鈴木雄大氏(tenso株式会社)は、EC代理購入サービスの仕組みとそこでの苦労した点を紹介した。氏が開発した代理購入システム「Buyee」では、PhantomJSによるスクレイピングを利用しており、PhantomJSの不具合でクラッシュがしばしば起きていたという。

これを解決するためにシステムを再設計。PhantomJSの使い方を間違って無駄に実行していたジョブを削り、既に知られていた不具合回避策を用いることで、処理件数が増え、失敗件数が減り、クラッシュもなくなり、同時実行数も増やせたという。

鈴木雄大氏(tenso株式会社)

図14: 鈴木雄大氏(tenso株式会社)

代理購入システムBuyeeの開発運用体制

図15: 代理購入システムBuyeeの開発運用体制

高橋健一氏(GMOペパボ株式会社)は、社内の開発者支援の立場から、EC支援事業「カラーミーショップ」のショッピングカートのリニューアルを支援した1年間のふりかえりを紹介した。Team(チームビルディング)、Project(プロジェクトマネージメント)、Programming(コードレビュー、ライブラリ開発、ステージング環境、社内クラウド基盤)、Productの4つの取り組みが語られた。

高橋健一氏(GMOペパボ株式会社)

図16: 高橋健一氏(GMOペパボ株式会社)

アジャイルの手法を取り入れ、Team、Project、Programming、Productを支援

図17: アジャイルの手法を取り入れ、Team、Project、Programming、Productを支援

Yasushi Ando氏(kabuku Inc)は、3Dプリンターについて解説した。3Dプリンターの概要や種類を解説したあと、「3Dプリンターを会社で買おう」とユーモラスに自社を紹介。そして、コードで3Dモデルを記述してその場でプレビューできるOpenSCADや、モデリングツールを紹介。3Dモデルの公開サイトであるThingverseやRinkak(kabuku)についても紹介した。

Yasushi Ando氏(kabuku Inc)

図18: Yasushi Ando氏(kabuku Inc)

コードで3Dモデルを記述するOpenSCAD

図19: コードで3Dモデルを記述するOpenSCAD

羽山祥樹氏は、ユーザーに合ったものを仮説検証をすばやく回して作るリーンスタートアップについて論じた。書籍「実践リーンスタートアップ」「リーン顧客開発」をもとに、ユーザーの課題インタビューでバイアスを避けるための方法を解説した。

羽山祥樹氏

図20: 羽山祥樹氏

ユーザーの課題インタビューでバイアスを避けるために

図21: ユーザーの課題インタビューでバイアスを避けるために

下川敬弘氏(株式会社Zaim)は、デザインツール「Sketch3」と、Sketch3開発者とデザイナーとの共同作業に使う実例を紹介した。下川氏は、Androidアプリのデザインリニューアルにあたり、デザイナーとデータを共有して、Sketchファイルから色データや画像などを書き出したという。実際に壇上でSketch3でアイコンを作るところもデモした。

下川敬弘氏(株式会社Zaim)

図22: 下川敬弘氏(株式会社Zaim)

Sketch3でアイコンを作るデモ

図23: Sketch3でアイコンを作るデモ

niryuu氏は、Stack Overflow上の活動について研究した学術論文が世界でいろいろ出されていると語った。その中から、人気のあるプログラミングテーマや行動、さまざまなAPIに関する質問数の比較、R言語の会話がメーリングリストからStack Overflowに移行していく様子などの研究を紹介。さらに、この分野における自身の研究についても言及した。

niryuu氏

図24: niryuu氏

Stack Overflow上の活動に関するさまざまな研究

図25: Stack Overflow上の活動に関するさまざまな研究

besutome氏は、Node.js上のシングルページWebアプリケーション「Meteor」について紹介し、デモした。デモでは、サンプルアプリケーションを1コマンドで自動作成し、そのまま実行してアクセスし、コードの一部を変更してWebブラウザーに自動的に反映してるところまでを見せた。さらに、最初から3分でmeteor.comにデプロイするところまでに挑んだが、アップロード回線が遅かったようで3分では完了しなかった。

besutome氏

図26: besutome氏

Meteorでサンプルアプリを3分で動かすデモ

図27: Meteorでサンプルアプリを3分で動かすデモ

松岡洋氏は、複数の写真を合成してパノラマ写真を作るステッチングにおいて、OpenCVをカスタマイズしてGPUをフル活用することで、リアルタイム動画でステッチングを実現するようにしたところを紹介。実際に壇上の3つのカメラの動画をリアルタイムスティッチングしてスクリーンに映してみせた。

松岡洋氏

図28: 松岡洋氏

壇上の3つのカメラの動画をリアルタイムスティッチングしてスクリーンに映す

図29: 壇上の3つのカメラの動画をリアルタイムスティッチングしてスクリーンに映す

Electron(旧Atom-Shell)とCoffeeScriptで、WireSharkのようなパケットアナライザーを作る発表もあった。pcapの部分は別途Go言語で作って特権動作で動かし、ElectronとはMessagePackで通信しているという。さらに、CoffeeScriptのコードは画面の各部分ごとにパッケージ(モジュール)化しているほか、ネットワークのレイヤーごとにも処理をパッケージ化しているという。

ElectronとSoffeeScriptによるパケットアナライザの発表(発表者名は筆者の記録漏れ)

図30: ElectronとSoffeeScriptによるパケットアナライザの発表(発表者名は筆者の記録漏れ)

パケットアナライザのデモ

図31: パケットアナライザのデモ

神原健一氏は、新しいAndroid 6.0(Marshmallow)で開発者がひっかかるところとして、新パーミッションモデルを紹介した。Marshmallowでは、パーミッションをユーザーが後から変更できること、パーミッションのグループごとに許可と不許可を設定できること、初回起動時にユーザーにパーミッションを確認する場合と該当機能を使う直前に確認する方法があることなどが説明された。

神原健一氏

図32: 神原健一氏

新しいAndroid 6.0(Marshmallow)の新パーミッションモデル

図33: 新しいAndroid 6.0(Marshmallow)の新パーミッションモデル

西本航氏(株式会社Zaim)は、Zaimでのデータベースのパーティショニングとシャーディングについて解説した。家計簿はユーザーによるパーティショニングがやりやすいが、当初500万ユーザーまでしか対応していなかったことから、1000万ユーザーまでの対応に変更したという。そのためのスキーマ変更や、サービス停止してメンテナンスすることでシャーディングまでやろうとしたこと、そしてそれを最小限の時間で済ませるための試行錯誤が語られた。ただし、ちょうどAmazon AuroraがAWS東京リージョンに対応を発表したため、発表時点で実行に至っていないという。

西本航氏(株式会社Zaim)

図34: 西本航氏(株式会社Zaim)

ユーザー数増加によるパーティショニングの修正

図35: ユーザー数増加によるパーティショニングの修正

※編集部より:初出時に一部の画像が非表示になっていたものを修正致しました。

フリーランスのライター&編集者。IT系の書籍編集、雑誌編集、Web媒体記者などを経てフリーに。現在、「クラウドWatch」などのWeb媒体や雑誌などに幅広く執筆している。なお、同姓同名の方も多いのでご注意。

連載バックナンバー

運用監視イベント

AppDynamics、2回目のユーザーカンファレンスで垣間見えた理想と現実

2015/12/15
アプリモニタリングのAppDynamics、2回目となるカンファレンスを開催。
開発ツールイベント

EMC、スケールアウトストレージの元祖、IsilonのエントリーモデルにSDSを追加

2015/11/30
EMC、スケールアウトストレージのIsilonのエントリーモデルにSDSを投入。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています