ABEJA Tech Blog

中の人の興味のある情報を発信していきます

非エンジニアの救世主?!ノーコード版Streamlit『Writer Framework』を試してみた

こちらはABEJAアドベントカレンダー2024 17日目の記事です。

こんにちは、ABEJAでプロジェクトマネージャーをしている高崎です。

はじめに

最近、v0やClaude ArtifactのようなAIを活用したコード生成やノーコードツールが注目を集めています。そんな中でも、プロトタイプ開発においては、スピーディさとカスタマイズ性を求める声が多く、ABEJAではStreamlitを使用することが多いです。

しかし、StreamlitはPythonに慣れていないメンバーにとってはハードルが高いツールでもあります。そこで、ノーコード版Streamlitとも呼ばれる「Writer Framework(旧:Streamsync) 」を試してみることにしました。

このツールは本当に非エンジニアでも効率的に開発を進められるのでしょうか? 本記事では、プロジェクトマネージャーである私が実際にWriter Frameworkを試してみた結果をお伝えします!

想定読者

  • 非エンジニアながら、技術に関心があり、プロトタイプを作成する機会がある方
  • Streamlitを使った経験があり、カスタマイズ性の限界を感じている方
  • シンプルかつ直感的に扱える新しいツールを探している方

目次

Writer Frameworkについて

Writer Frameworkは、オープンソースのAIアプリケーション開発フレームワークで、ドラッグ&ドロップのビジュアルエディタでフロントエンドを構築できます。

Writer Frameworkの使い方に関しては、日本語の記事は少ないですが、以下のブログを参考にさせていただきました。

Writer Frameworkで実際に作ってみた

Streamlitで作成したFAQ生成アプリ

www.youtube.com

バックエンドでLLMを実行しています。

Writer Frameworkで作成したFAQ生成アプリ

youtu.be

Streamlitと同じく、LLMを実行し、フロントに結果を表示できました。

Writer Frameworkを使ってみて

1. UIのパーツが多く、ドラッグ&ドロップで配置できる

Writer Frameworkの最大の特徴は、ノーコードでフロントエンドを構築できる点。UIパーツをドラッグ&ドロップで配置し、見た目を即座に確認できるため、直感的に作業を進められます。特に非エンジニアにとって、この操作性はとてもよかったです。

2. 開発の補助機能が充実している

特に、以下の機能は使っていて、とても便利でした。

  • コード修正機能・ログ機能:GUI上で、バックエンドのコード(main.py)を修正することができます。また、設定無しでログも使え、デバッグにとても役立ちました。

  • State管理機能:保持しているStateがわかりやすく表示されます。

3. バックエンドは自力で書く必要あり

一方で、GUI上だけではバックエンド(例えば、LLMを動かすなど)は制御できず、main.pyにコードを書いていく必要があります。Streamlitに慣れていればOKですが、Pythonに慣れていないメンバーには依然ハードルがありそうです。

4. 意図通りに動かすのが意外と難しい

ノーコードがゆえに、コードでの開発と異なる箇所があり、難しさも感じました。

  • GUI上で作成したフロントエンドは、JSONの設定ファイルにまとめられてしまい、コードでの修正ができない

Streamlitでは、全てPythonで書かれるため、AIでコード補完機能を活用しながら調整が可能です。

さきほどのFAQ生成アプリの設定ファイル

が、Writer FrameworkはJSONでまとめられてしまいます。そうなると、一般的なLLMではWriter Frameworkの仕様を十分に理解していないため、難しいと感じました。これにより、非エンジニアにとっては逆にハードルが高いと感じられます。

  • 変数での値の引き渡しではなく、Stateを活用する必要がある

例えば、DataFrameを画面に表示する場合。Streamlitでは以下のように書きますが、

# サンプルデータの作成
df = pd.DataFrame({
    '名前': ['Alice', 'Bob', 'Charlie'],
    '得点': [88, 92, 85]
})

# データフレームの表示
st.dataframe(df)

Writer Frameworkでは、

state["df"]  = pd.concat([state["df"],pd.DataFrame(df)])

といった具合で、元々定義していたstateに対して、上書きをする必要があり、やりにくさを感じました。

(試してみた限りですので、より正しい方法があるのかもしれません...)

まとめ:ノーコードでも、非エンジニアにとって、逆にやりづらいことがある

  • ノーコードでフロントエンドを構築できる点は便利ですが、全ての機能を網羅できるわけではなく、バックエンドや細かい動作を指定する場合には技術的な知識が必要。
  • フロントエンドは、コードを挟まないため、StreamlitのようにAIの補佐を受けられる環境がないと、意図通りの成果物を作成するのが難しい。Streamlit × ChatGPTの方がやりやすそう

We Are Hiring!

ABEJAは、テクノロジーの社会実装に取り組んでいます。 技術はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方は、下記採用ページからエントリーください! (新卒の方やインターンシップのエントリーもお待ちしております!)

careers.abejainc.com

特に下記ポジションの募集を強化しています!ぜひ御覧ください!

DX・AIコンサルタント | 株式会社ABEJA

DX・AIビジネスプロデューサー | 株式会社ABEJA

<26新卒>DX・AIコンサルタント | 株式会社ABEJA