00:00:08 特定のドメイン言語(DSL)とその多様性。
00:01:36 DSLの例:数理計画のためのAMPL、WebページのためのHTML。
00:03:00 特定のタスクにおける汎用プログラミング言語に対するDSLの利点。
00:05:22 Lokadがさまざまな状況でサプライチェーン最適化のためにDSLを使用する方法。
00:07:23 より速くより信頼性の高い設定のためにDSLを使用する利点。
00:09:35 DSLの制限とサプライチェーン最適化におけるその利点。
00:12:55 一般的なプログラミング言語と比較してDSLのセキュリティ上の影響。
00:13:01 DSLを開発するための時間のかかるプロセス。
00:14:49 独自のDSLを開発することを検討しているスタートアップへのアドバイス。
00:16:01 DSLの未活用と伝統的な解決策による不満のある製品。
00:17:26 DSLと主流のプログラミング言語の使用のジレンマとその結果。
00:18:32 特定のドメイン言語としてのSQLとHTMLの成功例。
00:19:46 さまざまな産業でのDSLの潜在能力と変革力。
00:21:19 DSLの使用における結論と潜在的な将来の展開。

要約

このインタビューでは、サプライチェーン最適化企業Lokadの創設者であるJoannes Vermorel氏と、Kieran Chandler氏が特定のドメイン言語(DSL)について話し合っています。DSLは、JavaやPythonのような汎用言語とは異なり、特定のタスクに特化したプログラミング言語です。Vermorel氏は、DSLが自動車産業などの業界で使用され、アンチロックブレーキシステムなどの重要なコンポーネントのバグフリーな動作を提供することを説明しています。また、Lokadが自社のDSLであるEnvisionを開発し、サプライチェーン最適化を効率化していることも述べています。Vermorel氏は、効率的な計算や特定のドメインへのカスタマイズなど、DSLの利点を強調しつつ、それらを開発する際の課題や時間のかかる性質も認識しています。

詳細な要約

このインタビューでは、ホストのKieran Chandler氏が、サプライチェーン最適化に特化したソフトウェア企業であるLokadの創設者であるJoannes Vermorel氏と特定のドメイン言語(DSL)について話し合っています。

DSLは、一般的なプログラミング言語(JavaやPythonなど)とは異なり、非常に特定の問題を解決するために設計されたプログラミング言語の特定のクラスです。一般的なプログラミング言語は、コンピュータでできるすべてのことを便利で生産的かつ効率的な方法で行うために設計されていますが、DSLは特定の問題の解決に焦点を当てています。最初の特定のドメイン言語のいくつかは、数理計画などの非常に特定のタスクのために作成されました。

DSLは、実世界のアプリケーションでさまざまな産業の重要なコンポーネントを実装するために使用されます。たとえば、自動車業界では、DSLを使用して車のアンチロックブレーキシステム(ABS)を制御するソフトウェアを開発することがあります。このコンポーネントの障害はブレーキ能力の喪失につながる可能性があるため、ほぼバグフリーなシステムを作成することが目標です。一方、主流のプログラミング言語では同じレベルのバグフリーな動作を提供することができない場合もあります。

DSLの別の例はHTMLであり、ウェブページの作成に特化しています。HTMLは一般のプログラミング言語よりもアクセスしやすく、シンプルであり、非技術的なユーザーや小学生でも使用することができます。ただし、このシンプルさには制約があります。HTMLは機能が制限されており、ウェブページのレイアウトの制御しか許可しておらず、ロボットの制御や人工知能の開発などのより複雑なタスクを実行することはできません。

DSLを使用する理由について尋ねられた際、Vermorelは、DSLに適したタスクに一般のプログラミング言語を使用するとプロセスが複雑化すると説明しています。たとえば、ウェブページのデザインに一般のプログラミング言語を使用すると、画面上のすべてのピクセルを制御する必要がありますが、HTMLの場合はタイトル、フォントサイズ、テキストの整列などのシンプルなマークアップ言語要素を使用するだけです。

Vermorelは、サプライチェーンの問題は多様であり、2つの企業がまったく同じではないと説明しています。企業は異なるIT環境、アプリケーションの環境ERP、WMS、その他のシステムの組み合わせを持っています。この多様性は、サプライチェーンの最適化を目指すソフトウェアソリューションに対して、ワンサイズフィットオールのアプローチを取ることを困難にします。設定に依存する従来のフレームワークは、各クライアントごとに詳細なカスタマイズと設定が必要であり、時間と費用がかかります。

