


DRAKON (ロシア語: Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность , lit.「明瞭さを提供するフレンドリーなロシア語アルゴリズム言語」 ) は、ソフトウェア開発の生産性向上の必要性を受けて、1986 年に消滅したソ連のブラン宇宙計画[ 2 ]の一部として開発された、無料のオープンソースのアルゴリズムビジュアルプログラミングおよびモデリング言語です。ビジュアル言語は、フローチャートでプロセスを表現するための統一された方法を提供します。
実際のフローチャートを描画およびエクスポートするために使用できる言語仕様の実装は様々である。注目すべき例としては、無料のオープンソースであるDRAKON Editor(2011年9月)が挙げられる。
DRAKONの開発は、ロシアの宇宙開発計画において、異なるプログラミング言語を使用するユーザー間の誤解、ひいてはそれに伴うエラーのリスクに対処するため、1986年に開始されました。開発はウラジーミル・パロンジャノフが指揮し、ロシア連邦宇宙局(モスクワ、アカデミシャン・ピリュギン・センター)とロシア科学アカデミー(ケルディシュ応用数学研究所)が参加しました。
この言語は、 ISO 5807-85 規格およびロシア規格「Гост 19.701-90」に記載されているフローチャートの形式化、人間工学化、および非古典的構造化によって構築されました。 [ 3 ] [ 4 ]
目標は、ブラン計画で使用されていた特殊な言語を、1つの汎用プログラミング言語に置き換えることでした。具体的には、コンピュータシステム Biser-4 (Бисер-4) の機内システムソフトウェアの開発に使用された PROL2 (ПРОЛ2) [ 5 ]、地上保守コンピュータシステムのソフトウェアの開発に使用された DIPOL (ДИПОЛЬ) [ 5 ]、およびモデリングに使用された LAKS (ЛАКС) です。
それに対し、スペースシャトル計画では、インターメトリックス社がNASA向けに設計したHAL/Sプログラミング言語が広く使用され、シャトルのソフトウェアの約85%がHAL/Sでコーディングされていた。
この作業は1996年(ブラン計画が正式に終了してから3年後)に完了し、「Grafit-Floks」と呼ばれる自動化されたCASEプログラミングシステムが開発されました。 [ 6 ]
このCASEは1996年以来、国際プロジェクトSea Launch、ロシアの軌道投入上段フリゲート艦Fregat(ロシア語:Фрегат、フリゲート艦)の機上制御システムおよび試験[ 7 ] 、改良型大型打ち上げロケット(キャリアロケット)Proton-Mで使用されています。
DRAKON という名前は、「Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность」のロシア語の頭字語で、「フレンドリーなロシア語アルゴリズム [言語]」と訳されます。を説明します(または明確にします)。」 「наглядность」(おおよそ「na-GLYA-dnost」と発音)という言葉は、想像しやすく理解しやすい概念やアイデアを指し、「明快さ」と訳されることもあります。
UMLの哲学とは異なり、DRAKONの言語哲学は、必要に応じて拡張できるハイブリッド言語を使用することに基づいています。これは、「テキスト言語からコードスニペットをDRAKONが必要とする形に組み込む」と表現できます。このようにして、DRAKONは常にシンプルなビジュアル言語であり続け、自身のプロジェクトコードのサポートを容易にしたいプログラマーや、コーディングプロセスの人間工学を改善したり、コードのレビューや理解を容易にしたりするなど、長期的なニーズを持つプログラマーにとって拡張ツールとして使用できます。
DRAKON言語は、モデリング/「マークアップ」言語(独立した「純粋なDRAKON」プログラムとみなされる)としても、プログラミング言語(ハイブリッド言語の一部として)としても使用できます。
ChatGPT、Gemini、Grokなどの生成型AIチャットボットを利用することで、開発者は「純粋なDRAKON」プログラムを用いて、従来のプログラミング言語で実行可能なコードを生成できます。
DRAKONなどが提供するような、より厳密な「学術的な」マークアップ言語をプログラミングに統合することで、構文上の糖衣が追加され、異なるプログラミング言語のユーザーがプロジェクト全体に対する互いの貢献を理解したり、必要に応じてコメントを提供したりすることが可能になる。


