YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

SRE NEXT 2023でクロージングキーノートで登壇しました

はじめに

こんにちは、Google CloudでオブザーバビリティとSREの担当をしているものです。去る2023年9月29日、SRE NEXT 2023というSRE関するカンファレンスにて、僭越ながらクロージングキーノートスピーカーを拝命しましたため、その責務をまっとうして参りました。

sre-next.dev

「信頼性目標とシステムアーキテクチャー」

発表スライドと当日の録画へのリンクはこちらです。

speakerdeck.com

www.youtube.com

クロージングキーノートという貴重な機会をいただいたわけですが、自分の立場として参加者の方々に何を一番伝えたいか、何が求められているのかなど、依頼を頂いてから悩ましい時間が多くありました。SREというのはたくさんのプラクティスのまとまりですが、やはり自分が伝えたいことがあるとすればSLOに関わることだなと思い、セッションタイトルだけ思いついたので、細かな内容がまだなにも思いついていない状態で運営の方にお伝えしました。

詳細はセッションスライドと録画を見ていただくとして、この発表で伝えたかったことは

  • サービスレベル目標を決めると、自ずとシステムのアーキテクチャーや開発のプラットフォームに影響が及ぼされるということ
  • 信頼性目標にたどり着くためのアーキテクチャーは対話によって妥当な点を見出すしか無いこと

発表の中では確率を例にして検討を重ねていますが、こういった検討そのものが開発や運用のチーム全体で共通に認識されるべきもので、検討の末に必要になったもの費用も論理的に導かれることが伝われば幸いです。プラットフォームエンジニアリングという言葉もありますが、発表の中でも述べているように、ある程度以上の信頼性はプラットフォームがなければ達成できませんし、Four Keysも本来であればSLOを達成すべきプロセスの文脈で出てくるはずのものです。

このセッションをきっかけに、一人でも多くの方にSLOの有用性が伝われば幸いです。

こちらの書籍にも本セッションで話した内容が触れられていますので、ぜひご一読ください。

r9y.dev 盛り上げていきましょう!

自分のセッションの中で紹介した r9y.dev は「SREエンタープライズロードマップ」を著したSteve McGheeやJames Brookbankが始めたプロジェクトで、各信頼性目標に応じて必要になるテクノロジーを議論しながら作っているものですが、皆さんからのフィードバックやレポジトリへのプルリクエストを元に発展しているものです。ぜひdiscordに参加してコメントをいただけると嬉しいです。

discord.com

またオンラインで公開ディスカッションを行っているのですが、日本からの参加者が多くあると事前に分かればAPAC時間での開催もできると思うので、是非discordやGitHubのレポジトリで提案してください!

SRE NEXT 2023の熱気がすごかった

SRE NEXTへは初回の2020年の回から3回連続で登壇の機会をいただき、個人的には思い入れのあるカンファレンスの1つです。

sre-next.dev

sre-next.dev

特に日本でSREに関するトピックだけを扱った(SREをカンファレンス名に冠した)数百人規模のカンファレンスというのはSRE NEXTしかなく、その点で個人的にとても応援しているカンファレンスでした。そして今年はオンサイトイベントとして復活した回だったわけですが、セッションの内容が「SREのプラクティスを実践してきての学びや振り返り」に関するものが多く、明らかにコミュニティのSREに対する理解や実践度合いが進んできていると思いました。また会場の雰囲気も活気があり、これからが本当に楽しみなカンファレンスだなあと感じました。

自分はSREcon APACの20222023でProgramme Committeeに参加したのですが、SREcon APACのセッション内容と比較しても、SRE NEXTは実践的な内容が多く、日本のSREコミュニティの質の高さが伺えました。SREconの場合はグローバルサービスの運用に関する発表が多いですが、SRE NEXTは日本ローカルならではの小中規模の組織での実践の話が聞けるのが貴重だなと感じます。

個人的に好きだったもの

セッションに参加したりブースを回ったりして面白かったものを、Xに投稿されていた写真をお借りして振り返ろうと思います。

私が翻訳や監訳に関わった3冊(「SLO サービスレベル目標」「オブザーバビリティ・エンジニアリング」「SREの探求」)の途中率が高いので、読了率を上げる企画をなにかしたい!(アイデア募集中)

セッションの合間に流れるこの映像とかセッション開始時のティザー動画とか、めちゃくちゃかっこよく作られてて、ただ感心していました。

わざわざ広島からいらして運営にも参加してくださっていた @okash1n さんの「ワキヤコーヒー」さんのコーヒーは美味しかった!

オライリー・ジャパンさんのブースはありがたいことに私の翻訳、監訳に関わった書籍(上記の3冊に加えて「Go言語による並行処理」も)を販売してくださっていました。こういうところで自分の本を紹介できるのは嬉しい!

ホールウェイトラックも大いに盛り上がって、新しいイベントの企画とかその場で決まっちゃう感じがコミュニティの勢いを感じました!写真に写っている逆井さんにも登壇してもらうOpenTelemetryのイベントが今月半ばにあります!

opentelemetry.connpass.com

Topotalのインシデント管理ツールのWaroomのデモを見せてもらいました。オープンベータが出たときに触らせてもらったときから、すごく進化していてこれからどうなっていくのか楽しみです!

おわりに

また来年も開催されることを願っています。今年の後半は自分はだいぶSLOを中心にメタな登壇が多かったので、来年は少し技術を深ぼった内容の登壇にまた戻していきたいという気持ちになったカンファレンスでした。運営の皆様、お疲れ様でした!

関連リンク

togetter.com

SRE NEXT 2020で「サイト信頼性エンジニアリングの原則」というタイトルで登壇してきました #srenext

はじめに

こんにちは、Stackdriver担当者です。先週の土曜日に豊洲フロントで開催されたSRE NEXT 2020に登壇者として参加してきました。

sre-next.dev

どのセッションもすでにSREプラクティスを実践して試されているお話を聞けて、DevOpsの実践方法としてのSRE(Site Reliability Engineering)の広がりを感じられる素晴らしいカンファレンスだったと思います。

自分のセッションについて

sre-next.dev

自分のセッションは「サイト信頼性エンジニアリングの原則」というタイトルでの発表でした。資料は諸事情で一般公開できないのですが、主旨は概ね「SRE サイトリライアビリティエンジニアリング」(通称: SRE本)の書かれていることの抜粋とサマリーだったので、すでに実践されている方にとっては振り返りのような内容になってしまったかと思います。セッションスライド自体の公開を避けているのは、話した内容を伴わずにスライドに書かれている文言だけを切り取られると解釈によってはネガティブにも捉えられないなと思っていることによります。よって、このエントリーでお伝えしたかったことを再度簡単に触れていこうと思います。

