Sansan Builders Box

Sansanのものづくりを支える技術やデザイン、プロダクトマネジメントの情報を発信

GitHub Universe レポ (Day1)

こんにちは、SansanでEightのCEMとして開発組織のマネジメントをしている鈴木康寛です。この記事は前回の記事の続きです。
ここでは、GitHub Universeの初日を取り上げ、Keynoteで紹介されたGitHubのアップデートについてと、それ以外で私が視聴したセッションの中で印象に残ったものを書いていこうと思います。

会場までの道のり

road-to-universe
会場に向かう道中

Keynoteの開始が9:00からということもあり、早めの行動を心がけていましたが、起床に失敗しバスに乗り遅れるという失態をやらかしました。

が、結構遅れて到着していた参加者の方も多く、受付も混んでおり、どうやらKeynoteの開始が遅れているような情報を入手したのでなんとなく一安心。列に並びます。

long-line-for-reception
長蛇の入場列

そして、会場に入場! エントランスが近未来感があってオシャレでした!

entrance
entrance

Keynote

オープニングには少し間に合いませんでしたが、なんとか着席。

初日のKeynoteでのトップニュースはやはりActions, Packages の正式リリースでしょう。

これまではβ版として提供されていたものが、正式なGitHubの機能としてリリースされました。 それ以外にも細かなアップデートがあったので順に紹介していきます。

なお、GitHub公式ブログ(英語)でも1日目のアナウンスメントがまとめられていますのでそちらも御覧ください。

Actions

まずはGitHub Actionsです。 言わずもがなの機能かと思いますが、昨年にβ版としてでていたものでCI/CDのワークフローをGitHub上で構築できるものです。 また作成したActionはGitHubのMarketplace上で共有され、他のユーザーがActionを作成する際に簡単に流用することができます。 Starの数から頻繁に利用されているActionも把握できます。

例としてセッション中で紹介されていたのがCacheのActionです。

Actionの実行環境の構築時に再利用される部分をキャッシュすることでActionの実行時間を短縮できます。 Actionsの利用はPublicRepositoryの場合は無料とのことですが、Privateの場合は一定時間以上は従量課金になってくるので、 キャッシュを活用していくのがとても重要になってきます。

Packages

次はPackagesです。 NPMやRubyGems等で提供されているパッケージホスティングサービスがGitHub上に用意でき、開発したライブラリを自身のプロジェクトや上記Actionsにおいて利用できるようになります。 こちらもPublicRepositoryの場合は無料で、Privateの場合は利用するストレージサイズとActions外へのデータ転送に応じて課金されるようです。 Actions用途で自身のライブラリを作成する際に役立ちそうです。

その他のリリース

その他のリリースについては簡単に紹介します。

GitHub for mobile(beta)

github.com

github-for-mobile
GitHub for mobile

GitHubのモバイルアプリです。iOSについてはTestflight経由で配信されており、Androidも近いうちにリリースされるようです。 iOS版はiPadにも最適化されており、とても使い勝手が良さそうでした。ダークモードにももちろん対応! またモバイルで通知を受け取れ、受け取る通知に関してもチューニングが可能そうでした。 これで移動中のコードレビューが捗りますね!私は早速使い始めています。

GitHub desktop

desktop.github.com

GitおよびGitHub関連の機能についてデスクトップアプリとして利用できます。 特にGitに慣れていない非エンジニアの方々がGitを利用する場合にUI上で感覚的に操作できるので便利だと思いました。

Notifications (limited beta)

GitHubの通知機能のUXが刷新され、より使いやすく生まれ変わったようです。 通知に関しては個人的に十分活用できていませんでしたが、これを機に再チャレンジしてみようと思いました。

Code周り

  • GitHub上からRuby, Python, Goに関して、定義元へのコードジャンプが出来るようになりました
  • コードに対する文字列の完全一致検索もできる様になったようです(limited beta)
  • レビュアーのアサインメント設定が可能になり、方式はラウンドロビンとロードバランスの2つが選択できるようです(beta)
  • レビューが滞っているPRのリマインダーが標準で設定可能になり、Slackに流せるようになったようです(limited beta)

GitHubSponsors

オープンソースプロジェクトに対してGitHub上でSponsorすることができるようになりました。(beta) クラウドファンディングサービスと同様にGitHub上で資金を調達/援助ができるようになり、よりOSSに寄与することでしょう。

github.com

GitHub Archive Program

2020/2/2からGitHub上のアクティブなPublicRepositoryのソースコードについてスナップショットが作成されるようになるようで、 未来永劫それを保管していけるようなものを目指しているようです。 北極海近くの地中深くに埋めることで未来に向けてGitHubのコードベースを保管する壮大なプロジェクトで、映像もかなりインパクトありました。

The elusive quest to measure developer productivity

初日印象に残ったセッションのうちの一つです。 プロダクトマネージャーの視点から、プロダクト開発においていかにパフォーマンスを発揮出来る状態を作っていくかという中で、正しく計測をすることで改善サイクルを回していくことが重要だと発表していました。私自身がマネージャーということもあって内容的にもかなり参考になるものでした。

まず、計測の意義について説いていました。

  • マネージャーの役割は持続的にPerformanceを発揮できる状態をつくること
  • 計測できないと改善できないが、計測は難しい

そして陥りがちな悪い計測として以下の要素を紹介していました。

The Flawed Five

  • Commits
  • Lines of code
  • PR counts
  • Velocity points
  • "Impact"

the-flawed-five
The Flawed Five

