見出し画像

魔法の自然言語プログラミング「Zoltraak(ゾルトラーク)」の衝撃

こんにちは、みなさん!Sakuraです。

今日は、プログラミングの世界に革命を起こすかもしれない、衝撃的なツール「Zoltraak(ゾルトラーク)」をご紹介します。


Zoltraakは、MOTOKI氏が開発した画期的な「自然言語プログラミング」のフレームワークで、プログラミングの知識がなくても、誰でも自然言語だけで簡単に強力なAIを活用できます。

Zoltraak Github

Zoltraak(ゾルトラーク)ってなんだろう?

Zoltraakは、プログラミングの知識がなくても、自然言語だけで誰でも簡単に強力なAIを活用できる未来を切り開くツールです。

Zoltraakの特徴は、日本語で書かれた短い文章から、システム開発に必要な資料やソースコードを自動生成できること。

例えば、「提案書をプロンプトで作るシステム」と入力するだけで、要件定義書(システムの目的や機能要件をまとめた文書)を自動で作成します。

さっそく、実際のデモを見てみましょう。

Zoltraak「提案書作成アプリ」デモ


私は、「提案書をプロンプトだけで作ってくれるアプリ」とだけ、ターミナルでプロンプトにて依頼します。

すると、Zoltraakはわずか15秒ほどで以下のような要件定義書を自動生成しました。

# [システム名]の要件定義書
## ゴール: 提案書をプロンプトだけで作ってくれるアプリ

## 1. 目的
このシステムは、ユーザーが提案書の作成をプロンプトに沿って行うことができるアプリケーションを提供することを目的とします。ユーザーは、簡単な操作で提案書を作成することができ、効率的な業務遂行が期待できます。

## 2. ファイル・フォルダ構成
```
[システム名]
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── [システム名]
│   │   │               ├── ProposalGenerator.java
│   │   │               ├── ProposalTemplate.java
│   │   │               └── UserInterface.java
│   │   └── resources
│   │       └── templates
│   │           └── proposal_template.md
│   └── test
│       └── java
│           └── com
│               └── example
│                   └── [システム名]
│                       ├── ProposalGeneratorTest.java
│                       └── UserInterfaceTest.java
└── pom.xml
```

## 3. クラス図
```
+---------------+         +---------------+
|   ProposalGenerator   |         |   ProposalTemplate   |
+---------------+         +---------------+
| - template: ProposalTemplate |   - content: String   |
+---------------+         +---------------+
| + generateProposal() |   + getContent()   |
+---------------+         +---------------+
        ^                         ^
        |                         |
        |                         |
+---------------+         +---------------+
|   UserInterface   |         |   Exception   |
+---------------+         +---------------+
| - generator: ProposalGenerator |   - message: String   |
+---------------+         +---------------+
| + promptUser() |   + getMessage()   |
| + displayProposal() |         +---------------+
+---------------+
```

## 4. クラスの詳細
### ProposalGenerator
- **クラス名**: ProposalGenerator
- **説明**: 提案書の生成を担当するクラスです。
- **属性(フィールド)**:
  - `template: ProposalTemplate` - 提案書のテンプレートを保持します。
- **操作(メソッド)**:
  - `generateProposal()`: ユーザーからの入力に基づいて提案書を生成します。

### ProposalTemplate
- **クラス名**: ProposalTemplate
- **説明**: 提案書のテンプレートを表すクラスです。
- **属性(フィールド)**:
  - `content: String` - 提案書のテンプレートの内容を保持します。
- **操作(メソッド)**:
  - `getContent()`: 提案書のテンプレートの内容を取得します。

### UserInterface
- **クラス名**: UserInterface
- **説明**: ユーザーとの対話を担当するクラスです。
- **属性(フィールド)**:
  - `generator: ProposalGenerator` - 提案書の生成を行うProposalGeneratorオブジェクトを保持します。
- **操作(メソッド)**:
  - `promptUser()`: ユーザーからの入力を受け取り、ProposalGeneratorに渡します。
  - `displayProposal()`: 生成された提案書の内容をユーザーに表示します。

### Exception
- **クラス名**: Exception
- **説明**: システム内で発生する例外を表すクラスです。
- **属性(フィールド)**:
  - `message: String` - 例外メッセージを保持します。
- **操作(メソッド)**:
  - `getMessage()`: 例外メッセージを取得します。

## 4. ユースケース
1. **提案書の作成**
   - 関連するクラス: UserInterface, ProposalGenerator, ProposalTemplate
   - 関連するメソッド: `promptUser()`, `generateProposal()`, `getContent()`

