Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 13524] ファイルの概要

このコミットは、Goプロジェクトのコードレビューダッシュボードにおける表示件数の上限を変更するものです。具体的には、レビュー担当者と作者それぞれに割り当てられた、または送信されたアクティブなChange List (CL) の表示数を、これまでの10件から50件に増やす変更が行われました。これにより、ユーザーはより多くのCLを一目で確認できるようになり、ダッシュボードの利便性が向上します。

コミット

  • コミットハッシュ: be629bf79ee8edd0c52caa8a46cb63eb38e55d79
  • 作者: David Symonds dsymonds@golang.org
  • コミット日時: Mon Jul 30 11:45:17 2012 +1000

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/be629bf79ee8edd0c52caa8a46cb63eb38e55d79

元コミット内容

misc/dashboard/codereview: make all active CL tables hold up to 50 CLs.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6449060

変更の背景

この変更の背景には、Goプロジェクトのコードレビュープロセスにおける効率性の向上が挙げられます。Goプロジェクトでは、Gerritベースのコードレビューシステムが利用されており、開発者は自身の提出した変更(CL)や、レビューを依頼されたCLをダッシュボードで管理しています。

以前は、このダッシュボードで表示されるアクティブなCLの数が10件に制限されていました。しかし、活発な開発が行われるプロジェクトでは、一人の開発者やレビュー担当者が同時に10件以上のCLを抱えることは珍しくありません。表示件数が少ないと、ユーザーは次のCLを見るためにページング操作を行う必要があり、これが作業の妨げとなる可能性がありました。

このコミットは、このようなユーザーエクスペリエンスの課題を解決するために、表示件数の上限を10件から50件に引き上げることを目的としています。これにより、ユーザーはより多くのCLを一度に確認できるようになり、ダッシュボード上でのCLの追跡や管理がよりスムーズに行えるようになります。特に、多くのCLを同時に扱っている開発者やレビュー担当者にとっては、大幅な利便性の向上が期待されます。

前提知識の解説

このコミットを理解するためには、以下の概念について知っておく必要があります。

  • Change List (CL): CLは、ソフトウェア開発における変更の単位を指します。特にGerritのようなコードレビューシステムでは、開発者がコードベースに対して行った一連の変更(コミット)をまとめたものをCLと呼びます。CLはレビューのために提出され、承認されるとメインのコードベースにマージされます。Goプロジェクトでは、golang.org/cl/XXXXXXX のような形式でCLが識別されます。

  • Go Code Review Dashboard: Goプロジェクトが利用しているGerritベースのコードレビューシステムに付随するダッシュボードです。このダッシュボードは、開発者やレビュー担当者が自身のCLや、レビューが必要なCLのステータスを一覧で確認できるように設計されています。アクティブなCL、レビュー待ちのCL、承認されたCLなど、様々なカテゴリでCLが表示されます。

  • Google App Engine (GAE): Googleが提供するPaaS(Platform as a Service)であり、ウェブアプリケーションやモバイルバックエンドを構築・ホストするためのプラットフォームです。Go言語はGAEでサポートされており、GoプロジェクトのコードレビューダッシュボードもGAE上で動作していると考えられます。GAEは、スケーラビリティやメンテナンスの容易さといった利点を提供します。

  • Datastore: Google App Engineが提供するNoSQLデータベースサービスです。半構造化データを格納するために設計されており、スケーラブルで高可用性を提供します。Go Code Review Dashboardでは、CLの情報(作者、レビュー担当者、ステータスなど)がDatastoreに保存されており、ダッシュボードの表示のためにDatastoreからデータがクエリされます。

  • Datastore Query Limit() メソッド: Datastoreからデータを取得する際に使用されるクエリのメソッドの一つです。Limit(N) は、クエリ結果として返されるエンティティの最大数をNに制限します。例えば、Limit(10) と指定すると、最大で10件のデータしか返されません。このコミットでは、この Limit() メソッドの引数を変更することで、表示件数の上限を調整しています。

技術的詳細

このコミットの技術的な変更は、Go Code Review Dashboardのバックエンドコード、具体的には misc/dashboard/codereview/dashboard/front.go ファイル内で行われています。このファイルは、ダッシュボードのフロントエンドに表示するデータを準備する役割を担っています。

変更の核心は、Datastoreに対するクエリの Limit() メソッドの引数を 10 から 50 に変更した点です。

変更前:

q := activeCLs.Filter("Reviewer =", currentPerson).Limit(10)
q := activeCLs.Filter("Author =", currentPerson).Limit(10)

変更後:

q := activeCLs.Filter("Reviewer =", currentPerson).Limit(50)
q := activeCLs.Filter("Author =", currentPerson).Limit(50)