すべてのクライアントの状況に異なるソフトウェアが必要であることを認識し、Lokadはより効率的で信頼性の高いプロセスを開発することを目指しました。彼らは自社のDSLであるEnvisionを作成し、設定プロセスを効率化し、より迅速かつ生産的にしました。Vermorelは、C#、F#、およびTypeScriptなどの一般的なプログラミング言語を既に広範に使用しているが、それらを使用してクライアントの要求に対処することは遅くて高価であると述べています。Envisionは、サプライチェーンの最適化の独特な要求により適した、よりアジャイルな設計がされています。

Vermorelは、多くのサプライチェーンソフトウェアソリューションが膨張してしまう理由の1つは、あらゆる可能な機能とユースケースに対応しようとするためだと強調しています。Lokadは異なるアプローチを選び、Envision自体がソフトウェア製品であり、その機能を持つタイトリーフォーカスなDSLを開発しました。これにより、Envisionを使用して各クライアントのカスタム実装を作成することができます。Envisionのコンパイラと環境はC#、F#、およびTypeScriptで実装されています。

Vermorelは、DSLを使用することで制約が発生する可能性があるが、特定の状況ではこれが有利になることがあると説明しています。たとえば、大規模なデータセットを使用して大規模なサプライチェーンを最適化する場合、一般的なプログラミング言語を使用して計算が特定の時間枠内で完了することを保証することは困難です。適切な制約が設けられたDSLは、計算が時間内に完了し、サプライチェーンの中断を防ぐことができます。

ただし、DSLを開発することは時間がかかる場合があります。Vermorelは、自社のDSLを開発するのにほぼ10年かかったと共有しています。この長い開発時間は、スタートアップの速いペースとは相容れない場合があります。DSLを開発する上での主な課題は、解決すべき核心の問題を再考し、それらを解決するために必要な論理的なプリミティブを定義することです。これには、プログラミング言語の構文と演算子を設計し、それらが対象の問題と一致するようにする必要があります。

課題にもかかわらず、VermorelはDSLの道が未開拓であり、スタートアップにとって有益であると考えています。DSLの開発は、ソフトウェアエンジニアや一般的なプログラミング言語の必要性を置き換えるものではありません。実際、それ以上のソフトウェアエンジニアが必要になる場合もあります。ただし、特定の問題領域に焦点を当てることで、DSLは効率性、セキュリティ、最適化の観点で利点を提供することができます。

Vermorelは、まず従来のエンタープライズソフトウェアの制約について説明し、それが膨張し管理が困難になることを指摘します。そして、この問題の解決策としてDSLの概念を紹介します。DSLは、特定のドメインや産業に特化したプログラミング言語であり、専門の機能と最適化を提供します。

Vermorelは、現在の市場において多くのソフトウェア製品が満足のいくものではなく、大企業向けソフトウェアに似ていると指摘しています。彼は、マルチチャネルオーダーマネジメントシステム(MOMS)の例を挙げています。これらのシステムは、数百の画面と数千のオプションを持つエンタープライズリソースプランニング(ERP)システムに似て成長しています。最初の目標であるERPとの差別化が失われ、結果として得られる製品は元のERPよりもほとんど改善されていません。

彼は、MOMSの場合、DSLの使用によってよりスリムでパワフルな製品になった可能性があると主張しています。ただし、DSLの採用には数年にわたる頭痛や制約などの課題が伴います。一方、より一般的なプログラミング言語を使用することで、より迅速な成長が可能になるかもしれませんが、管理しきれない製品につながる可能性もあります。

DSLの成功例の1つは、関係データベースの管理に使用されるSQL(Structured Query Language)です。Vermorelは、DSLが非常に成功すると、人々がそれが最初にDSLであることを忘れることがよくあると指摘しています。彼は、Lokadを使用した供給チェーンの最適化など、さまざまな産業でDSLの大きなポテンシャルがあると考えています。

Chandlerは、DSLが有益である他の産業について尋ねます。Vermorelは、マーケティングが1つの可能性であり、企業がしばしばニーズに合わない複雑なソフトウェアソリューションに苦しんでいると提案します。人事も、各企業の独自の文化を反映しており、一つのサイズが全てに適用できるアプローチが効果的ではないため、DSLが適切な解決策を提供できる可能性があります。

フルトランスクリプト

