メインコンテンツへスキップ

Gradio.interface と Gradio.Blocks

🎭 Interface とBlocks

❶ Interface

たとえば以下のようなコード:

gr.Interface(fn=my_func, inputs="text", outputs="text")

これは以下のことを勝手にやってくれます

  • テキストボックスを左に置く

  • 実行ボタンを自動でつける

  • 右に出力領域を置く

  • レイアウトは縦並び

でもこの流れがコードからは全然見えない


❷ Blocks

input_text = gr.Textbox()
output_text = gr.Textbox()
btn = gr.Button("実行")
btn.click(fn=..., inputs=input_text, outputs=output_text)

と部品を1つずつ明示的に作って組み立てる形。
Interfaceでは、関数・入力・出力だけ渡して「はい完成」.


🎯 Interfaceは「完成品ベース」、Blocksは「部品ベース」

特徴 Interface Blocks
UIの構築思想 自動生成(完成品渡し) 明示的に組み立てる(部品志向)
拡張・制御のしやすさ 難しい(制約あり) 柔軟(どこでも自由に配置)
Jetpack Composeとの類似性 ×(見えにくい) ◎(Composableと似た発想)
学習ハードル 低いがブラックボックス感がある やや高いが納得しやすい

🔍 使い分けの指針

  • 🤹‍♂️ 試作・学習・1ページ完結のUI → Interface

  • 🧩 本格UI・多部品・拡張予定あり → Blocks

🗨️ 最後に

Interfaceは、いわば「Gradioに全部おまかせで、1関数からUIが生える魔法」なんだけど、そのぶん「何がどうできてるか」がブラックボックスになるんですよね。

だから、「UIの骨組みを意識したい」エンジニアにとっては、
InterfaceよりBlocksのほうがはるかに納得感が高い構築方法になります。