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のほうがはるかに納得感が高い構築方法になります。