なおSREに関するトピックをすべて触れていくとSRE本でもカバーしきれていないほどなので、これがすべてだとは決して思わないでいただきたいです。

単純性と一貫性

信頼性の担保とシステムの改善の両立のためには、変更はすばやく導入し、障害はすばやく戻すことが欠かせませんが、そのために単純性と一貫性が重要な役割を果たすという紹介をしました。

複雑性には必要な複雑性と不必要な複雑性が存在しますが、たとえば複雑性の例としてはpolyglotなマイクロサービスが挙げられるでしょう。プロジェクトにおけるプログラミング言語の選択というのは単にアプリケーションロジックだけではなく、それを実行するランタイムやそれをアプリケーションとしてバンドルするためのビルドシステム、依存するライブラリの更新など、実際にシステムにデプロイするまでに多くのツールやプロセスを必要とします。(以下エコシステムと呼ぶ)また採用やトレーニングといった人的なプロセスにも関わってきます。

プログラミング言語1つにつきそうしたエコシステムが伴うため、扱うプログラミング言語の数が増え扱うものが増えれば、管理にかかる負荷も増大します。プログラミング言語、設定管理方法や扱うOSの標準化を行うことで、SREが管理する技術範囲が限定され、かわりにより深い改善が行えるようになることでしょう。

どこまでを標準とするかは、導入する複雑さが得られるメリットほどの価値があるものかを検討する必要があると思います。すべてのユースケースではベストにならなかったとしても、1つを選ぶことで全体として管理が楽になることは間違いないでしょう。

モニタリングとアラート

モニタリングに関しては、1つの対象に対して異なる方法でのテストをおこなえるのであれば行ったほうが正確な状況を把握しやすい、という話をしました。よくある例はホワイトボックスモニタリングとブラックボックスモニタリングで、前者はシステムの内部情報の点検、後者は外形監視などが挙げられます。

モニタリングを行う理由はシステムの状態の把握と、障害の事前や事後のアクションを行うための通知(ページング、呼び出し)の設定などですが、ページングの設定を行う際の思いやりのなさにより、結果呼び出される側が疲弊することがあります。たとえば次のような場合はページングではなく、より緩い対応で済むはずです。

  • 冗長構成でクラスタ or マシンが1台だけ落ちた
  • 非常に長時間をかけてディスク使用量が95%になった
  • 仮想マシンが基盤クラスターが原因で落ちた
  • 対応しようのない障害

上で「より緩い対応」と触れましたが、たとえばアラート機構にはページングも含めて次のようなものが挙げられます。

  • ページ(呼び出し): オンコール対応
  • チケット/バグ/ダッシュボード: 当直対応、割り込み
  • ログ: 原因調査
  • メール: 後述するが極力使わない

オンコール対応というのは「担当者が寝ていても叩き起こして対応してもらう」ようなレベルのものを指します。SREで重要なのは一部の数字ではなく、ユーザー体験にどれくらい悪影響を与えているかなので、たとえば上記の冗長構成でマシンが1つ落ちたような場合は、引き続きサービスがリクエストを捌けているなら、業務時間中に落ちたマシンの復旧とそ原因を究明すれば良い話なので、この場合はチケットに登録しておけば良いでしょう。

どのレベルでの対応にするか判断のためにも外部プローブ(外部からのDNSクエリやヘッドレスブラウザなどを使ってTTFBの計測など)などのデータをあわせて計測するのが良いでしょう。

で、アラート機構としてメールを推奨しない理由ですが、運用方法によっては解決できる点もありますが、次のような理由が挙げられます。

  • 対応の様子を追跡できない
  • 障害に対するオーナーが不明
  • SN比
  • 人間の警戒に依存

cronや様々なシステムで簡単に設定できるのでメール通知を設定しがちですが、メールは傍観者効果が発生しやすかったり、なまじ簡単に設定できるためにノイズが多すぎて無視されやすくなったりします。inboxが他の業務メールと共通なことも多々あるため、注意深くフィルターしたり携帯の通知の設定も適切に行われなければいけません。こうしたものを運用で改善するよりは、適切なツールを用いたほうが効率が良いでしょう。

モニタリングとアラートに関しては当日 @larufa1 さんがVoyage Groupでの体験を共有してくださっていました。

speakerdeck.com

自動化

SREはトイルをできる限りエンジニアリングで排除するという姿勢で行うものなので自動化は常につきまといます。

たとえば複数のホストに手動でSSHを行って設定しているような処理があれば

pssh -H HOST1 -H HOST2 -H HOST3 "
  apt-get upgrade &&
  /usr/local/bin/make-new-widget.sh &&
  [ -f /etc/widget.cfg ] && echo Success || echo FAIL "

という形で自動化の第一歩が進められます。さらに推し進めていくと例えばGCPなどでは

gcloud compute instances create foo1 \
    --metadata-from-file startup-script=mysite/install-puppet.sh

このような形でスクリプト内に必要な処理を埋め込むことで抽象化のレイヤーを上げていけます。プログラムを書くときと同様に抽象化のレイヤーが上がることでより多くの処理をプログラムに任せられます。

ステートフル vs ステートレス

ステートフルなサービスは名前のとおり「状態」を持つサービスのことですが、「状態」を非常に簡単に定義すると「再生成が難しい一意なデータ」と言えると思います。障害が起きた場合はその「再生成が難しい一意なデータ」を復旧させなければならなくなり、それに備えて専用のバックアップ/リストア機構、また専用のモニタリング機構、アーキテクチャが必要となります。

たとえばMySQLクラスターにおいて

  • マスター(読み書き可): 1台
  • レプリカ(読み込み専用): 複数台

という構成があった場合、マスターノードには専用のモニタリング機構やバックアップ機構が必要になるでしょう。これらははじめのほうで触れた複雑性の議論にも関わってきますが、ステートフルなサービスがシステム内に増えれば増えるほどこうした機構が増えるので、なるべくステートレスなものに置き換えていけるような設計が肝心です。

情報の信頼先

あるシステムの特定の情報を得るために複数の情報ソースがあることは珍しくありません。その場合何を正とするかで判断が変わってきます。時計が1つなら何時か即答できますが、時計が2つだとどちらか正しい時刻か判断できません。

