00:00:08 ドメイン固有言語 (DSL) とその多様性.
00:01:36 DSLの例: 数学プログラミング向けのAMPLおよびウェブページ用の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 DSLの成功例としてのSQLおよびHTML.
00:19:46 様々な業界におけるDSLの可能性と、その変革力.
00:21:19 結論とDSL利用における将来の発展の可能性.
概要
本インタビューでは、キアラン・チャンドラーがサプライチェーン最適化企業供給チェーン-管理-定義の創業者であるジョアネス・ヴェルモレルと共に、ドメイン固有言語(DSL)について議論します。DSLは、JavaやPythonのような汎用言語とは異なり、特定のタスク向けに設計されたプログラミング言語です。ヴェルモレルは、DSLが自動車産業などで、アンチロック・ブレーキ・システムのような重要なコンポーネントに対してバグのない動作を提供するために使用されていると説明します。また、サプライチェーン最適化を合理化するためにLokadが独自のDSL「Envision」を開発したことにも触れ、DSLが効率的な計算と特定分野へのカスタマイズという利点を持ちながら、開発には課題と時間がかかる点も認めています.
詳細な概要
このインタビューでは、ホストであるキアラン・チャンドラーが、サプライチェーン最適化を専門とするソフトウェア企業Lokadの創業者ジョアネス・ヴェルモレルと共に、ドメイン固有言語(DSL)について議論します.
DSLは、JavaやPythonのような汎用プログラミング言語とは異なり、非常に特定の種類の問題を解決するために設計されたプログラミング言語の一種です。汎用プログラミング言語は、コンピュータで可能なあらゆることを便利かつ生産的、効率的に行うために設計されていますが、DSLは特定の問題解決に焦点を当てています。初期のドメイン固有言語の中には、数学的プログラミングなどごく限定されたタスクのために作られたAMPLなどがあります.
DSLは、様々な産業において重要なコンポーネントの実装に実際の応用で用いられています。例えば、自動車産業では、DSLを用いて車のアンチロック・ブレーキ・システム(ABS)を制御するソフトウェアを開発することがあります。目的は、ほぼバグのないシステムを構築することであり、このコンポーネントが故障するとブレーキ能力の喪失につながる可能性があるためです。対照的に、主流のプログラミング言語では、同じレベルのバグなしの動作を保証できないことがあります.
DSLのもう一つの例は、ウェブページ作成用に設計されたHTMLです。HTMLは、一般的なプログラミング言語よりも扱いやすく単純であり、技術的知識の乏しいユーザーや小学生にも適しています。しかし、この単純さには限界があり、HTMLはウェブページのレイアウト制御に限定され、ロボットの制御や人工知能の開発といったより複雑なタスクは実現できません.
なぜ、より表現力豊かな主流のプログラミング言語ではなくDSLが使用されるのかと問われると、ヴェルモレルは、DSLに適したタスクに対して汎用プログラミング言語を使うと、プロセスが過度に複雑になってしまうと説明します。例えば、ウェブページデザインに汎用プログラミング言語を用いると、HTMLのようなシンプルなマークアップ要素(タイトル、フォントサイズ、テキスト配置など)を使う代わりに、画面上のすべてのピクセルを個別に制御しなければならなくなるのです.
ヴェルモレルは、サプライチェーンの問題は多様であり、どの企業も全く同じということはないと説明します。企業はそれぞれ異なるIT環境、アプリケーション環境、およびERP、WMSなどの各種システムの組み合わせを有しています。この多様性は、すべての企業に共通したアプローチでサプライチェーン最適化に対応するソフトウェアソリューションにとって大きな課題となります。従来の設定ベースのフレームワークは、各顧客ごとに大規模なカスタマイズと設定を要求するため、時間とコストがかかります.
各顧客の状況に応じたソフトウェアが必要であると認識し、Lokadはより効率的で信頼性の高いプロセスを開発することを模索しました。そこで、設定プロセスを合理化し、より迅速かつ生産性の高いものにするために、自社独自のDSL『Envision』を作成することにしたのです。ヴェルモレルは、Envisionの使用とC#、F#、TypeScriptなどの主流のプログラミング言語との対比を述べます。既にこれらの汎用プログラミング言語は広範に使用されていますが、顧客の要求に対応するには、それらでは動作が遅く、コストがかさむことが分かりました。Envisionは、より機敏で、サプライチェーン最適化の固有の要求に適したものとして設計されました.
ヴェルモレルは、多くのサプライチェーンソフトウェア製品が肥大化する理由の一つとして、あらゆる機能やユースケースに対応しようとするためだと指摘します。Lokadは、ソフトウェア製品自体であるEnvisionとその機能を核にした、厳密に絞られたDSLの開発という異なるアプローチを選びました。これにより、Envisionを用いて各顧客向けのカスタム実装を行いつつ、Envisionのコンパイラや環境はC#、F#、TypeScriptで実装することが可能となっています.
ヴェルモレルは、DSLの使用には制限が伴うこともあるが、特定の状況下ではそれが有利に働く場合があると説明します。例えば、大規模なデータセットを伴う大規模サプライチェーンの最適化では、汎用プログラミング言語を用いて計算が特定の時間内に完了することを保証するのは困難です。適切な制限を設けたDSLは、計算が時間通りに完了することを保証し、サプライチェーンでの混乱を防ぐことが可能です.
しかし、DSLの開発は時間を要するプロセスとなり得ます。ヴェルモレルによれば、同社が独自のDSLを開発するのにほぼ10年を要したとのことです。この長い開発期間は、急速に動くスタートアップの性質と相反することがあります。DSL開発における最大の課題は、解決すべき根本的な問題を再考し、それを解決するために必要な論理的プリミティブを定義することにあります。つまり、プログラミング言語の構文や演算子を、対象となる問題に合わせて設計するということです.
課題はあるものの、ヴェルモレルはDSLの道が十分に活用されておらず、スタートアップにとって有益であり得ると考えています。DSLの開発は、ソフトウェアエンジニアや主流のプログラミング言語の必要性を排除するものではなく、むしろより多くのソフトウェアエンジニアを要求するかもしれません。しかし、特定の問題領域に焦点を合わせることで、DSLは効率性、セキュリティ、最適化の面で利点をもたらすことができます.
ヴェルモレルは、まず従来のエンタープライズソフトウェアが肥大化し管理が困難になるという制約について議論し始めます。そして、この問題に対する潜在的解決策としてDSLの概念を紹介します。DSLは、特定のドメインや産業に合わせた専門的な機能と最適化を提供するプログラミング言語です.
ヴェルモレルは、今日市場に出回っている多くのソフトウェア製品が満足のいくものではなく、大規模なエンタープライズソフトウェアのようになってしまう傾向があると指摘します。彼は、数百の画面と数千のオプションを備えたエンタープライズリソースプランニング(ERP)システムに似通ってしまったマルチチャネル-オーダー-マネジメント-momsの例を挙げます。ERPとの差別化という当初の目標は失われ、その結果、出来上がった製品は元のERPよりもあまり優れていないのです.
彼は、MOMSの場合、DSLを使用することでより洗練された強力な製品が実現できた可能性があると論じます。しかし、DSLの採用は、数年に渡る頭痛の種や制約といった課題を伴います。一方、より主流のプログラミング言語を使用すれば、迅速な成長が見込めるかもしれませんが、結果として管理不能な製品につながる可能性があります.
DSLの成功例の一つとして、リレーショナルデータベース管理に用いられるプログラミング言語であるSQL(Structured Query Language)があります。ヴェルモレルは、DSLが非常に成功すると、人々はそれがもともとDSLであったことを忘れがちになると指摘しています。彼は、Lokadによるサプライチェーン最適化を含む様々な産業において、DSLには大きな可能性があると考えています.
チャンドラーは、DSLが有益となり得る他の産業について問いかけます。ヴェルモレルは、企業が自社のニーズを十分に満たすほど強力でない複雑なソフトウェアソリューションに悩むマーケティングが一例として挙げられると示唆します。さらに、人事分野も各企業の独自の文化を反映するため、一律のアプローチでは効果が出にくく、DSLがカスタマイズされた解決策を提供できる領域であると述べています.
完全な文字起こし
Kieran Chandler: 今日は、DSLがどのように開発されるのか、また、なぜ主流のプログラミング言語と比べて有利なのかをもう少し詳しく見ていきたいと思います。それでは、ジョアネス、DSLが実際に何であり、どのように機能するのかについて、もう少し教えていただけますか。
Joannes Vermorel: DSLは、Java、Python、C++のような汎用プログラミング言語とは異なり、コンピュータで可能なすべてのことに対する解決策として設計されていない、特定の種類のプログラミング言語です。汎用プログラミング言語は、コンピュータあるいは複数のコンピュータで可能なあらゆる作業を、もっとも便利で生産的かつ効率的に行う手段を提供します。しかし、ドメイン固有のプログラミング言語は全く異なるものです。プログラミングである以上、コードが伴い、形式的で抽象的ですが、非常に特定の種類の問題を解決するために設計されています。例えば、歴史的には、最初のドメイン固有言語は主に数学的プログラミングなど、ごく限定されたタスクのために作られたAMPLのようなものでした.
Kieran Chandler: では、ドメイン固有言語は具体的にどのような問題に使用され、実際の世界ではどのように活用されているのでしょうか?
Joannes Vermorel: 実際の世界での一例として、重要なコンポーネントの実装があります。例えば、車のABS、すなわちアンチロック・ブレーキ・システムを駆動するソフトウェアが必要で、そのシステムが決してクラッシュしないという保証が求められます。もしクラッシュすれば、車は突然ブレーキ能力を失ってしまいます。これは非常に深刻な状況であり、ここではバグの多発を避ける必要があります。これは組み込みシステムの面です。次に、ウェブページ用のHTMLのようなケースがあります。HTMLはプログラミング言語ですが、よりアクセスしやすいものにしたいと考えられています。小学校でHTMLが学べるのには、非常にシンプルであるという理由があります。基本的な部分は、技術にあまり詳しくない人でも容易に扱えるのです。しかし、トレードオフとして、HTMLはウェブページのレイアウト制御は可能ですが、ロボットの制御や人工知能の実装はできません.
Kieran Chandler: つまり、とてもシンプルで制約が多いということですね。では、なぜこれらのタスクに対して、より表現力が高く実行可能な主流のプログラミング言語を使用しないのですか?
Joannes Vermorel: 例えばHTMLのウェブページを考えると、単に「title」や「big font size」、「body of text」、「text justified」といったシンプルなマークアップ言語で済むところを、すべてのピクセルを個別に制御しなければならないと考えると、それは現実的ではありません.
Kieran Chandler: …これは非常に低レベルなアプローチで得られるものですが、さらに低レベルにすると、例えばグラフィックカードを直接制御して超高性能を実現する、といったことになります。実際、ビデオゲーム用の3Dエンジンを構築する際にはそのようなことを行うでしょう。しかし、単にシンプルなウェブページを作るだけなら、その方法では到底実現できません。3Dビデオゲームの場合、HTMLのようにIDなどを用いる方がずっと簡単で直接的です。さて、これは私たちLokadが独自のDSLを生み出したという点で非常に身近なテーマですが、なぜこれがサプライチェーン企業である私たちにとってそれほど興味深かったのでしょうか?
Joannes Vermorel: サプライチェーンにおいて苛立たしいのは、問題が非常に多様である点です。つまり、全く同じ会社は二つとなく、例え似ているように見えても、アプリケーション環境は一致しません。ある会社はERPを1つ保有し、多くの会社は様々な悪い理由でERPを2つ持っています。彼らはWMSを持ち、さらに複数のWMSを運用しています。10カ国それぞれで異なるIT環境の中で運営しているため、10種類のERPを持っていたり、後から導入された別物のeコマースプラットフォームを持っていたり、さらには追加のアクセラレータも存在します。そこで、サプライチェーン最適化を実現しようとしたとき、初期の頃に「設定可能なフレームワーク」を使う従来のアプローチでは通用しないと気づいたのです。状況が非常に多様なため、クライアントごとに膨大なカスタマイズや設定作業が必要になってしまいました。そして、既製のソフトウェアが存在しても、その設定だけで6か月もかかるとしたら、本当に「設定」と呼べるのでしょうか?それは、新たなソフトウェアを実質的に再発明しているに過ぎません。現実にはそうなってしまうのです。そこで、我々は「毎回状況に応じて異なるソフトウェアが必要ならば、そのプロセスを非常に生産的かつ迅速、そして信頼性高くサポートする何かはないか?」と考え、そこからドメイン固有言語(DSL)のアイデアが生まれたのです。
Kieran Chandler: ですから、より主流のプログラミング言語を使う場合、その設定にはかなりの時間がかかりますが、そういった制約のある環境があれば、物事をはるかに迅速に進めることができるのです。
Joannes Vermorel: 興味深いですね。Lokadでは初めからC#、C#.NET、いわゆるMicrosoftのプログラミングスタックを使用しており、その後も様々な目的でF#やTypeScriptを追加してきました。すでに汎用プログラミング言語を広範囲に使用しており、その言語で何ができるかは十分に把握しています。しかし、Lokad初期の頃、これらのプログラミング言語でクライアントの要望に対応するのは、信じられないほど鈍く、コストもかかることに気づいたのです。必要だったのは、より良い何かであり、言語に不慣れだったのが問題ではありませんでした。クライアントごとに毎回その言語を使い回すのは、ほとんど悪夢のような作業だったのです。ちなみに、これがサプライチェーン向けソフトウェアソリューションが巨大なモンスターソフトウェアになってしまう一因でもあります。すべてを盛り込もうとするため、結果としてソフトウェアモンスターになってしまうのです。そこで、もしソフトウェア製品が
Kieran Chandler: もしソフトウェア製品が単にDSLとその機能、つまり非常にコンパクトなコアであって、クライアント先ではC#ではなく自社のDSLであるEnvisionを使ってカスタム実装を行うとしたらどうでしょう?ただし、Envisionのコンパイラと実行環境自体は、実際にはEnvisionで実装されず、C#、F#、およびTypeScriptで実装されているのです。
Joannes Vermorel: わかりました。
Kieran Chandler: 先ほどおっしゃったように、サプライチェーンは非常に多様で、クライアントごとにも大きな違いがあります。DSLを使うことで、何らかの制限が生じるのではないでしょうか?特定の事柄を実装するのを妨げることはありませんか?
Joannes Vermorel: その通りです。驚くかもしれませんが、これこそが要点なのです。例えば、最適化したい大規模なサプライチェーンがあり、かなりの大きさのデータセットになるという基本的な問題があります。仮に1テラバイトのデータがあったとしても、それは決して莫大なわけではなく、スーパーマーケットで約100ユーロの1テラバイトハードドライブが買えるようなものです。つまり、データ量は大きいですが、途方もなく大きいわけではありません。そして問題は、そのデータセットが毎日更新され、例えば補充決定や価格設定といったスマートなsupply chain decisionsを行うために、全体を一巡させる必要がある点にあります。
もし汎用プログラミング言語を使用している場合、計算が例えば60分以内に完了することをどのように保証しますか?任意のループや構造を用いると、実行が特定の時間内に収まると証明するのは非常に困難です。もしERPシステム内で、補充決定などのために厳密な実行順序が求められる計算を行うのであれば、60分以内に計算を完了させなければならず、さもなければ計算に時間がかかりすぎてサプライチェーン全体が混乱してしまうのです。
つまり、汎用プログラミング言語は何でも可能なため、このような時間内完了の保証を提供するのが非常に難しいのです。しかし、適切な制限があるDSLなら、設計という別の視点からアプローチできます。汎用プログラミング言語で完全に安全なプログラミング環境を提供するのは極めて困難です。Java、Python、C#などでは、セキュリティ脆弱性の全く別のカテゴリーに晒されることになります。コンピュータで何でもできるなら、ITセキュリティの観点から比較的危険な操作を行うリスクも伴うのです。
さらに、DSLを用いることで、OS操作などそもそもアクセス不可能なカテゴリーの機能が排除され、結果として自分に関係のない問題がすべて除外されます。結局、あなたが注目すべきはサプライチェーンの最適化だけなのです。
Kieran Chandler: ええ、これこそが私たちがセキュリティエピソードで話し合った内容です。では、DSLの開発について見てみましょう。あなたの立場からすると、これらの言語の開発には実際どのくらいの時間がかかるのでしょうか?Envisionの開発はどれほどの期間を要したのですか?
Joannes Vermorel: 良い質問ですね。実際、文字通り10年かかります。これは少々常軌を逸しています。スタートアップの場合、「迅速に動いて物を壊せ」という精神で、6か月以内に販売可能な最小限の製品を作り、その後自社DSLの構築に取り掛かるというプロセスになるのです。
Kieran Chandler: 確かに、これは複数年に及ぶ取り組みであり、最大の課題は、解決すべき問題の本質を根本から再考する必要があるということです。問題の基本的な側面は何か、そしてコンピュータでそれらの問題を解決するためにどのような論理的プリミティブが必要かを考え直さなければなりません。これは単に新しい単語を作る以上に、概念を結びつける論理的プリミティブを発明し、最終的にはその言語で解決策の全体像を自動生成できるようにすることを意味します。しかし、これはプログラミング言語自体、すなわちその構文や演算子の種類について深く考えることになり、解決しようとしている問題と完全に一致させる必要があるのです。ですから、もし今からスタートアップを始めるとしたら、この非常に時間がかかり困難な道を進むべきでしょうか?それとも、主流のプログラミング言語を使い続けるほうがよいでしょうか?
Joannes Vermorel: まず、DSLの構築は主流のプログラミング言語の代替手段として使えるものではありません。ソフトウェア企業として、例えばサプライチェーンの問題を解決するためにこの新言語を作ろうとするなら、そのプログラムを実行するためのコンパイラとランタイムが必要になります。そして、このコンパイラは従来のプログラミング言語で実装されるのです。つまり、DSLの道を選んだからといってソフトウェアエンジニアが不要になるわけではなく、むしろより多くのエンジニアが必要になるのです。
スタートアップ向けの話をすると、DSLの道は非常に野心的であるために著しく活用されていない点が興味深いです。多くのソフトウェア企業やスタートアップが、急いでいるために従来の方法で問題解決を試み、結果としてやや満足のいかない製品に終わってしまっています。市場に出回る製品を見ると、興味はあるものの、結局それらは巨大なエンタープライズソフトウェアへと向かっているように見え、本来目指すべき方向とは異なってしまうのです。
一例として、私が「マルチチャネルオーダーマネジメントシステム」と呼ぶものがあります。この道を進んだソフトウェア製品の波があり、現在では大規模なものが独自のERPのようになり、画面が何百もあり、選択肢が何千もあって、適切に設定するのに何ヶ月もかかる状態になっています。これらは、差別化のために最初はERPを超える製品を目指していたにもかかわらず、結局は従来のERPに非常に近いものになってしまうのです。おそらく、こうした問題はDSLを用いることで改善できた典型例でしょう。
Kieran Chandler: 私たちは現在、ソフトウェア開発におけるドメイン固有言語(DSL)と主流プログラミング言語の使い分けの違いについて議論しています。DSLを用いると、何年も頭を悩ませるかもしれませんが、最終的には強力でシンプルなソリューションが得られる可能性があります。一方、主流の言語を用いると、急速な成長は期待できるものの、結果として管理が難しいシステムになってしまうかもしれません。
Joannes Vermorel: 注目すべきは、初期の成功例の一つがデータベースのクエリ言語であるSQLであったことです。今日では、すべてのデータベースベンダーが実質的にDSLを提供しており、データベースとのやり取りはドメイン固有の言語で書かれたクエリを通してのみ行われます。DSLが非常に成功すると、その言語がDSLであるという事実すら忘れ去られてしまうのです。例えば、HTMLはあまりにも普及しているため、DSLと考えられることはほとんどありません。私は、Lokadによるサプライチェーン最適化のように、DSLには様々な業界で大きな可能性があると信じています。
Kieran Chandler: サプライチェーン業界以外では、DSLを活用することでどの業界が恩恵を受けると思いますか?
Joannes Vermorel: 例えばマーケティング業界が挙げられます。多くの企業が、十分な力を発揮できない複雑なソフトウェアソリューションに苦しんでおり、結果としてExcelに頼りすぎる状況になっていますが、これを維持管理し本番環境に移行するのは非常に困難です。さらに、人事管理もDSLが有益になり得る分野です。人事管理は企業文化を反映するため、どの企業にも共通の解決策を用意するのは難しいのです。DSLはほぼあらゆる業界に大きな影響を与える可能性があると私は考えていますが、その実装方法は問題ごとに大きく異なってくるでしょう。
Kieran Chandler: ところで今日はこの辺で。お時間いただきありがとうございました、Joannes。
Joannes Vermorel: どういたしまして。
Kieran Chandler: 本日の内容は以上です。ご視聴ありがとうございました。また次回お会いしましょう。さようなら。