ここで問題になって来るのが、これらの数値自体に着目することで成果自体を測ろうというモチベーションになってしまいがちなことです。 単純にその数値は結果に過ぎず、数値の捉え方を間違って解釈してしまうと改善につながっていかないということを説明していました。 上記に関しては以下のように捉えると良いようです。

  • Commits
    • 頻繁にコミットすることは、透明性を担保し、継続的なデリバリーに貢献する。そのための指標として捉える
  • Lines of code
    • 言語や環境によって変わるものであり、システムの大きさを図るものと捉える
  • PR counts
    • Commitsと同様に、どのくらい継続的にデリバリーされているかを図るものと捉える
  • Velocity points
    • 過去の実績から将来の見積もりを図るものと捉える。
    • 値自体が成果を図るものではない
  • "Impact"
    • これ自体をプロダクトのアウトプットとして評価すべきではない

アウトプットではなくプロセスを計測する

良い計測は結果だけを見るのではなく、プロセス自体に着目して計測を行っていくべきだと説いていました。 これは分かっているようでできていないことだと思っており、自身も参考にしていきたい考え方でした。 その中でSpeakerの方が紹介していた具体的な計測が以下です。

  • コードレビューのリードタイム
    • PRをオープンしてから、24時間以内に閉じられた数がどれだけあったか(success rate)
    • レビューの滞留、継続的デリバリーの度合いを計測する
  • PRの大きさ
    • 小さいほどレビュー品質の向上、継続的デリバリーに貢献する
  • 進行中のタスク
    • 手を付けられているタスクが多いほど、集中して開発できているということ
  • Time to Open
    • ここは十分に理解できなかった。タスク着手やPR Openまでの時間を短く保てているかでデリバリーを図っていこうという考えなのか

プロジェクトの計測について、実践できるところは真似してみようと思いました。

Building and deploying modern websites and apps

https://githubuniverse.com/schedule/#building-and-deploying-modern-websites-and-apps

多分2日間で私が最も印象に残ったセッションです。 Next.jsやnowを開発しているZeitのCEOによる登壇で、いかにしてサービスのモダンなデプロイ環境を構築するかについてでした。

近年のソフトウェア開発におけるユーザーへの価値訴求の潮流についても触れ、いかにその価値を早く、安定的にユーザーに届けられるかということを話していました。 継続的なデプロイメントについては今回のActionsというアップデートとも相関が高く、Eightにとっても向き合っていかなければならない課題であり、とても共感できる内容でした。

近年のソフトウェア開発の潮流

  • フルスタックエンジニアが前ほど注目されなくなり、エンジニアの技術スタックがフロントエンドとApi(バックエンド)に明確に2極化するようになってきた
  • 5年前はRailsが人気だったが、現在はReactやVueに志向が移ってきている
  • ソフトウェア開発の教育に関するコンテンツもフロントエンドのものが増えてきた
  • バックエンドで提供できる付加価値が減ってきた。既にAWSやPaaSによってサービス化され、コア機能として提供されているものが多くなってきたので車輪の再発明をする必要はない

コードレビューからサービスプレビューへ

フロントエンドの開発にていかにユーザー価値を早く届けられるかという観点でいくと、コードレビューでコード自体の品質を担保するのはとても重要だが、UIに関する部分はどちらかというとサービスを実際にプレビューしてみて、表示や機能に問題がないかを確認することに重きをおいたほうが良いと言っていました。

本番環境でのテスト

実際のデータ、パフォーマンス等の観点からエンドユーザーと極めて同様の体験をテストできることから、最終的には本番環境でのテストが有効だと説いています。

Test in Production
本番環境でのテスト

ここからはやや営業的な話になってきましたが、GitHub + Zeitを利用すると上記のようなテスト環境が簡単に構築できるようです。

ただし、仮に本番環境にて不具合が発生した場合に、即座に前の状態に戻す仕組みがあってこそ、このような手法が現実的な選択肢として検討できるようになります。

Zeitでは更にリスクを最小化するために、カナリアデプロイにより、一部の環境にデプロイを行い、デプロイを行った環境におけるエラーレートの上昇率等の検知を行なうことで、自動ロールバックを行えるようなワークフローを構築しているようです。

Eightではまさにデプロイメントの改善に着手し始めているところだったので、上記知見は大変参考になりました。 またActionsがリリースされたこのタイミングでということもあり、デプロイのワークフローを根本的に見直すいい機会となりそうです。

GitHub Archive Program Partner Panel

初日最後のセッションです。なかなか重厚なテーマでした。 GitHub Archive Programに関連する登場人物がLT形式で代わる代わる発表を行いました。

いかにいい祖先として振るまえるか

  • 有用なデータを残すことで、後世に貢献する

  • Project silica

    • ガラスに情報を残すプロジェクト
    • 10000年以上劣化せず、データの抽出も容易かつ、維持コストも掛からない

project-silica
Project Silica

  • 現状のプロジェクト進捗
    • スミソニアン博物館のデータとかがGitHub上で管理されている
    • スタンフォードのドキュメントもGitHub上のRepositoryで管理されている

GitHubのコードベースが、数万年後に未来人に発掘されるところを想像するとワクワクしますね。

まとめ

こうしてGitHub Universe初日は幕を閉じました。 今回のテーマだからというところはありますが、やはりKeynoteは演出も含めてかなり楽しめました。 *1

CI/CDをテーマにしたセッションも示唆に富んだ面白いものが多く、かなりインプットを得られたので持ちかえって開発にフィードバックしていきたいと思いました。 セッション以外にもブース巡りなどご紹介したいものがあるのですが、それは次回2日目のレポに持ち越したいと思います。

長文お読みいただきありがとうございました。それではまた!

このシリーズの記事

buildersbox.corp-sansan.com

buildersbox.corp-sansan.com

*1:Keynoteで後ろの席に座っていた数人が、新しい機能の発表があるたびに歓声をあげて、それも含めて計算された演出なのか気になりましたが、いずれにしてもアメリカらしさがあって新鮮でした!

© Sansan, Inc.