なのでたとえばシステムの状態を把握したいときはなるべく1つの情報源に頼るようにし、それが本当に判断するための情報源として適切か、設計時に判断したいところです。たとえばプロダクションサーバーと退役したサーバーが同居している系から返されるトラフィックのHTTP 2xx系の割合を調べたいときは、一番上流のSLBの層で得られた情報で判断するのが正しいでしょう。

SLOとエラーバジェット

SREで真っ先に出てくるのがSLOとエラーバジェットの概念です。

SLOで可用性99.5%を設定し、それを達成した場合に、これは「100%を0.5%達成できなかった」とみなすのではなく、文字通り「99.5%の可用性を達成した」と同時に「0.5%分システム改善のための余裕がある」という状態であるとみなすことが肝心です。

この0.5%を使ってたとえば

を試せます。可用性の話で言えば、0.5%であれば1ヶ月間に3.6時間が確保できます。たとえばカナリアリリースを実施している場合、これまでそれが起因のダウンタイムがなかったのであれば、すべての変更を canary → stable を経てローンチするのではなく、変更内容の大小やフラグの重要度に応じてカナリアの期間を短くする、あるいはカナリアをスキップするといった選択も取れるかもれません。

3.6時間は与えられた猶予なので、現実としてSLOよりも高い可用性を実現できてしまったとしても、無為にSLOを厳しくしてしまうのではなく、エラーバジェットをより迅速あるいはより堅牢な仕組みの導入のために利用するのが健全でしょう。

逆に厳しいSLOを設定してしまうと、アジリティが確保できなくなる可能性が高くなります。また当然ながらコストも高くなります。(一般的に 9 が一つ増えるごとに倍以上のコストがかかると言われている。)逆に言えばSLO 100%は「動かしたが最後二度と止められない」ということですから、通常のサービス運用ではまず必要のない値です。ユーザーに与える影響を加味しながら、なるべく余裕が得られる値に設定にできるよう、設定値に関して継続的な振り返りが必要です。

補足ですが、SLOの設定やその運用に関しては @chaspy さんが当日話されていました。

speakerdeck.com

テストとロールバック

SREを行う上で「システムは必ず落ちるものだ」という考え方を持つことは多くの場面で姿勢を正しくしてくれます。その一環でたとえばテストやロールバックを正しく行うことでシステム障害からの復旧を迅速に行ったり、障害範囲を限定できます。

  • 漸進的なロールアウト
  • 変更導入後の検証
  • 準備済みのロールバック

たとえばカナリアリリースは漸進的なロールアウトの例で、一部のクラスタ、各クラスタの1台だけ、など、限られた場所にだけ変更を導入して影響範囲を限定してリアルなデータで検証を行えます。問題があれば事前定義されたrunbookを実行してロールバックします。エラーバジェットは有効に使わないといけないので、SLOに影響を与えそうなエラーを発見したらすぐにロールバックして、原因究明のためにエラーバジェットを消費しないようにします。

障害耐性

エラーバジェットの消費として一番もったいないのは障害の復旧作業にそれを充てることです。したがって極力障害が起きないような対策を 打つことでより有意義にエラーバジェットを利用できるようになり(=システムの前向きな改善に使え)ます。

たとえばあるサービスをプッシュしたら空の設定ファイルを作ってしまってしまって、それが原因でサービスの再起動後にサービスが落ちてしまったという障害があった場合に、どうやって障害耐性をつけたらよいでしょうか。

いくつかの改善策が考えられますが、たとえば

  • Gracefulな退役: 新しい設定が読み込めない場合は以前の設定を使い続ける
  • 差分による予防: 設定の差分が単純に20%以上ある場合、あるいは特定のフィールドに変更があった場合には特定の検証プロセスを通るまでプロダクションにプッシュしない

などが挙げられます。

ポストモーテム

SREのおいてポストモーテムは最も重要と言える文化かもしれません。先程も書いたとおり「システムは必ず落ちるもの」と想定し、問題があった場合には人間ではなく「プロセスと技術」に注目して、「プロセスと技術」で改善を行うために振り返りを行います。決して人間を非難しないことが重要です。

たとえば次のようなポストモーテムがあったとします。

  • 事象: グローバルDNS障害
  • 原因: エンジニアが named.conf をtypoして保存してした。それをグローバルにプッシュしてBINDを再起動した。
  • アクションアイテム: エンジニアが次からはもっと注意する。エンジニアはリスクが高い変更を金曜日には行わない。

