現在のソフトウェア開発では多くの場合、大きなチームが単一のコードベース上でやり取りしなければなりません。その際に使われるのが、コンフリクトを回避しつつ変更の入出力を管理できるコード追跡システムです。コード管理に利用しているサービスは、エンジニアリングチームごとに異なる場合がありますが、テストとレビューはどのチームも Slack の 1 か所でまとめて行うことができます。
チャンネル、スレッド、アプリを組み合わせて使用すると、メールの受信トレイやアプリのアラートをチェックして回ったり、ブラウザのタブ間を移動したりする必要がなくなるため、エンジニアリングチームの時間を大幅に節約できます。その結果、そのコードが顧客に届くスピードも大幅に上がるでしょう。
では、基本的なアプローチを見ていきましょう。
まずはコードレビューチャンネルを作成
コードレビューチャンネルは、コードベースやチームの規模に合わせて、ブランチまたはリポジトリごとに作成できます。また、特定の機能に対して作成することもできます。小さなチームの場合は、#code-review
チャンネルが 1 つあれば十分かもしれません。
チャンネルを作成し、そのチャンネルの目的と共通の行動を示したメッセージを投稿します。例えば、メンバーに対してレビューが必要なものがある時に投稿するようお願いし、承認後のプロセスについて説明します。チームやチャンネルに参加するすべての開発者がいつでもコードレビュープロセスの説明を確認できるよう、そのメッセージはチャンネルにピン留めしてください。
メンション、絵文字、スレッドを使って交流
Slack 社内では、フロントエンド開発用内部コードレビューチャンネルでレビューリクエストを開始する際、「メンション」を使ってチームのメンバーに名前で声をかけるか、ユーザーグループをメンションして関係者全員に一斉通知を送信します(例 : @android-eng)。またカスタム「EZ」絵文字を使えば、レビューがシンプルで短いものだと知らせることもできます。
チームの開発者は、レビューの予定を決めると両目の絵文字「👀」でリアクションします。これは、ユーザーグループがメンションされた場合に便利です。この絵文字が表示されたら、誰かがそれに対応することを意味するためです。レビューが完了したら、チェックマークの絵文字「✅」が表示されます。これにより、そのコードを次のステップに進めてもよいとわかります。
具体的な内容についての話し合いの場としては、各リクエストのスレッドが適しています。GitHub の自動プレビューや Slack に組み込まれたスニペットを使用すれば、ディスカッション目的でコードのセクションを引用するのも簡単です。
チャンネルで from:me has::eyes: in:#code-review
を検索すると、自分が行ったすべてのコードレビューを追跡できます。結果にチェックマークが示されていない場合は、まだやるべきことがある、という意味です。リクエストが見落とされている場合は、「bump」という単語をスレッドに投稿すれば、そのタスクがまだ要対応の状態だと全員に知らせることができます。
自動アラートで全員が最新情報を把握
Slack には、GitHub からの出力専用チャンネルもあります。プルリクエストがマスターブランチに連携されると、コントリビューターの名前がメンションされた自動メッセージが、そのチャンネルに投稿されます。
これにより、いつデプロイが行われ、どの変更がリリースに組み込まれたかを、全員に知らせることができます。またブランチで作業している人に対して、プルリクエストの送信前に最新の変更を反映させることでコンフリクトを最小限に抑えられる旨をさりげなく伝えます。
大規模なコードベースやチーム、複雑なニーズにも対応
Slack のコードベースは、それぞれのチームがソフトウェアの各側面に集中できるように、多くのブランチやリポジトリに分割されています。コードレビュー用チャンネルとデプロイ用チャンネルがそれぞれ存在しているため、モバイルの開発者が、インフラストラクチャのバックエンドのコードに煩わされることはありません。また、その逆も同様です。あらゆることを Slack で調整すれば、開発者がやり取りし、レビューし、助け合う場が生まれます。
私たちは何年もの間、社内のカスタムソフトウェアを多数構築し、Slack の基本な使い方を特定のニーズに合わせて拡張してきました。GitHub の Slack アプリ(および Bitbucket、GitLab など)は、任意のブランチに変更があった場合に、プルリクエストを投稿し、チャンネルを更新するように設定できます。
大きなコードベースで作業するチームを調整するのは簡単ではありません。しかし、開発者が Slack でやり取りし、レビューし、デプロイできるようになれば、難しい問題を効率的に解決できるかもしれません。このアプローチを自社のソフトウェア開発チームに導入したい場合は、ヘルプセンターを参照してください。Slack が提供するすべてのサービスの概要を確認できます。