## 5. シーケンス図
### 提案書の作成
```
+---------------+     +---------------+     +---------------+
|   UserInterface   |     |   ProposalGenerator   |     |   ProposalTemplate   |
+---------------+     +---------------+     +---------------+
       |                        |                        |
       | promptUser()           |                        |
       |---------------------->|                        |
       |                        | generateProposal()     |
       |                        |---------------------->|
       |                        |                        | getContent()
       |                        |<----------------------|
       |                        |                        |
       | displayProposal()      |                        |
       |<----------------------|                        |
       |                        |                        |
```

オブジェクト指向の原則を適用し、クラス間の責務を明確に分離しています。ProposalGeneratorクラスがProposalTemplateクラスを使ってプロポーザルを生成し、UserInterfaceクラスがユーザーとの対話を担当しています。この設計により、柔軟性と拡張性が高まります。

システムの詳細な仕様については、[追加の情報]を参照してください。

出力されたのは、こちらのアプリ要件定義書。

要件定義書には、システムの目的、ファイル・フォルダ構成、クラス図、クラスの詳細、ユースケース、シーケンス図などが含まれていて、.mdファイルで出力されました。

オブジェクト指向の原則を適用し、クラス間の責務を明確に分離しています。

ProposalGeneratorクラスがProposalTemplateクラスを使ってプロポーザルを生成し、UserInterfaceクラスがユーザーとの対話を担当しています。

この設計により、柔軟性と拡張性が高まります。

自然言語で要件を入力し、適切なプロンプトコンパイラを選択するだけで、なんと、このレベルの要件定義書が自動生成されるのです。

本日詳細は割愛しますが、以下のような様々なプロンプトコンパイラがあります。

プロンプトコンパイラ一覧

要件定義書を瞬時に自動生成!エンジニアリングに革命?

この出力結果から分かるように、Zoltraakはたった1行の自然言語の入力から、非常に詳細な要件定義書を自動生成することができるのです。

従来、要件定義のプロセスには以下のようなステップがあり、非常に時間がかかるのが常でした。

  1. ステークホルダーとの要件のヒアリング

  2. 要件の整理・文書化

  3. 関係者との仕様のすり合わせ

  4. 要件定義書の作成・承認

これらの一連の作業に、通常数週間から数ヶ月の期間を要するケースも珍しくありません。

しかし、Zoltraakを使えば、自然言語で要件を端的に表現するだけで、上記のような詳細な要件定義書がわずかな時間で、ほぼリアルタイムにて自動生成されるのです。

私が使用した環境はMac M2 PROで、LLMとしてclaude-3-haiku-20240307のモデルを活用しました。

Zoltraakは、口語的でざっくりとしたプロンプトからでも、AIエージェントが要件を整理し、体系立てて要件定義書を生成してくれます。

これは、従来のソフトウェア開発の常識を根底から覆すような、革新的なアプローチと言えるでしょう。

Zoltraakの可能性はそれだけではありません。

今回は紙幅の都合で割愛しますが、要件定義だけでなく、設計や実装のフェーズでも同様にプロンプトベースで自動化が可能なのです。

プロンプトで開発。プログラミング民主化が加速

Zoltraakのようなツールの登場により、プログラミングのハードルは格段に下がります。

従来、アプリケーション開発にはプログラミング言語の習得が不可欠でした。

しかし、Zoltraakを使えば、自然言語で要件を伝えるだけで、誰でも簡単にアプリを開発することができるのです。

これにより、以下のような未来が見えてきます。

  • 業務の生産性を高めるツールを、現場のビジネスパーソンが自ら開発

  • アイデアを形にしたいクリエイターが、プログラミングを学ばずにWebサービスを立ち上げる

  • 社会課題の解決に向けて、市民がボランティアでアプリを開発

プログラミングの敷居が下がることで、ソフトウェア開発の民主化が大きく進むでしょう。

一方で、エンジニアの働き方も変わっていきますね。

定型的な要件定義や設計のタスクはAIに任せ、エンジニアはより創造的で付加価値の高い仕事にフォーカスできるようになるのです。

Zoltraakが切り拓く「魔法」の世界

Zoltraakは本格的な魔法時代の始まりを象徴する強大な創造魔法の名前です。

これまでの未体系であった呪文からの術の発動を、魔法の文法体系に昇華しより高速かつ広範囲な術式展開と強大な魔法の発動を可能とするシステムです。

Zoltraakは自然言語を実行言語に変換するプロンプトコンパイラシステムを採用し、数語の呪文から起動術式を用いて複雑な術式を展開しこれを即時実行可能な古代システム語へとコンパイルします。