Kieran Chandler: 今日は、DSLの開発方法について詳しく知り、より一般的なプログラミング言語と比較してなぜ有利なのかを理解することができます。では、ジョアネスさん、まずDSLとは具体的に何であり、どのように機能するのかについて、もう少し詳しく教えていただけますか。

Joannes Vermorel: DSLは、JavaやPython、C++などの一般的なプログラミング言語とは異なり、コンピュータ上でプログラムできるすべてのことの解決策として設計されていない、特定のクラスのプログラミング言語です。一般的なプログラミング言語は、コンピュータや複数のコンピュータで行えるすべてのことを最も便利で生産的で効率的な方法で行うことに関してです。しかし、ドメイン固有のプログラミング言語はまったく別のものです。それはコードを伴い、形式的で抽象的ですが、非常に特定のタイプの問題を解決するために設計されています。たとえば、歴史的には、最初のドメイン固有のプログラミング言語は、主にAMPLなどの数学的なプログラミング言語であり、非常に特定のタスクを実行するために設計されていました。

Kieran Chandler: では、ドメイン固有の言語を使用する場合、どのような問題に使用することができ、実際の世界ではどのように使用されているのでしょうか。

Joannes Vermorel: 実際の世界では、歴史的な応用例としては、重要なコンポーネントの実装が挙げられます。たとえば、車のABS(アンチロックブレーキシステム)を駆動するソフトウェアの一部を持ち、このものがクラッシュしないことを証明したい場合です。なぜなら、もしクラッシュした場合、車は突然ブレーキ能力を失ってしまうからです。これはかなり深刻な状況であり、あまりバグのないものを作ろうと思うでしょう。これは組み込み側の話です。次に、ウェブページのHTMLなどの問題があります。これはプログラミング言語ですが、このものをよりアクセスしやすくしたいと思っています。HTMLを小学校で学べる理由は、非常にシンプルであるためです。基本的な部分は、技術的にはあまり詳しくない人でも非常にアクセスしやすいです。ただし、トレードオフとして、HTMLはウェブページのレイアウトを制御することができますが、ロボットを制御したり人工知能を行ったりすることはできません。

Kieran Chandler: だから、それらは非常にシンプルで制約が多いです。つまり、なぜより表現力のある主流のプログラミング言語を使用しないのですか?それらはそれを行うことができる能力を持っているため、なぜそれらを使用しないのですか?

Joannes Vermorel: たとえば、HTMLのウェブページについて考えてみると、単に「タイトル」、「大きなフォントサイズ」、「本文」などと言えるマークアップ言語ではなく、「テキストを整列させたい」とか「画面上のピクセルを一つ一つ制御する」と考えなければならないとなると、実用的ではありません。

Kieran Chandler: …これは、スーパーローレベルなアプローチから得られるものであり、さらに低レベルになると、グラフィックカードを直接制御して超高性能を実現すると言えます。これは、実際にはビデオゲームのための3Dエンジンを構築している場合に行うことになるでしょう。しかし、ウェブページのようなシンプルなことをしたいだけの場合、その方法では無限の時間がかかってしまいます。3Dビデオゲームを通じて、HTMLなどのIDを使用する方がはるかにシンプルで直接的です。それで、私たちの供給チェーン企業であるLokadでは、非常に興味深いトピックであると感じました。私たちは自分たちのDSLを生成したので、それについて非常に詳しいです。

Joannes Vermorel: 供給チェーンに関する困難な点は、問題が非常に多様であることです。まったく同じような2つの企業はないと言っても過言ではありません。彼らは同じアプリケーションの景色を持っていません。一部の企業は1つのERPを持っていますが、多くの企業は悪い理由で2つのERPを持っています。彼らはWMSを持っています。彼らは複数のWMSを持っています。彼らは異なる国で異なるIT環境で運営しているため、10の異なるERPを持っています。後から来た電子商取引プラットフォームも別のものです。彼らは追加のアクセラレータを持っています。したがって、私たちが行いたかったのは、供給チェーンの最適化を行うことであり、最初の数年間で、設定可能なフレームワークを持つ従来のアプローチではうまくいかないことに気付きました。状況が非常に多様であるため、すべてのクライアントごとにカスタマイズと設定の大量が必要になってしまいました。文字通り、ソフトウェアが完全に棚から降りてくるが、ソフトウェアの設定に6ヶ月かかるのは本当に設定なのでしょうか?それとも新しいソフトウェアを作り直しているのでしょうか?実際のところ、そうです。だから、私たちはこのアプローチを次の論理的なステップに進めることにしました。つまり、私たちが状況に直面するたびに、異なるソフトウェアが必要になる場合、非常に生産的で迅速かつ信頼性の高いプロセスをサポートするものを持つことはどうでしょうか?そして、実際に、それがドメイン固有言語(DSL)のアイデアが生まれた場所です。

