こんにちは、SansanでEightのCEMとして開発組織のマネジメントをしている鈴木康寛です。この記事は前回の記事の続きです。
ここでは、GitHub Universeの初日を取り上げ、Keynoteで紹介されたGitHubのアップデートについてと、それ以外で私が視聴したセッションの中で印象に残ったものを書いていこうと思います。
会場までの道のり
Keynoteの開始が9:00からということもあり、早めの行動を心がけていましたが、起床に失敗しバスに乗り遅れるという失態をやらかしました。
バス乗り遅れた #GitHubUniverse
— Yasunori Suzuki (@yasuzukisan) 2019年11月13日
が、結構遅れて到着していた参加者の方も多く、受付も混んでおり、どうやらKeynoteの開始が遅れているような情報を入手したのでなんとなく一安心。列に並びます。
そして、会場に入場! エントランスが近未来感があってオシャレでした!
Keynote
オープニングには少し間に合いませんでしたが、なんとか着席。
GitHub Universe 2019 - Opening Keynote https://t.co/6LS1Ds56xt
— GitHub (@github) 2019年11月13日
初日のKeynoteでのトップニュースはやはりActions, Packages の正式リリースでしょう。
GitHub Actions、GitHub Package Registryが遂に一般公開となりました!すべてのGitHubをお使いの方がご利用いただけます。また、GitHub Package RegistryはGitHub Packagesに名称を変更しています。 #GitHubUniverse pic.twitter.com/Ozel0LLH1q
— GitHub Japan (@GitHubJapan) 2019年11月13日
これまではβ版として提供されていたものが、正式な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のモバイルアプリです。iOSについてはTestflight経由で配信されており、Androidも近いうちにリリースされるようです。 iOS版はiPadにも最適化されており、とても使い勝手が良さそうでした。ダークモードにももちろん対応! またモバイルで通知を受け取れ、受け取る通知に関してもチューニングが可能そうでした。 これで移動中のコードレビューが捗りますね!私は早速使い始めています。
GitHub desktop
GitおよびGitHub関連の機能についてデスクトップアプリとして利用できます。 特にGitに慣れていない非エンジニアの方々がGitを利用する場合にUI上で感覚的に操作できるので便利だと思いました。
Notifications (limited beta)
GitHubの通知機能のUXが刷新され、より使いやすく生まれ変わったようです。 通知に関しては個人的に十分活用できていませんでしたが、これを機に再チャレンジしてみようと思いました。
ついにGitHubの通知の改善もやります!!!通知の絞り込みや、その場での返信、管理がより簡単にできるようになります。現在はクローズドβですが、近日中にすべてのGitHubユーザーにお使い頂ける予定です。お楽しみに! #GitHubUniverse pic.twitter.com/IvceRcf74T
— GitHub Japan (@GitHubJapan) 2019年11月13日
Code周り
- GitHub上からRuby, Python, Goに関して、定義元へのコードジャンプが出来るようになりました
- コードに対する文字列の完全一致検索もできる様になったようです(limited beta)
- レビュアーのアサインメント設定が可能になり、方式はラウンドロビンとロードバランスの2つが選択できるようです(beta)
- レビューが滞っているPRのリマインダーが標準で設定可能になり、Slackに流せるようになったようです(limited beta)
GitHubSponsors
オープンソースプロジェクトに対してGitHub上でSponsorすることができるようになりました。(beta) クラウドファンディングサービスと同様にGitHub上で資金を調達/援助ができるようになり、よりOSSに寄与することでしょう。
GitHub Archive Program
2020/2/2からGitHub上のアクティブなPublicRepositoryのソースコードについてスナップショットが作成されるようになるようで、 未来永劫それを保管していけるようなものを目指しているようです。 北極海近くの地中深くに埋めることで未来に向けてGitHubのコードベースを保管する壮大なプロジェクトで、映像もかなりインパクトありました。
我々の未来の世代のために、現代のオープンソースのコードを保存するGitHub Archive Programをスタートします。1000年間保存可能な設備を北極海に浮かぶスバーバル諸島の地中深くに埋めることで保存します。未来のためにあなたのコードを残しましょう。 https://t.co/yRy85QaXun #GitHubUniverse
— GitHub Japan (@GitHubJapan) 2019年11月13日
The elusive quest to measure developer productivity
初日印象に残ったセッションのうちの一つです。 プロダクトマネージャーの視点から、プロダクト開発においていかにパフォーマンスを発揮出来る状態を作っていくかという中で、正しく計測をすることで改善サイクルを回していくことが重要だと発表していました。私自身がマネージャーということもあって内容的にもかなり参考になるものでした。
まず、計測の意義について説いていました。
- マネージャーの役割は持続的にPerformanceを発揮できる状態をつくること
- 計測できないと改善できないが、計測は難しい
そして陥りがちな悪い計測として以下の要素を紹介していました。
The Flawed Five
- Commits
- Lines of code
- PR counts
- Velocity points
- "Impact"
ここで問題になって来るのが、これらの数値自体に着目することで成果自体を測ろうというモチベーションになってしまいがちなことです。 単純にその数値は結果に過ぎず、数値の捉え方を間違って解釈してしまうと改善につながっていかないということを説明していました。 上記に関しては以下のように捉えると良いようです。
- Commits
- 頻繁にコミットすることは、透明性を担保し、継続的なデリバリーに貢献する。そのための指標として捉える
- Lines of code
- 言語や環境によって変わるものであり、システムの大きさを図るものと捉える
- PR counts
- Commitsと同様に、どのくらい継続的にデリバリーされているかを図るものと捉える
- Velocity points
- 過去の実績から将来の見積もりを図るものと捉える。
- 値自体が成果を図るものではない
- "Impact"
- これ自体をプロダクトのアウトプットとして評価すべきではない
アウトプットではなくプロセスを計測する
良い計測は結果だけを見るのではなく、プロセス自体に着目して計測を行っていくべきだと説いていました。 これは分かっているようでできていないことだと思っており、自身も参考にしていきたい考え方でした。 その中でSpeakerの方が紹介していた具体的な計測が以下です。
- コードレビューのリードタイム
- PRをオープンしてから、24時間以内に閉じられた数がどれだけあったか(success rate)
- レビューの滞留、継続的デリバリーの度合いを計測する
- PRの大きさ
- 小さいほどレビュー品質の向上、継続的デリバリーに貢献する
- 進行中のタスク
- 手を付けられているタスクが多いほど、集中して開発できているということ
- Time to Open
- ここは十分に理解できなかった。タスク着手やPR Openまでの時間を短く保てているかでデリバリーを図っていこうという考えなのか
結果ではなくプロセスを計測する具体的なアプローチについていい知見が得られた #GitHubUniverse
— Yasunori Suzuki (@yasuzukisan) 2019年11月13日
プロジェクトの計測について、実践できるところは真似してみようと思いました。
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に関する部分はどちらかというとサービスを実際にプレビューしてみて、表示や機能に問題がないかを確認することに重きをおいたほうが良いと言っていました。
本番環境でのテスト
実際のデータ、パフォーマンス等の観点からエンドユーザーと極めて同様の体験をテストできることから、最終的には本番環境でのテストが有効だと説いています。
ここからはやや営業的な話になってきましたが、GitHub + Zeitを利用すると上記のようなテスト環境が簡単に構築できるようです。
ただし、仮に本番環境にて不具合が発生した場合に、即座に前の状態に戻す仕組みがあってこそ、このような手法が現実的な選択肢として検討できるようになります。
Zeitでは更にリスクを最小化するために、カナリアデプロイにより、一部の環境にデプロイを行い、デプロイを行った環境におけるエラーレートの上昇率等の検知を行なうことで、自動ロールバックを行えるようなワークフローを構築しているようです。
最先端のサービスプレビューとデプロイメントについて学んだ。まだまだやれること多いなー#GitHubUniverse
— Yasunori Suzuki (@yasuzukisan) 2019年11月13日
Eightではまさにデプロイメントの改善に着手し始めているところだったので、上記知見は大変参考になりました。 またActionsがリリースされたこのタイミングでということもあり、デプロイのワークフローを根本的に見直すいい機会となりそうです。
GitHub Archive Program Partner Panel
初日最後のセッションです。なかなか重厚なテーマでした。 GitHub Archive Programに関連する登場人物がLT形式で代わる代わる発表を行いました。
いかにいい祖先として振るまえるか
有用なデータを残すことで、後世に貢献する
-
- ガラスに情報を残すプロジェクト
- 10000年以上劣化せず、データの抽出も容易かつ、維持コストも掛からない
- 現状のプロジェクト進捗
- スミソニアン博物館のデータとかがGitHub上で管理されている
- スタンフォードのドキュメントもGitHub上のRepositoryで管理されている
最後のセッションかなり濃厚だ。
— Yasunori Suzuki (@yasuzukisan) 2019年11月14日
「如何にして後世に情報を残して良い祖先となれるか」というテーマでスタンフォードの人とか入れ替わり色んな人が話している。
Github上に叡智を集約していく未来か。#GitHubUniverse
GitHubのコードベースが、数万年後に未来人に発掘されるところを想像するとワクワクしますね。
まとめ
こうしてGitHub Universe初日は幕を閉じました。 今回のテーマだからというところはありますが、やはりKeynoteは演出も含めてかなり楽しめました。 *1
CI/CDをテーマにしたセッションも示唆に富んだ面白いものが多く、かなりインプットを得られたので持ちかえって開発にフィードバックしていきたいと思いました。 セッション以外にもブース巡りなどご紹介したいものがあるのですが、それは次回2日目のレポに持ち越したいと思います。
長文お読みいただきありがとうございました。それではまた!
このシリーズの記事
*1:Keynoteで後ろの席に座っていた数人が、新しい機能の発表があるたびに歓声をあげて、それも含めて計算された演出なのか気になりましたが、いずれにしてもアメリカらしさがあって新鮮でした!