これにより術師の数語の呪文は強力な言霊の数々を織り込んだ魔法陣を通り魔法の範囲と威力を大幅に向上させることが可能となります。また詠唱、無詠唱での高速な創造魔法を実現可能とします。これにより相対する敵よりも圧倒的に高速かつ柔軟な術の発動を可能とします。

以下将来的にTODO: 独自言語呪文や暗号呪文へのコンパイルも可能とするため周りから呪文を抜き取られリバースエンジニアリングされる心配もありません。 微調整の後それを古代語として圧縮し呪文を秘匿する事も可能です。 また、独自言語を用い数語微修正するのみで、実行言語が瞬時に変わり術が発動します。

https://github.com/dai-motoki/zoltraak/

MOTOKI氏の発言は、非常にビジョナリーかつ哲学的な概念で、とても難しいですw

Zoltraak開発者のMOTOKI氏は、同ツールを「創造魔法」と表現しています。

数語の呪文(=プロンプト)から、強力な魔法(=高度なプログラム処理)を発動する。

Zoltraakは創造魔法である

それがZoltraakの本質だと述べています。

この言葉から推測するに、MOTOKI氏はエンジニアだけでなく、あらゆる人が数語の呪文、つまりプロンプトから自在にAIを活用し、創造的なサービスを生み出せる世界、そのようなビジョンを目指しているのでしょう。

そのビジョンがあるからこそ、これだけ価値のあるZoltraakというツールをあえて、オープンソースで公開し、コミュニティドリブンで開発を進めているのではないかと思われます。

プロンプトは瞬時に実行され、あたかも魔法のように問題を解決する

システム開発は、本来、ある問題を解決しようとシステムの達成目的や実装仕様を決めて、ソフトウェアにて実行可能な具体的なプログラムに落としていき、一つずつソースコードを書いて形にしていく作業でした。

しかも最近は、解決しなきゃいけない社会問題がたくさんあって、しかもどれも複雑で、簡単には解決できないものばかり。

複雑化する社会問題とZoltraakという魔法

こういう難しい問題に立ち向かうために、これまではリアルタイム処理やストリーミング、マルチAIエージェントといった、処理方法は従来からも使われてきました。

そして、LLMのAI性能が急激に上がってきた背景がある中で、今まさに注目を集めているのが、この「Zoltraak」というツールなんです。

Zoltraakは、プロンプト(つまり指示)を入力するだけで、プログラムが自動的に作られちゃうという、まるで魔法みたいなツール。

難しいプログラミングの知識がなくても、誰でも簡単にシステム開発ができてしまうんです。すごいですよね!

プログラマーは、魔法使いのような存在になる?

Zoltraakのようなツールが発展していくと、近い将来、プログラマーたちは魔法使いのような存在になるのかもしれません。

魔法陣(コンピュータの周りに電波をシールドする装置)を貼って、魔法の呪文(プロンプト)を唱えれば、AIがそれを理解して、必要なプログラムを一瞬で作り出す。

さらには、魔法の図書館(プログラムのデータベース)から必要な情報を引き出したり、

魔法の杖(コンピュータのパワーを最大限に引き出すツール)を使ったりしながら、次々と問題に立ち向かい、解決していく。

なんだかファンタジーの世界のようですが、Zoltraakに代表されるような最新の魔法テクノロジーを使えば、その夢も現実になるのかもしれません。

杖はペンよりも強し

これからは、ペンよりも杖が強い時代が来るのかもしれません。

人々は自然言語という美しい呪文を唱えるだけで、複雑な問題を解決し、新しい価値を生み出していく。

そんな「魔法」にあふれた世界を、Zoltraakは切り拓こうとしているのです。

「Zoltraak」の可能性ともたらす未来

この記事を通じて、みなさんもZoltraakの可能性を感じていただけたのではないでしょうか。

このオープンソースのツールを使えば、みなさんもアイデアを自在に形にできるはずです。

プログラミングスキルは一切不要。ぜひ、思い描くサービスの実現に挑戦してみてください。

例えば、「この世界の平和を守る」と言うだけで、強力な防御魔法が発動するような世界。

そんな世界が、そう遠くない将来に到来するのかもしれません。

魔法の未来は、きっと美しい自然言語で語られる言葉で構成される優しい世界となるでしょう。

そしてそれを自由自在に操る方々を、人は魔法使いと呼ぶのかもしれません。

これからのZoltraakのますますの発展から目が離せません。
ではまた!

バックナンバー:
01 生成AI基礎とLLM5選紹介【入門編】
02 生成AIプロンプト基礎【魔法使い入門】
03 プロが教える生成AIプロンプトの極意 *有料記事


いいなと思ったら応援しよう!