はじめに
Databricksノートブックのコメント機能で、Genie Codeをメンションできるようになりました。
コメントでGenie Codeからヘルプを得る | Databricks on AWS
コメントでGenie Codeに言及すると、コメントスレッドを離れることなくAIのヘルプを得ることができます。コメントまたは返信で
@と入力し、Genie Codeを選択し、リクエストを入力した後、送信または返信をクリックします。Genie Codeはコメントスレッドに返信を投稿します。
これだけ読むと「アシスタントパネルで聞けばいいのでは?」と思うかもしれません。私も最初はそう思いました。ですが、実際に触ってみると、この機能の本質はAIとの対話が共有物になることにあると感じました。本記事では、その嬉しさの整理と、実際に動かしてみた様子をご紹介します。
何が嬉しいのか
アシスタントパネルでのやり取りは、基本的に自分だけのプライベートな会話です。一方、コメントスレッドはノートブックの共同作業者全員に見えます。この違いから、以下のようなメリットが生まれます。
レビューの文脈にAIを引き込める
コードレビューで「ここの処理が読めない」という場面はよくあります。従来は作者の返事を待つしかありませんでしたが、コメント欄でその場でGenie Codeに説明させることができます。しかも、その説明はスレッドに残るので、後から同じ疑問を持った人が再質問する必要がありません。GitHubのプルリクエストコメントでCopilotをメンションするのと同じ発想です。
「AIに聞いた結果」を議論の材料として共有できる
「Genieはこう修正を提案してるけど、どう思う?」という流れが1つのスレッド内で完結します。アシスタントパネルで得た回答をコピペしてコメントに貼る手間や、その際に失われる文脈がなくなります。
CAN READ権限のレビュアーでも使える
コメントの投稿はCAN READ権限から可能です。セルを実行も編集もできないレビュアーが、コードを動かすことなく理解を深める手段になります。
逆に言えば、1人でノートブックを書いているだけならこの機能の出番はほぼありません。あくまでレビュー、引き継ぎ、質問対応といった非同期コラボレーションの摩擦を減らす機能、という位置づけです。
試してみる
レビューで質問が飛んできそうな、少し分かりにくい処理を含むサンプルノートブックを用意しました。どの環境でも動くようにsamples.nyctaxi.tripsを使っています。
df = spark.table("samples.nyctaxi.trips")
display(df.limit(5))
from pyspark.sql import functions as F
quantiles = df.approxQuantile("fare_amount", [0.25, 0.75], 0.01)
iqr = quantiles[1] - quantiles[0]
upper = quantiles[1] + 1.5 * iqr
df_clean = df.filter(
(F.col("fare_amount") > 0)
& (F.col("fare_amount") <= upper)
& (F.col("trip_distance") > 0)
& (F.col("tpep_dropoff_datetime") > F.col("tpep_pickup_datetime"))
)
from pyspark.sql.window import Window
w = Window.partitionBy(
"tpep_pickup_datetime", "pickup_zip", "dropoff_zip"
).orderBy(F.col("fare_amount").desc())
df_dedup = (
df_clean.withColumn("rn", F.row_number().over(w))
.filter(F.col("rn") == 1)
.drop("rn")
)
summary = (
df_dedup.groupBy("pickup_zip")
.agg(
F.count("*").alias("trip_count"),
F.round(F.avg("fare_amount"), 2).alias("avg_fare"),
F.round(F.avg("trip_distance"), 2).alias("avg_distance"),
)
.orderBy(F.col("trip_count").desc())
)
display(summary.limit(10))
パターン1: コードの説明を求める
IQR法による外れ値除去のロジックは、データエンジニアなら分かるけれど初見だと読めない、という絶妙なラインのコードです。レビュアーになったつもりで、該当箇所をハイライトしてコメントの吹き出しをクリックします。
@と入力するとGenie Codeが候補に表示されるので選択し、質問を入力します。
@Genie Code このコードで何をしているのか説明してもらえますか?なぜ1.5という係数を掛けているのでしょうか?
送信すると、Genie Codeがスレッドに返信を投稿します。
IQR法の仕組みだけでなく、係数1.5がTukey(1977)の経験則であること、正規分布では上下約0.7%の外れ値を検出できること、3.0にするとより極端な外れ値のみ除外されることまで補足してくれました。コメント欄で完結する説明として十分な深さです。
パターン2: 実装方針への質問
続いて、重複排除のセルです。dropDuplicatesを使わずにウィンドウ関数で書いている理由を聞いてみます。
@Genie Code dropDuplicatesではなくrow_numberを使っているのはなぜですか?この書き方のメリットを教えてください
「dropDuplicatesは残すレコードを選べないが、row_numberはorderByにより運賃が最も高いレコードを残すことを明示的に制御できる。重複時の選択基準を保証できるのが最大のメリット」と、実装の意図を正確に読み取った回答が返ってきました。作者に聞かなくても、レビュアーがスレッド内で自己解決できるわけです。
パターン3: 改善提案を求める
最後に、集計セルに対して改善提案を求めてみます。
@Genie Code データ量が増えた場合にパフォーマンス上の懸念はありますか?改善案があれば提案してください
orderByによる全シャッフルとウィンドウ関数を懸念点として挙げた上で、cacheの活用、top-N目的ならlimit後へのorderByの移動、大規模データならliquid clusteringの設定など、複数の改善案を提示してくれました。
なお、こうした提案は必ずしもそのまま採用すべきものではありません。例えばgroupBy前のrepartitionは、最近のランタイムではAQEに任せた方が良いケースも多いです。提案を鵜呑みにするのではなく、「Genieはこう言っているけどどうする?」という議論の叩き台として使うのが健全だと思います。その議論自体もスレッドに残るのが、この機能の良いところです。
まとめ
コメントでのGenie Code呼び出しは、単なる「AIに聞ける場所が増えた」機能ではなく、AIとの対話をチームの共有資産に変える機能です。
- レビュアーは作者を待たずにその場で疑問を解消できる
- AIの回答が議論の材料としてスレッドに蓄積される
- CAN READ権限しかないメンバーもAIのヘルプを利用できる
チームでノートブックをレビューする文化がある方は、ぜひ試してみてください。