DRAKON(ロシア語:ДРАКОН、英語で「ドラゴン」の意味)は、単一のプロジェクトで複数の言語を使用すると混乱を招く可能性があるため、理解しやすく読みやすいように設計されています。
DRAKONは、DRAKON-C、DRAKON-ASM、DRAKON-Javaなどを含むハイブリッド言語のファミリーです。DRAKONファミリーのすべての言語は、フローチャートに基づいた統一されたグラフィカル構文を共有しています。この標準的なグラフィカル構文により、異なるハイブリッド言語間でもDRAKONチャートの類似性が確保されます。テキスト言語は独自の構文を使用します。
グラフィカル構文の基礎は、グラフィカルアルファベットです。DRAKONアルファベットのグラフィカル要素(「文字」)はアイコン(記号ではなく)と呼ばれます。DRAKONにはマクロアイコンもあります。マクロアイコンはDRAKON言語のグラフィカルな単語であり、アイコンで構成されています。DRAKON言語には27個のアイコンと21個のマクロアイコンがあります。
ドラコンチャートは、アイコンとマクロアイコンで構成されています。
マクロアイコンの重要な部分は、価数点(図では黒丸で示されている)です。これらの価数点には、アイコンまたはマイクロアイコンを順次入力し、drakonエディタによって列に配置できます。
DRAKONは、さまざまなプログラミング言語で書かれたコンピュータプログラムの理解を助けるために、習得しやすいビジュアル言語として開発されました。その目的は、図解、計画、戦略立案などです。
DRAKONは、従来のフローチャートを形式化したdrakon-chartを使用して、プログラム全体の構造を視覚的に表現します。プログラミング言語のコードスニペットがDRAKONアイコンに追加されます。視覚要素とコードを組み合わせることで、読みやすいフローチャートの作成と保守、そして対象プログラムの開発が容易になります。
DRAKONの図作成ルールは、理解しやすいように認知的に最適化されており、知能増強のためのツールとなっています。[ 3 ] [ 8 ] [ 9 ] [ 10 ]
大規模な多目的プログラムのDrakonチャートは複雑で理解しにくい場合があります。同じ目的を果たす複数の小規模プログラムは、Drakonチャートで表現すると理解しやすくなることがよくあります。大規模プログラムのコードを保守する際にも同様の問題が生じます。この問題は、プログラマーの間で「30行ルール」と呼ばれることもあります。
DRAKON言語の視覚構文の説明を含む全文記事(英語、12ページ、無料ダウンロード、pdf形式)[ 11 ]
DRAKON言語によるプログラムの簡単な例
これらの例は、テトリスゲームの実装における実際のコードです。例はDRAKON-JavaScript言語で記述されています。DRAKON言語のアイコン(視覚的なプリミティブ)は、アルゴリズムの全体構造を定義します。アイコン(プリミティブ)内のコードスニペットはJavaScriptで記述されています。
advanceStep関数は、ゲームのコアロジックを実装します。advanceStepは、決定木として表現されるステートマシンです。[ 12 ]ゲームエンジンは、advanceStep を定期的に呼び出します。このステートマシンには、「playing」、「dropping」、「finished」の 3 つの状態があります。ゲームは、現在の状態に応じて異なるアクションを実行します。たとえば、「playing」状態では、落下中の発射体があり、発射体が下に移動できる場合、発射体は 1 段階下に移動します。

DRAKONを使用すると、アルゴリズムの読者は決定木におけるすべての可能な経路を視覚的に追跡できます。

noProjectile関数は、落下する投射物がない場合の特定の状況を処理します。既に投射物が配置されている行がある場合は、その行がグリッドから削除されます。そうでない場合は、ゲームは新しい投射物を挿入しようとします。投射物を配置するスペースがない場合は、ゲームオーバーとなります。

clearRow関数は、すべての行を下から上にスキャンし、隙間のない行に到達するまで処理を続けます。隙間のない行に到達すると、その行はグリッドから削除され、スコアが増加し、ゲームのテンポが上がります。
下の図は、シルエットDRAKONアルゴリズムの実行を示しています。アルゴリズムの実行は、実行順序に従って図の要素を強調表示することでアニメーション化されています。
「釣り」のシルエットは4本の木で構成されています。
各樹木の主要な成長経路は、串と呼ばれる太い垂直線で強調表示されています。
フローグラフには、常に見出しアイコンから制御フローグラフの各頂点(ノード)へのパスが存在します。したがって、シルエットにはいかなる状況下でも到達不能なコードが含まれることはありません。

DRAKON言語は、ドイツ航空宇宙センターにおいて、飛行試験の安全規制で定められた重要な機能の実装に使用されています。これらの機能では、地上局までの最大距離が限られているため自動化が重要であり、プロセスの迅速な自動実行が求められます。
DRAKON Editorソフトウェアを使用して、特別にチェックされたフローチャートをグラフィカルにプログラミングしました。たとえば、発射検出用のコードのDRAKON表現のために、drakonチャートからCコードが生成されました。[ 13 ]
DRAKON言語は、ビジネスプロセスをモデル化および視覚化するための言語として使用できます。「DRAKON言語は、ビジネスプロセスのモデルを構築するための基本言語として適用され、ビジネスプロセスのモデルを構築する際に有限状態機械のプロトタイプを取得することを可能にします。状態空間におけるビジネスプロセスの視覚化により、意思決定者は意思決定の効率を向上させることができます。」[ 14 ]
DRAKONは主にコンピュータプログラムを理解するためのツールとして設計されていますが、drakon-chartsはコンピュータ関連以外の分野のプロセスを図示するためにも使用できます。
DRAKONエディタでは、DRAKONアイコンに画像を追加できます。この機能は、一部の分野で「フローチャートのような」インフォグラフィックを簡単に作成するために使用されています。ロシアでは、DRAKONエディタは、患者や医療従事者向けの「説明」チャートを作成するためのツールとして医療分野で使用されていることで知られています。[ 15 ]