Kieran Chandler: もしもより主流のプログラミング言語を使用した場合、その設定にはより多くの時間がかかるでしょう。制約のある環境を持つことは、作業をはるかに迅速に行うことができるということです。

Joannes Vermorel: それは興味深いですね。Lokadでは、汎用のプログラミング言語を使用しています。私たちは最初からC#、C#.NETを使用しており、後にさまざまな目的でF#とTypeScriptを追加しました。したがって、私たちは既に汎用のプログラミング言語を広範に使用しており、これらの言語で何ができるかについて非常に詳しいです。しかし、Lokadの最初の数年間で、この種のプログラミング言語を使用してクライアントの要求に対処することは非常に遅く、コストがかかることに気付きました。したがって、私たちはより良いものが必要であり、問題はそれらのプログラミング言語に慣れていなかったわけではありませんでした。それらのプログラミング言語を毎回使用することは、わずかに悪夢のようでした。ところで、それが供給チェーンソフトウェアソリューションが巨大なモンスターピースになる一因でもあります。それらはソフトウェア製品にすべてを詰め込もうとするため、ソフトウェアモンスターになってしまいます。だから、私たちは言いました。「もしもソフトウェア製品がDSLとその機能だけであったらどうだろう?」と。そして、クライアントに行くときに、C#ではなく、私たち自身のDSLであるEnvisionでカスタム実装を作成します。ただし、Envisionのコンパイラと環境は、実際にはEnvisionではなく、C#、F#、TypeScriptで実装されています。

Kieran Chandler: そうですね。

Joannes Vermorel: そうですね。

Kieran Chandler: ソフトウェア製品が単なるDSLであり、その機能があるものであるとしたら、それは超タイトなコアのようなものであり、そしてクライアントに行くときに、C#ではなく、Envision、私たち自身のDSLで実装されたカスタム実装を作成します。ただし、Envisionのコンパイラと環境は、実際にはEnvisionではなく、C#、F#、およびTypeScriptで実装されています。

Joannes Vermorel: そうですね。

Kieran Chandler: 供給チェーンは非常に多様であり、すべてのクライアントが非常に異なるとおっしゃいましたが、DSLを使用すると制約が発生しますか? 実際に特定のことを実装することを妨げますか?

Joannes Vermorel: 確かに、それが全体のポイントです。驚くかもしれませんが、例えば、最適化したい大規模な供給チェーンがある場合、かなりのデータセットが発生します。たとえば、1テラバイトのデータがあるとしましょう。それは絶対に巨大ではありません。スーパーマーケットに行って、100ユーロ程度で1テラバイトのハードドライブを購入することができます。したがって、データ量は大きいですが、巨大ではありません。ただし、問題は、データセットが毎日更新されることであり、たとえば、再補充の決定や価格の決定などのスマートな供給チェーンの決定を行うために、このデータセットをパスする必要があるということです。

さて、問題は、一般的なプログラミング言語を使用して、計算が60分未満で完了することをどのように保証するかということです。非常に難しいです。任意のループや構造があるとすぐに、実行が特定の時間枠に収まることを証明するのは非常に困難になります。これは、再補充の決定などの計算が、ERPシステム内の短い実行シーケンスに収まる必要がある場合に問題になる可能性があります。この実行を60分以内に完了する必要があります。そうでない場合、計算に時間がかかりすぎるため、供給チェーン全体が混乱します。

Kieran Chandler: そうですね。それは私たちがセキュリティのエピソードで話したことですね。DSLの開発を見てみましょう。Envisionの開発には実際にどれくらいの時間がかかりましたか?

Joannes Vermorel: それはいい質問です。文字通り10年かかります。それは狂気じみています。スタートアップの場合、速く進んで問題を解決し、6ヶ月以内に販売できる最小限の製品を持つことを考えますが、その後、独自のDSLを作り始めると、文字通りのプロセスです。