ここで問題なのは、原因をエンジニアとしていることと、アクションアイテムを人間に依存していることです。また「もっと」のような具体性を伴わない表現がされていることも問題です。原因はtypoをしたエンジニアでなく、typoがある設定ファイルがテストもなしにグローバルに展開されてしまうような仕組みです。またアクションアイテムも、それをどうプロセスやエンジニアリングで解決するかが書いてありません。これは次のように書き直せるでしょう。

  • 事象: グローバルDNS障害
  • 原因: 不正な named.conf がテストなしにすべてのBINDホストにプッシュされた。
  • アクションアイテム
    • 予防(こうした障害の再発をポジティブに防ぐにはどうしたらいいか)
      • named.conf をデータベースから読み込む
      • プッシュと再起動をスクリプト化して、スクリプトに安全確認を組み込む
    • 検出(同様の障害を正確に検出するまでの時間を減らすにはどうすべきか)
      • 監視の頻度を改善する
      • 監視対象の変更
      • ページをより速く行う
    • 緩和(次回この種の障害が起きたときの深刻度や影響度の%を減らすにはどうしたらいいか)
      • リロードして、再起動しない
      • 1つのサーバー(カナリア)だけ他のサーバーよりも速くプッシュするようにスクリプトを変える
      • DNSの機能を分割する(例: 内部 vs 外部、権威 vs 再帰
    • 修正(次回障害が検出されたときにどうすればより速く回復できるか)
      • オンコールプレイブックに起こすべきアクションを追加する
      • すばやくロールバックできるように各ホストの直前の設定を保存しておく

おわりに

こうした内容をお話しましたが、すべてを一度に導入しなければいけないというわけではなく、また何かを行うことでSREという認定が受けられるとかそういうたぐいのものでないので、システムの信頼性を高めるためにこうしたベストプラクティスを少しずつ導入していくのが良いのではないかなと思いました。しかし、とはいえ1つ、これがなければSREではないというものを挙げるとすれば、それはシステムのユーザーに対して信頼性を維持し高めることに貢献しているかどうか、ではないでしょうか。当たり前ですが、そうでなければ Site Reliability Engineering とは呼べないと思います。

SREのプラクティスであるSLOの設定というのはそういう意味では非常に妥当だと考えています。営利企業がITシステムを活用したサービスを提供している場合、会社の成功には必ずユーザーの満足度というのが存在し、経営の中では収益に紐付いた指標(KPI)とその目標値を設定しています。その会社の収益を支えるものがITシステムなのであれば、それらのKPIはSLIと紐づきますし、KPIの目標値はSLOと紐づくはずです。

今回SRE NEXTでは多くの企業がすでにSLOベースの運用をされていて、それらの事例を知ることができ大変有意義だったと感じています。ぜひ次回が開催されることを願うとともに、今後ますますSREのプラクティスが普及し、発展していくことを願っています。

参照

landing.google.com

このサイトに原文ではありますが、”Site Reliability Engineering” と "The Site Reliability Workbook" が無償で公開されていますので、気になる方はぜひ読んでみてください。特に両者ともに気になるトピックだけ拾い読みするだけでも問題ないと思います。

また書籍以外にもSLOのワークショップなどのコンテンツがありますので、こちらもぜひ見てみてください。

なおご存知の通り、"Site Reliability Engineering" は日本語訳版が出ていますし、また "The Site Reliability Workbook" に関しても現在日本語訳版が発刊に向けて最終段階だと聞いております。

次世代Webカンファレンスに参加しました #nextwebconf

はじめに

こんにちは、Go界のエビスビールです。今日、法政大学外壕校舎で開催された次世代Webカンファレンスに聴衆として参加してきました。

以下自分のメモです。

server_perf (10:00-11:00) #405

メモ

  • パフォーマンスの勘所としてクライアント側の変化があると思う
    • @mirakui: スマホのWebとアプリの比率があがってる
    • @xcir: デスクトップからのリクエストは減って、スマホのネイティブアプリでの処理が増えている。APIアクセスが主。
    • @cubicdaiya: Webからのリクエストが1割もなくて、ほぼネイティブクライアントからのリクエスト。15000qps。
    • APIリクエストが主になったことによりJSONのやり取りだけの単純なものになったが、リクエスト数は増えた。
  • 高速化しにくい部分をどうパフォーマンスさせる?
    • @cubicdaiya: 非同期処理できるところはできるだけやっている。APIサーバになるべく負荷をかけさせない。
      • キャッシュの作成、DBのインデックス作成など。IOの処理を上げる場合には札束で殴るしかない。
    • @xcir: 自分でコード書いていないことが多いので改善しづらい。仕様を変えることで改善するしかない。
  • キャッシュ戦略
    • @xcir: キャッシュ生成コスト vs 閲覧数。どのレイヤでキャッシュを作るか。
    • @cubicdaiya: 各レイヤで共通の部分で使うデータをキャッシュする。(
  • 文化
    • @mirakui: ログインしてるとキャッシュしない。(A/Bテストの妨げになる)
  • 言語
    • @mirakui: Rubyは運用しやすい言語である、と思うことにしている。
    • @xcir: PHPにしてる。理由付けができればなんでもいいと思う。
    • @cubicdaiya: GoとかCとか。ずい分前からCPU1コアでの性能は頭打ちでマルチコアで処理しようとしているので、それに対応した言語が良い。
    • @cubicdaiya: APIはルーティングだければできればいいと思っているので、軽量な物を使っている。
    • @xcir: キャッシュできないものをどうやって処理するか
  • ミドルウェア
    • @xcir: VernishでESIやってます。ngx_small_light使ってます。
    • @cubicdaiya: nginxではモジュール書いたりとか、Luaやmrubyで簡単なアプリケーションサーバを書いてる。
    • @cubicdaiya: 私はngx_small_light使ってません。あれはApacheのmod_small_lightの移植で、Apacheはrequest per childで制限できるのでImageMagicが多少リークしてもメモリ死しない安心感がある。nginxはそれがない。
    • @cubicdaiya: nginxはマルチプロセスシングルスレッドなので、できるだけノンブロッキングにしないと死ぬ。
  • 海外展開
    • @cubicdaiya: 国土の広さが関係することが結構ある。TLSハンドシェイクを早くする、証明書の失効確認を早くする
    • @xcir: 「AWSさんよろしくお願いします」
    • @mirakui: 「us-eastに置いておけば大体どこからでも等しく遅い」
    • @mirakui: 海外はネットワークがすぐに切れる。大雨でネットが断線とか。
      • @xcir: ベトナムではカジュアルに海底ケーブルが切れる
      • @cubicdaiya: 東南アジアだとアプリのサイズが大きいと全然ダウンロードされない。
      • @mirakui: Opera Turboはすごい。勝手に画像を縮小。JSを展開。なぜか動いている。開発者はデバッグ地獄。
  • CDN
    • @xcir: 使ってます。
    • @cubicdaiya: 使ってるし昔は自社でCDNを使ってる会社にいた。画像など。
    • @mirakuri: 次世代CDNが来ると思う。CDN内で処理を完結させる。(画像変換や動的キャッシングなど)
  • 録画はあとで公開されます。

話題に出たもの

ui/ux (11:10-12:30) #407

メモ

  • このセッションの「ui/ux」という表記について
    • @kotarok: 僕は「UI/UXと言うな派」だったんだけど皆がどう思うかが気になる。
      • UIというのは表層にあるものであって、直接ユーザが直接触ることができるもの。
      • UXはユーザが感じた体験。直接設計できるものではないと考えている。
    • @manabuueno: 言葉の定義=プロトコル。相手に伝わるのであれば良いかなと。
      • 例:UX/UI, UI/UX, UI+UX, UIUX
      • デザインする対象は個人的には「UI」でいいかなと思っている。
    • @yukio_andoh: 僕は言ってもいい派。
      • ただし一緒に働くなら、それぞれをどういう意味で使っているかをちゃんと見極める必要がある。
      • 唯一気になるのは「求人の時にUI/UXデザイナー募集」という文言。別の仕事だからね。
    • @theodoorjp: 僕は転向派。「いうな派」→「いいよ派」
      • 「ユーザ体験」という言葉が表すものが難しい。
      • エモーショナルデザイン
  • 「ユーザ」とは
    • @yukio_andoh: 「使う前の人」「いつも使ってる人」「使ったけどいまは休眠してる人」全部ユーザ。
      • エモーショナル・デザインの表紙のレモン絞り器はとても美しいけど使ってみるととても使いづらい。使いづらいというのも「経験」
    • @manabuueno: 「ユーザ」っていうのがいま流行っている。(eg. 山手線ユーザ)
      • コンピュータ用語が日常的に使われるようになった。(ユーザ、フラグ、デフォルト)
      • 以前は「ヒューマン」という言葉が使われていた。アメリカでは顧客というぐらいの意味合いで使っているのだろう。
  • 現世代と旧世代の境目は?
    • @theodoorjp: iPhoneの登場によって変わったと思う
    • @yukio_andoh: 直接的なタイミングはiPhoneの登場だと思う
      • 緩やかな行こうとしてはURLが意味を持たなくなってしまった
    • @manabuueno: 若い社員は自分の会社のサイトすらググってる
    • @yukio_andoh: 10代の人間はもうブックマークすら使わない
    • @manabuueno: 自分が感じる変化のタイミングとしては「iPhoneの登場」「APIを公開し始めたころ」
      • 自分の感覚で「ブラウザ」と「ウェブ」が対応してる時点で旧世代
      • 今はウェブと言ってもクライアントはネイティブで持っている
    • @kotarok: 「ハッカーと画家」が書かれたころはネイティブアプリを更新するのが難しい前提でHTML UIを押している。
      • いまはGoogle Play StoreやAppStoreがあるおかげでそれは解消されている。
      • そういう意味で逆行している気がする
  • いまあるネイティブとHTMLの揺り戻しを踏まえて次は何が来るか
    • @theodoorjp: スマホのネイティブアプリのUIはある程度もう定跡化してしまっている。あれが最高系だとは思わない。
      • Google NowやSiriをはじめとする人工知能的なインターフェースは新しいなと感じている。
      • Facebookで個別コメントができるようになっているのはヘビーユーザーだけ。
    • @yukio_andoh: 理想形は楽器のように「だれでも簡単に音を出せるけど、使いこなすのは難しい」
      • 個々人でUIが異なると操作を伝えづらい
    • @kotarok: インターフェースの学習曲線というものを考えないといけないと思う
  • ハイパーリンクハイパーテキストという大発明
    • @kotarok: インターフェースとコンテンツの同化
    • @manabuueno: 「文字が押せる」というのはわかるが課題がある。
      • 対象の文字の長さが短いと押せる領域が減る=重要でないように見える
    • @kotarok: 現世代Webは文章を起点にしているのでリンクは動画や音声といったコンテンツに対してのポインターとして無理がないか
  • 文章に依らないウェブ性
    • @yukio_andoh: リンクを自分で辿らないといけない、というのが次世代ではなくなるのではないか。
      • YouTubeのおすすめのようにどんどん提示されてくるもの
    • @theodoorjp: 「リンク」はいま「人間が読めるもの」と「機械だけが読めるもの」が半々ぐらいになっている気がする。
      • もうちょっとルール付けが合っても良いと思う。
    • @yukio_andoh: rendorman formatやMIDIのような30年持つ規格を定義するというのは大変なこと。
  • URLの軽視
    • @kotarok: あるコンテンツの塊に対して一意なURLを振ることをもっと考えたほうがいいのでは
    • @manabuueno: 1つのURLに対して動的にコンテンツが変化するのは?
    • @manabuueno: 製作者側が良いと思うものを1つのURLに対応させればよいのではないか
  • いまのインターフェース
    • @kotarok: かつてiPhoneが出た頃にすべてHTML5で行くとJobsが宣言した。Facebook
    • @manabuueno: いまこの会場にいる人は何ができて何ができないか知ってるのでほっといていい。そうじゃない人を考えていかないといけない。
      • ネイティブのアプリみたいに「アイコンを押すことですぐにTwitterが使える」という状態をユーザが近く感じるのではないか。
      • そういう意味でブラウザがメインでなくなっているいまの状況は「半分ウェブが死んでるのでは」
    • @theodoorjp: 次世代はブラウザがメインでないのだとしても、いまの通信プロトコルは使われ続けるのだと思う。
    • @manabuueno: 我々が「次世代Web」のようなテーマで語るときは「人類愛」のようなテーマを感じる
  • コンテンツの保存
    • @yukio_andoh: 残そうと思うものはほっといても残る。そうでないものをどう残すか。
      • 本はずーっと残っていく。どうでもいい日々の発言こそ残したい。
    • @theodoorjp: 僕は逆で忘れたい。それをどう設計するか。
    • @manabuueno: たかだか5年前のウェブページが見れなかったりする。
      • 自分とコンテンツの距離が保存される限りにおいてはすべて保存すべきだと思う。
  • さいごに
    • @manabuueno: iPhoneなんだよ。Appleは神。
      • iPhoneが出る前にまったく議論されなかったマルチタッチの話が出た直後に活発になされた。
    • @theodoorjp: いまのスマートフォンのUIから脱却していくんだと思う。
    • @yukio_andoh: スマートフォンの登場によって、「使いやすい」「使いにくい」という感覚が研ぎ澄まされて、評価がなされ、みんながUXの人になっていく。
    • @manabuueno: ウェブの多様性多態性があるので、次世代も大丈夫。

話題に出たもの

webrtc (13:30-14:30) #407

メモ

  • WebRTCってぶっちゃけいまどうなの
    • @tonofo: ひとことで言うと割と辛い。過去の資産を無理やり使ってる。非常に多くの知識を必要とする。
    • @voluntas: 割と辛い。
    • @iwashi86: 本当に辛い。よくあるのは「つながらない」「SDKほしい」。RFCの山。
  • なぜつながらないか
    • @voluntas: ChromeFirefoxとEdgeで全部仕様が違う。さらに6週間でブラウザが自動更新されて死ぬ。
      • クライアント側で頑張ってやる場合はJSで頑張るしかない。
  • 辛い話
    • @tonofo: SDPとCandidateが読めないと絶対運用できない。運用環境で何が起きてるかはCandidateしかない。
      • @voluntas: ブラウザの世界にテレビ会議SIPでやってたことが降りてきただけ。
      • @tonofo: 繋がる最強のやつはLTE回線。社内ネットワークは結構厳しい。
      • @voluntas: 企業内のネットワークはUDPに関してかなり厳しい制限がある。TURNでやる場合は中央サーバが必要になってしまう。
        • NAT超えのためにTURNやSTUNをちゃんと理解していないといけない。
    • @voluntas: 利権に合わせていくしかない。
    • @iwashi86: 現状Firefox以外は独自仕様。
  • ORTC
    • @iwashi86: 期待している。
    • @voluntas: 期待してない。Skypeのために策定しているようにしか見えないので1.0の間は傍観。
    • @tonofo: どこまで仕様通りにできるようになるのかは疑問。
  • WebRTC 1.0の仕様がそろそろ決まろうとしている
    • @voluntas: WebRTCの残念なところとして1つの解像度の映像しか送れない。
      • 同時サイマルキャストが実装されないと厳しい。多人数テレビ会議
      • Chrome実装済みだが、オリジナル実装なので独特なSDPを書かないといけない。
      • SFUで辛いのは暗号化が重い。
    • @tonofo: GPUを使ったMCUなどハードウェア側で頑張らないと辛い。
    • @voluntas: 「WebRTC = RTCP何じゃないかと思ってる」
    • @tonofo:
  • テストどうするんですか、あるいはクライアントの話
    • @tonofo: 社内であればChromeのバージョンもコントロール
      • Electronはとても良い
      • クライアントのバージョンはネイティブで固定できる。ただしOSバージョンは固定できない。
    • @voluntas: Firefoxは仕様にすぐに追従するし素晴らしい。Chromeはつらい。
  • 組み込み
    • @tonofo: RasPi2超速い。H.264のハードウェアエンコーダ積んでる。
    • @voluntas: エンコーディングだけでCPUパワー持ってく。
  • 使っていく話
    • @voluntas: プラットフォーマーは辛い。運用をするのが辛い。
      • ただそれに乗っかればプラットフォーマーが各種スタックを用意してくれているのでそれが良い戦略。
    • @iwashi86: 正直付加価値としてWebRTCを使っていくというのが正攻法。
      • これまで他のことでやっていたものを置き換える、補強するという感じ。
    • @tonofo: SDK側が辛い部分を吸収するので、SDK使ってる分にはある程度楽。
    • @voluntas: 動画や音声みたいな簡単に見えるものの裏側にある困難な部分をいかにプラットフォーマーが吸収するか。
    • @tonofo: WebRTCってこれまでのウェブの形と違う形になっているので面白いと思う。
  • これからの想定ユースケース
    • @voluntas: たとえばSFC/MCU前提でやってみてだめだったらP2Pに落ちるとか
    • @tonofo: Facebookチャットも一度TURNで繋いでから様子をうかがってP2Pに落としたりしている
    • @iwashi86: SVCについても触れたい
    • @voluntas: MCUではSVCのメリットないんで、結局SFU頑張れっていうことになる。
  • あらためてWebRTC 1.0が12月までに決まる
    • @voluntas: サイマルキャストが入って仕様が落ち着けば結構期待できる
    • @iwashi86: 海外ではWebRTC系のビジネスが結構活発。資金調達も結構大型のものもある。
      • 日本でも遅れてブームが来ればいいな。

話題に出たもの

identity (14:40-16:00) #407

メモ

  • これからRP(Relying Party)は何を使ったらいいのか
    • @_nat: OpenID Connectに対応していればOpenID Connectのライブラリだけでいけるようになるはず
    • @nov: TwitterはずっとOAuth1.0で、更新の兆しなし。
  • リスク情報共有
    • @_nat: あるアカウントがある1つのサービスでアカウントテイクオーバーされた場合に他のサービスに即座に知らせて2次被害を防ぐ
      • 他のサービスにあるアカウントが所属している
  • OAuth PKCE
    • @_nat: 後方互換だし、IdPもRPも全部コレ使ってたらいいんじゃないの
    • @nov: 最終的に悪意の第三者にアクセストークンが渡らないように作った仕組みがPKCE
    • @_nat: ランダム文字列をチャレンジ時、それのハッシュをベリファイ時に送ることで、
  • Proof of posession token
    • @_nat: interpolやFBIの溜飲を下げるためには一段セキュリティの高い認証方法が必要
      • Bearar tokenは持ってったらすぐに使えるトークン(例: JRの切符)
      • Proof of posession tokenは使用時に所有者の確認を行うトークン(例: 飛行機のチケット)
  • @_nat: 「パスワードは公害」「パスワード税をかけたほうがいい」「総量規制をかけたほうがいい」
    • なぜパスワードでやるかといえば「安く導入できるから」
    • 税金と両壁をなすのは「保険」がある。情報漏えいした場合にどれくらい補填できるか。
    • パスワードが悪いんじゃなくて、実際にはヘボいパスワードシステムが悪い。
      • Googleはパスワードシステムに見えて他の要素も含めて判断している。300人チームでやっている。それだけのコストを掛けてやりたいのか。
  • ログインやログアウトってなんで必要なんだっけ
    • @nov: authenticatedされた状態が必要なだけだよね
    • @_nat: ローカルデバイス、特に個人デバイスであれば一度認証したらずっと使えていればいいはずだしそうあるべき
    • @mad_p: キオスク端末の場合は個人端末の認証情報を渡せる仕組みがあればいいだけのはず
  • 認証と識別
  • ユースケース毎のリスク評価

話題に出たもの

monitoring (16:10-17:30) #407

メモ

  • 監視とは何か
    • @mikeda: 稼働率を上げるもの。
    • @fujiwara: 落ちないようにするため。それは現在も将来も含めて。(キャパシティプランニングなど)
    • @songmu: 稼働率を最適にするだけでなく、キャパシティを最適にする
      • テストやコンフィグもコードになっていったのと同じように、監視もコードになっていくんだと思う。
    • @rrreeeyyy: サービス提供者側が提供されるべきレベルを保つためのもの
  • チェック監視とメトリック監視
    • @songmu: 最近の傾向としてメトリック監視が増えている
    • @mikeda: 昔に比べると細かい値を取り始めた
    • @fujiwara: チェック監視とメトリック監視は各々役割が違う気がする
    • @mikeda: メトリック監視で割といけることが増えてきたかなという印象
  • 監視の間隔
    • @fujiwara: 数日間は1秒単位のデータを取得したい。
      • 1分間隔だとたまに起きる短い間隔でのスパイクを拾えない。
  • 監視難しい問題
    • @rrreeeyyy: 言語によってどこを監視していいかわからない事が多い。
    • @mikeda: 監視テンプレートをもっと公開してほしい
    • @songmu: Chefが良かったのは個々人が秘伝のシェルスクリプトでやってたことが公開されてシェアされた
      • 管理もそういうふうになればいいな
  • アプリケーションエンジニアとインフラエンジニアの棲み分け
    • @rrreeeyyy: お客様によってはアラートごとに連絡ほしいという人もいれば、対応策まで考えてから連絡してほしいという人もいる
    • @fujiwara: アプリケーションエンジニアにもアラートを感じてもわらないとサービスはよくできないと思う
      • ただ一応段階をわけてアラートを出している
  • どういうチームを作ればよいのか
    • @mikeda: 少人数で24時間の監視体制を回すのは現実的ではないのに、それをやってるのがこの業界。
    • @fujiwara: 特殊なチームメンバーの状況に依存すべきではない。どうしても対応できないならMSPなどに任せましょう。
  • 監視周辺技術
    • @songmu: MackerelではGraphiteを使っている
    • @mikeda: オープンソースを使ってる人が多いのでZabbix使ってます
    • @rrreeeyyy: これからは監視とクラスタマネージメントはセットとなるのでConsulには注目してる。
    • @fujiwara: 時系列データベースどれつかったらいいですか
    • @songmu: Graphiteかと。datadog結構すごいと思う。
  • fluentdが与えた衝撃
    • @mikeda: アレのおかげで各社でログをどんどんあつめてグラフ化するという流れができた気がする
    • @fujiwara: どんどんログの処理がストリーム処理に近づいている
  • SaaS使ってる?
    • @mikeda: 一部datadog使ってるけど大した規模ではないです。(金銭的な理由)
    • @rrreeeyyy: MSPという事業の性質上、当然自前でやっているが、
    • @fujiwara: いまいまはZabbixで全部やってるけどいずれ外出ししたい。監視の監視までしたくない。
    • @mikeda: 他社の監視の事例を見てると、zabbixやnew relicが多いが、いまはdatadogやmackerelなどがだいぶ増えている。
  • 原因特定・未来予測
    • @mikeda: 未来予測系はまだやってない
    • @rrreeeyyy: あんまりやってない。ただやりたいと思う。
    • @fujiwara: アラート上げるときに0 or 1ではなくて「何か違うよ」を入れたい。
    • @mikeda: 未来予測や任意の異常値の検出などは難しいかもしれないけど、検知の自動化はしたい。
  • RDSのようなサービスを使うことによって監視は楽になったか
    • @rrreeeyyy: 管理は楽になったが、監視がどれくらい楽になったかはわからない
    • @fujiwara: クラウドベンダー内でブラックボックスにされたものは何も見れないのが良し悪し
    • @songmu: 自動修復をしてくれるおかげで監視をする部分が減ってるというのはある
  • 繋ぎっぱなしのサービスが増えてきた
    • @songmu: WebSocketやHTTP/2などが出てくればますます接続に関しての監視は難しい
    • @rrreeeyyy: 実際難しくなっていているが、どうするかは考えていかないといけない
    • @fujiwara: そういう場合はアプリケーション側がログを出してあげないといけない
    • @songmu: アプリケーション側だけでなくミドルウェアも考慮してあげないといけない
  • これからの監視
    • @mikeda: 目の前の監視を続けていきます
    • @rrreeeyyy: 次世代には監視業務はなくなればいいなと思うが当分なくならないので良くしていきましょう
    • @fujiwara: 要するに夜寝たいので、監視システムを育てていきましょう
    • @songmu: インフラエンジニアがなくなると言われた時期もあったが、なくなるどころか複雑化している。

話題に出たもの

感想

とにかくまず運営および登壇者の皆様お疲れ様でした。参加率はいかほどだったかわかりませんが、あれだけの人数を登壇者だけでつつがなくさばいたというのは本当にすごいです。事前打ち合わせなど何回ぐらいあったんでしょうか。いずれにせよ、カンファレンスの運営が次世代な感じでした。

内容に関して言うと、自分が想像していた「次世代」よりはずっと手前側の話になっていたような気がしますが、それもあれだけの参加者がいて聴衆に気を遣ってもらうとどうしてもそうなってしまうのかなとも思います。現に自分がIdentityのセッションに参加した時はRFCやISOのドキュメント番号がどんどん出てきて、話を聞きながらそれを追うのに必死という状況で、現状把握ですら大変なのに、それ以降の話となったら追いつけなかったと思います。

今後開催されるかはわかりませんが、久々に自分のフィールドにない話題をその道のプロから聞ける良い機会でした。一参加者としてとても楽しかったです。ありがとうございました。

Goオールスターズでpackage managementについて話してきました

はじめに

こんにちは。Gopherファンクラブ会員番号3番です。去る、10月11日にdots.さん主催の「Goオールスターズ」で登壇してGoでのpackage managementについて話してきました。

ツイートのまとめや他の登壇者の方の資料はこちらです。

資料

資料はこちらです。

大体の流れはこんな感じです。

  • 当面はGo本体では当面は「ソースコードの明示性」「下位互換性」を保つためにgoツールでパッケージのバージョン管理をすることはしない
  • 代わりにGo1.5ではvendoringを「実験的に」サポート
  • すでにGo 1.4でもgb, godepなどvendoringをサポートする3rd partyツールがあるが、ディレクトリの切り方とか見るとgbが筋が良さそう

真のオールスターズ、あるいは #mattncon について

今回は「Goオールスターズ」というタイトルのイベントで登壇したわけですが、大変こっ恥ずかしい思いで登壇したわけです。というか、 @moriyoshit が一般参加で聞いている場で発表するというのは大変つらい。

で、ビアバッシュのあとで登壇者+αで、都内のエンジニアが大変お世話になっている渋谷の北海道で2次会をしたわですが、mattnさんが来てない時点で永遠に「オールスターズ」は開催されないという結論にいたり、 #mattncon 開催の機運が高まりました。

自分は途中で2次会を抜けてしまいましたが、その後もTwitter上では #mattncon について熱いツイートがされていたので、皆のテンションは高いままだったのでしょう。実現のために個々人に何ができるか考えていくことが大事だなと思いました。

Go Conference 2014 autumn を終えて #gocon

はじめに

こんにちは、Go界のカール・ライナーです。2013年の春から数えて4回目のGo Conferenceですが、今回はこれまでのスケジュールと異なり、午前中のキーノート2本をはじめ、初めて1日通してプレゼンを行う本気のカンファレンススタイルとなりました。

TL;DR

何より僕自身が一番楽しめましたし、運営してくださった方々、また一緒に盛り上げてくれたコミュニティのみなさん、ありがとうございました。また次のGoConが開催されることを楽しみにしています。

f:id:ymotongpoo:20141130101121j:plain

TLとプレゼンテーションまとめ

スライドへのリンクがないものは公開され次第追って追加します。

TL

Go Conference 2014 autumn - Togetterまとめ

キーノート

プレゼンテーション

Lightning Talk

Rob Pikeをお呼びすることになった経緯とか

今回、僕は個人としての立場と所属する会社での立場を明確にするために、本カンファレンスの運営を@tenntennや@jxck_を始めとするこれまで運営をこれまで支えてくれてきたコミュニティの方々にお願いし、僕はコミュニティをサポートする立場に徹しました。 *1

これまでなんとなく半年ごとの開催をしてきましたが、今回の秋開催を期待する声を9月頃を境に次第にいただくようになりました。ただ上記のような考えがありどうしようと迷っていたのですが、 GoCart に一緒に行ったみなさんが意欲的に手を挙げてくださったので、僕はキーノートスピーカーの依頼にとどまり、一歩下がったところで支援する形にさせてもらいました。

折角ここまで盛り上がっているので、ダメ元でGoの父であるRob Pikeにメールを送ったところ、「日程的に厳しいかもしれないけれど*2出来る限り参加したい」とおっしゃってくださり、過去のGoConでキーノートをしてくれたAndrew (@enneff) やBrad (@bradfitz) からの後押しもあってキーノートをしてくださる運びになりました。Robが日本に来るのは10年ぶりということで、本当に貴重な機会となりました。これも過去のGoConがキーノートスピーカーにとっても有意義であったということの証拠だと思います。*3

また、折角日本での開催だからということで、おそらく日本でGoでの開発の知見を最も持っているであろう鵜飼さんが快くキーノートを引き受けてくださったのも大きかったです。まったく事前の打ち合わせなどなかったにもかかわらず、お二人のキーノートが「Goらしく書くことにおいて単純さがいかに大事か」という話に収束していたのは、納得の行く結果でした。

運営のみなさまお疲れ様でした

Robの来日が決まったのが10月末なので、開催まで1ヶ月の時点で会場探し始めもろもろの準備を始めることになりました。その意味では会場提供や当日運営の申し出をしてくださった @deeeet さんはじめとする楽天の方々には本当にお世話になりました。またイベントのTシャツを作ってくださった @nuki_pon さん、毎回運営を手伝ってくださっている @manji0112 さん、GoCartで話が出てから関わってくれた @ryusen33 さんと @zoncoen さん、直近1ヶ月にnodeのイベントとHTTP2のイベントを抱えていた @jxck_ さん、そしてオリジナルステッカーやTシャツのデザインの元になるGopherイラストやメインで頑張ってくれた @tenntenn さんは本当にお疲れ様でした。

とても楽しかったです

TLを追っていても参加した皆さんが楽しんでいたのが伝わってきましたし、なによりRob本人が非常に楽しんでくださっていたのが印象的でした。Robは日本語がほとんどわからないのですが、Google翻訳を駆使してTLを読みながら、会場内外含めた #gocon の盛り上がりを感じ、ときにおもしろいツイートを見かけては子供のような無邪気な表情で笑っていたのが何よりの証拠でしょう。(一日中椅子に座っていたので「おしりが痛い」旨のツイートがたまにあったのですが、それが "Ass hurts" のように翻訳されていて、それを見る度に爆笑していました)

また運営を手伝ってくださった方向けにTシャツを用意していったのですが、懇親会後にはお店の前でジャンケン大会での争奪戦となり、Rob Pike本人がジャンケンを盛り上げてくださっていました。

f:id:ymotongpoo:20141130204123j:plain

運営コストに関して

ちゃんと書き残すことが少ないので、一応僕の考えだけここに書いておきます。今回GoConではライブ配信も通訳もありませんでした。理由は単純で運営が大変になるのと金がないからです。僕は過去にYouTubeのライブ配信の担当をしていたので安定してライブ配信を行うことの大変さはわかっていました。*4なので、少人数運営*5では賄えないと判断しました。

また今回も前回までのGoConと変わらず、英語でのセッションがそれなりにあったものの、通訳は入れませんでした。理由は金がかかるからとめんどくさいからです。同時通訳は想像しているよりもずっと高いものです。技術系の単語を理解しつつ同時通訳ができる通訳者を雇うだけでも大変ですし、同時通訳をするとなると専用の設備を入れなければなりません。有償のカンファレンスならいざしらず、無償でボランティアベースで行っているイベントではまず無理です。また英語がわかる参加者がボランティアベースで逐次通訳すれば良いだろうと思う人がいるかもしれませんが、逐次通訳を行うと単純にプレゼンテーションの時間が半減します。また通訳者は非常に疲れます。

これらを踏まえて、上記のようなリクエストを実現するためには人的・金銭的なサポートが必要になります。遠方の方や抽選に漏れた方への救済などはなるべくしたいとは思いましたが、そもそも運営する側が継続不能なコストを被るとなっては本末転倒なので、もし上記を実現したいとなったら、ぜひ手を挙げてもらえたらと思います。

次回以降

次回がどうなるかは僕はわかりません。ただ、2年前に始めた時のGoConではGoをプロダクションで使っている人がまったくいない状態だったのが、今回はすでに実戦投入を終えてからの知見に関するプレゼンテーションが多く見られるようになり、Goのコミュニティそのものの成熟と盛り上がりを感じることができたので、これからもGoConという形にかぎらず盛り上がっていってほしいなあと感じています。もし「GoConの運営を盛り上げたい」という方がいらしたら、ぜひ手を挙げてください。一緒に楽しんでいきましょう。

*1:もちろん僕もコミュニティの人間だという思いは誰よりあると思いますが、公式に支援するという立場を取りたかったという意味で敢えて分けるような書き方をしています

*2:いまになればわかりますがGo 1.4のリリースとGitHubへの移行を含めた非常に過密なスケジュールの中講演することになる

*3:実際、Goの父であるというだけでなく、これまでのITの歴史に大きく貢献してきたRob Pikeには毎週3、4本の講演依頼が来るそうですが、ほとんどは普段の業務や生活との兼ね合いからお断りしているそうなので、GoConを有意義だと思っていてくださったようです。

*4:配信そのもののコストと発表に際しての手続きの有無の確認などは想像しているよりもかかります

*5:それでも今回は楽天の皆様始め多くの人員を割くこととなりました