activeCLs は、Datastoreの特定のエンティティセット(おそらくアクティブなCLを表すもの)に対するクエリビルダーです。 .Filter("Reviewer =", currentPerson) は、現在のユーザーがレビュー担当者として割り当てられているCLをフィルタリングします。 .Filter("Author =", currentPerson) は、現在のユーザーが作者であるCLをフィルタリングします。

これらのクエリは、それぞれ「あなたにレビューが割り当てられたCL」と「あなたが送信したCL」のリストを取得するために使用されます。Limit(N) は、これらのクエリがDatastoreから取得する結果の最大数をNに制限します。

この変更により、Datastoreから取得されるCLの数が最大50件に増え、その結果、ダッシュボードのテーブルに表示されるCLの数も最大50件になります。これは、単に表示上の変更だけでなく、バックエンドでのデータ取得ロジックの変更を伴うものです。

この変更は、Go App EngineのDatastoreクエリの動作に直接影響を与えます。Datastoreはクエリの Limit を尊重し、指定された数以上の結果を返しません。したがって、この変更はダッシュボードのパフォーマンスに大きな影響を与える可能性は低いですが、一度に取得するデータ量が増えるため、わずかながらDatastoreの読み取り操作が増加する可能性があります。しかし、50件という数は、一般的なウェブアプリケーションのデータ取得量としては妥当な範囲であり、ユーザーエクスペリエンスの向上というメリットがデメリットを上回ると判断されたと考えられます。

コアとなるコードの変更箇所

diff --git a/misc/dashboard/codereview/dashboard/front.go b/misc/dashboard/codereview/dashboard/front.go
index 970ed3e1a0..5c3a88b136 100644
--- a/misc/dashboard/codereview/dashboard/front.go
+++ b/misc/dashboard/codereview/dashboard/front.go
@@ -55,7 +55,7 @@ func handleFront(w http.ResponseWriter, r *http.Request) {\
 
  	if data.UserIsReviewer {
  		tableFetch(0, func(tbl *clTable) error {
- 			q := activeCLs.Filter("Reviewer =", currentPerson).Limit(10)
+ 			q := activeCLs.Filter("Reviewer =", currentPerson).Limit(50)
  			tbl.Title = "CLs assigned to you for review"
  			tbl.Assignable = true
  			_, err := q.GetAll(c, &tbl.CLs)
@@ -64,7 +64,7 @@ func handleFront(w http.ResponseWriter, r *http.Request) {\
  	}
 
  	tableFetch(1, func(tbl *clTable) error {
- 		q := activeCLs.Filter("Author =", currentPerson).Limit(10)
+ 		q := activeCLs.Filter("Author =", currentPerson).Limit(50)
  		tbl.Title = "CLs sent by you"
  		tbl.Assignable = true
  		_, err := q.GetAll(c, &tbl.CLs)

コアとなるコードの解説

このコミットで変更されたのは、misc/dashboard/codereview/dashboard/front.go ファイル内の2つの行です。

  1. レビュー担当者向けのCLリストの変更:

    - 			q := activeCLs.Filter("Reviewer =", currentPerson).Limit(10)
    + 			q := activeCLs.Filter("Reviewer =", currentPerson).Limit(50)
    

    このコードブロックは、現在ログインしているユーザーがレビュー担当者として割り当てられているアクティブなCLのリストを取得する部分です。変更前は Limit(10) で最大10件のCLしか取得していませんでしたが、変更後は Limit(50) となり、最大50件のCLが取得されるようになりました。これにより、「CLs assigned to you for review」(あなたにレビューが割り当てられたCL)のテーブルに表示されるCLの数が最大50件に増えます。

  2. 作者向けのCLリストの変更:

    - 		q := activeCLs.Filter("Author =", currentPerson).Limit(10)
    + 		q := activeCLs.Filter("Author =", currentPerson).Limit(50)
    

    このコードブロックは、現在ログインしているユーザーが作者であるアクティブなCLのリストを取得する部分です。同様に、変更前は Limit(10) で最大10件のCLしか取得していませんでしたが、変更後は Limit(50) となり、最大50件のCLが取得されるようになりました。これにより、「CLs sent by you」(あなたが送信したCL)のテーブルに表示されるCLの数が最大50件に増えます。

どちらの変更も、activeCLs というDatastoreクエリのオブジェクトに対して Filter メソッドで条件を指定し、その後に Limit メソッドで取得する結果の最大数を設定しています。このシンプルな数値の変更によって、ダッシュボードの表示件数上限が引き上げられ、ユーザーがより多くの情報を一度に確認できるようになりました。

関連リンク

参考にした情報源リンク

  • Google App Engine Datastore Documentation (当時の情報に基づく一般的な理解)
  • Go言語のDatastoreクライアントライブラリの一般的な使用方法に関する情報