Kieran Chandler: 確かに、数年にわたる取り組みであり、最も重要な課題は、解決すべき問題の核心を再考する必要があるということです。問題の基本的な側面は何であり、コンピュータでそれらの問題を解決するためにアクセス可能な論理的なプリミティブは何であるべきかを考える必要があります。新しい単語を発明するだけでなく、概念を接続するための論理的なプリミティブを発明する必要があります。最終的には、コンピュータによって完全に自動化された方法でソリューションを生成するために、この言語に対して完全に整列したクラス全体のソリューションをフレームに収めることができます。ただし、プログラミング言語自体、その構文、持っている演算子のタイプについて考えているのです。それらのものを、解決しようとしている問題と完全に整合させたいのです。したがって、今からスタートアップを始める場合、この非常に時間のかかる、非常に困難な言語の開発の道に進むことをお勧めしますか? それとも、より一般的なプログラミングと一緒にとどまり、作業することをお勧めしますか?

Joannes Vermorel: 最初に、DSLを作成することは、主流のプログラミング言語の代替手段として使用するものではありません。もしソフトウェア会社であり、サプライチェーンのような問題を解決するためにこの新しい言語を作成したい場合、これらのプログラミング言語で書かれたプログラムを実行するためにはコンパイラとランタイムが必要です。そして、このコンパイラは通常のプログラミング言語で書かれます。ですので、DSLの道に進むからといってソフトウェアエンジニアが不要になるわけではありません。むしろ、より多くのソフトウェアエンジニアが必要になるでしょう。

スタートアップに関する質問について考えると、DSLの道は非常に野心的であり、まだ十分に活用されていないと思います。急いでいるために、多くのソフトウェア会社やスタートアップが古典的な方法で問題に取り組もうとしており、結果として少し満足のいく製品になっていません。彼らが市場に提供している製品の種類を見ると、興味深いと思いますが、彼らは大企業向けのソフトウェアに直行しているように見えます。それは正確には望ましい方向ではありません。

一つの例として、「マルチチャネル注文管理システム」と呼んでいるものがあります。この道を進んだソフトウェア製品の波があり、大きなものは今では独自のERPのように見えるようになりました。数百の画面、数千のオプションがあり、適切に設定するには数ヶ月かかります。実際には、自分たちを差別化するためによりスリムで展開が速い製品を持つために出発点となったERPよりも優れたものにはなっていません。10年後、ERPと非常に似たものになってしまい、これはDSLを使用することで違いが生まれたかもしれない典型的な問題です。

Kieran Chandler: ドメイン固有言語(DSL)と主流のプログラミング言語を使用したソフトウェア開発の違いについて話し合っています。DSLを使用すると、数年間の頭痛の末に強力でスリムなソリューションにたどり着くことができます。一方、主流のプログラミング言語を使用すると、より急速な成長が可能ですが、管理しづらいシステムになる可能性があります。

Joannes Vermorel: 興味深いことに、最初の成功したDSLの一つはデータベースのクエリ言語であるSQLです。現在では、データベースベンダーは実質的にDSLを販売しており、データベースとのやり取りはドメイン固有言語で書かれたクエリを通じて行われる唯一の方法です。DSLが非常に成功すると、人々はそれがDSLであることを忘れてしまいます。例えば、HTMLは非常に普及しているため、人々はそれをDSLとは考えていません。私は、Lokadを使用したサプライチェーンの最適化など、さまざまな産業でDSLに大きな潜在能力があると考えています。

Kieran Chandler: サプライチェーン業界以外で、DSLの使用により恩恵を受けると思われる他の産業はありますか?

Joannes Vermorel: マーケティングは思い浮かぶ産業の一つです。多くの企業がパワフルさに欠ける複雑なソフトウェアソリューションに苦しんでいるのを見ます。彼らはExcelで多くの作業を行っており、メンテナンスや本番環境への移行が困難です。人事も、DSLが有益である可能性があります。人事管理はしばしば企業の文化を反映しており、一つのサイズが全てに適合するソリューションを持つことは難しいです。私は、DSLがほぼすべての産業において重要な影響を与える潜在能力を持っていると考えていますが、それらの実装方法は問題によって大きく異なる可能性があります。

Kieran Chandler: 今日はここまでにします。今日はお時間をいただきありがとうございました、Joannesさん。

Joannes Vermorel: どういたしまして。

Kieran Chandler: 今日は以上です。ご視聴いただきありがとうございました。また次回お会いしましょう。それでは、さようなら。