☠️

AIはたぶんDSLがお好き

に公開

フリーランス歴18年のソフトウェアエンジニアとして、ウォーターフォールからアジャイル、組み込み系からソーシャルゲームまで、幅広いプロジェクトに携わってきました。試行錯誤の中で、最近はAIを活用したソフトウェア開発に強い関心を持ち、仕事と育児の合間に個人開発を楽しんでいます。

特に注目しているのが、AIと相性の良い「軽量なDSL(Domain-Specific Language)」の開発です。その一環として、ワイヤーフレームを簡単に記述できる「MukuroL」というDSLを試作中です(https://github.com/collabologic/MukuroL)。
この記事では、MukuroLを例に、AIとDSLがなぜ相性が良いのか、その可能性についてお話しします。


DSLとは?個人開発者に嬉しいメリット

DSL(Domain-Specific Language)とは、特定の領域やタスクに特化した軽量な言語のことです。例えば、SQLはデータベース操作、HTMLはウェブページの構造記述に特化しています。これらは汎用言語(PythonやJavaなど)に比べ、シンプルで特定の目的に最適化されています。

私が開発中の「MukuroL」は、ワイヤーフレームを「落書きレベル」で記述できるDSLです。例えば、以下のコードで、ヘッダーとサイドバー、コンテンツを配置したシンプルなレイアウトを表現できます。

page title:サンプルページ
    grid size:full tile:10x10
        box label:Header gpos:1-10/1 text:ここにヘッダーが入ります
        box label:Sidebar gpos:1-3/2-10 text:サイドバー。メニューなど
        box label:Body gpos:3-10/2-10 scroll:y
        box label:Footer gpos:1-10/10 text:フッターです 

MukuroLの詳細については後日改めて記事にする予定ですが、パッと見て何ができるか、お分かりいただけるかと思います。


AIとDSLの相性が良い理由

では、なぜAIはDSLと相性が良いのでしょうか?いくつかポイントを挙げます。

人間にとっても書きやすく、読みやすい

簡易なDSLは、ある程度のリテラシーを持つ人であれば短時間で習得できます。SQLの習得には相応のトレーニングが必要ですが、より目的を絞ったDSLであれば、経験あるエンジニアなら1時間もあれば習得できるものも考えられます。

MukuroLはまだ利用者の意見を集めている段階ですが、エンジニアとしての経歴を持つ方なら、最初のワイヤーフレームを作成するのに1時間もかからないでしょう。

また、MukuroLは「落書きレベルで画面レイアウトを作成すること」を目指しており、記述したワイヤーフレームをHTMLに変換し、ブラウザで表示して実際のイメージを固めることができます。

例えば、先ほどのMukuroLで記述したレイアウトからHTMLを生成すると、ブラウザでは以下のように表示されます。

軽量なDSLから、人間が見やすい表現を出力する仕組みを構築することは難しくありません。

AIにとって誤解が少なく、リソース節約

AIにとってDSLは「誤解の少ない指示書」のようなものです。自然言語では曖昧さや文脈の違いで意図がずれることがありますが、DSLは目的が明確で構造化されているため、AIが正確に解釈しやすいという特徴があります。

自然言語で長々と指示を出すよりも、DSLを用いることでトークン(AIが処理するデータの単位)を節約でき、効率的です。これは特に個人開発において、コストを抑える上で重要なポイントとなるでしょう。

追加学習なしで利用可能

自然言語の内容を把握するために計算リソースを大量に投入することなく、学習なしに推論の力だけで、読み込みや書き出しが可能です。DSLは目的に応じて標準化された構文を持つため、AIモデルは既存の知識でスムーズに対応できます。例えば、SQLやHTMLをAIがすぐに理解できるように、MukuroLのような新しいDSLも、基本的なルールを把握すれば即座に活用できます。

例えば、先ほどのMukuroLと、以下のプロンプトを入れるだけで、AI(Gemini 2.5 Flash)はそれなりに見えるデザインを生成しました。

以下の簡単なDSL(MukuroL)で記述された画面レイアウトに対して、
HTML+tailwindでデザインを入れたものをファイル一枚で生成してください。
サイドバーには、適当なよくあるメニューの項目を入れてください。
全体的に背景は白、テーマカラーとして水色を使い爽やかなイメージ。
コーポレートサイトとして書き出してください

<先ほどのMukuroLを貼り付け>


コンテンツの内容は少し膨らませすぎかもしれませんが、これはMukuroLを学習させたり、マニュアルを提示したりした結果ではありません。簡単なDSLであれば、現在のAIは理解できてしまうということでしょう。

例えば私のようなサーバサイドメインで、デザイン的な作業を苦手としているエンジニアが個人開発するなら、AIが手を入れた程度のデザインで妥協しても良いこともあります。


どんなシーンで役立つ?

DSLとAIの組み合わせは、さまざまな場面で活躍できます。いくつか例を挙げてみましょう。

  • デザインの下書き生成: 先の例の通り、本職のデザイナーが考えたものではなくとも、業務システムや管理画面程度であれば使えるデザインが生成できます。プロンプトを工夫すれば、さらに良い結果が得られるでしょう。
  • ドキュメント自動生成: 画面から考えられる程度のAPI仕様書や、ユーザーガイドを自動生成することも考えられます。例えば、最初はレイアウトだけをDSLで記述し、それを元にAIが画面設計書のドラフトを生成することが可能です。
  • 高速プロトタイピング: 画面設計やデータ定義をDSLで記述し、AIがワイヤーフレームやコードのドラフトを提案。アイデアを素早く形にできます。
  • ビジネスロジックの整理: 複雑な業務ルールをDSLで簡潔に記述し、AIがコードやテストケースに変換。ビジネスサイドとエンジニアの橋渡しに最適です。

DSLの未来とAIとの協調

AIの進化に伴い、DSLの需要はますます高まるでしょう。AIが処理するデータやタスクが多様化する中、目的ごとに最適化された軽量な言語は、効率性と正確性を両立させる鍵となるからです。

私は「落書きレベルで画面レイアウトを記述できるDSL」としてMukuroLを開発していますが、これを手始めに、「基本設計書相当のドキュメントをMarkdownだけで書けるようにすること」を当面のテーマにしています。

基本設計書にはテキストで記述しにくい要素として、画面イメージの他にダイアグラムがありますが、これはMermaidを利用することで解決できます。その他、記法はあるものの修正作業が面倒なテーブルの記述についても、扱いやすくするアイデアを検討中です。

現在のAIはFigmaの画面デザインも読み取れますし、スプレッドシートを読み込んだり操作したりすることも可能ですが、トークン消費が気になる個人開発などにおいては十分とは言えず、より安価な方法として軽量なDSLが有効だと考えています。


まとめ:AIはDSLがお好き!

AIとDSLの組み合わせは、シンプルで効率的、そして創造的な開発を実現します。人間にとって書きやすく読みやすい、AIにとっては誤解が少なくリソースを節約できる、そして追加の学習なしで使える――非常に相性の良いものと考えています。

今後は、MukuroLの改修や、Markdownとの統合、テーブル記述の効率化などを進めながら、AIと人間の協調によるソフトウェア開発について、アイデアを形にしていく予定です。

このDSLとAIの組み合わせに、何か可能性を感じられましたか?ぜひあなたの意見も聞かせてください。

Discussion