はじめに
日本語プログラミング言語をモデリング言語としてシステム開発上中流工程に導入した場合、そのメリット・デメリットについて考察する記事の11回目です。
本記事の内容はいくつかに分割されて記載されます。本記事中の「本記事」とは分割された内容の総体を指す場合があります。
対象読者
とりあえずこの記事の想定読者はシステムエンジニアさんです。とくに日本語で要求仕様や内部設計資料を書いている方向けのお話です。
想定しているシステム開発フロー
オーソドックスなリレーショナルデータベースを使用している業務システムであることを1回目2回目の記事で説明しております。
想定しているレイヤードアーキテクチャ・業務
一般的なWebアプリケーションシステムであり、簡単な受発注業務をインターネットで支援するシステムであることを3回目4回目の記事で説明しております。
想定しているユビキタス言語
5回目の記事ではドメイン駆動設計(DDD)の文脈で用いられる意味でのユビキタス言語を例示しました。
ユビキタス言語化された日本語プログラミング言語
6回目7回目の記事ではドメインエキスパートからプログラマまで共有可能な言語のことをユビキタス言語化された日本語プログラミング言語として例示・解説し、8回目の記事ではそれをシステム開発の上中流工程に導入した場合のメリット・デメリットについて、いったんまとめました。
数学的形式言語で日本語識別子を使った場合との対比
また、9回目10回目の記事では、数学的形式言語VDM++で日本語識別子を使って記述した場合と比較し、両者の違いをさぐりました。
開発実装用の日本語プログラミング言語を使えばよいのでは問題
21世紀の第1四半期のおわりである今日、システム開発の上中流工程において実績のある日本語プログラミング言語は、まだ存在しないと考えられます。(開発現場でも存在しないと認識される方もいらっしゃいますが、わたしはそのようには認識しておりません。また、非エンジニアリングの現場で、またはソフトウェアエンジニアリング以外のエンジニアリング現場において、個人が上中下流一貫して個人的に日本語プログラミング言語でツールを企画設計実装されているような場合を除きます。)
システム開発(上中下流すべて含めて)の現場においては、日本語プログラミング言語の存在感はまだまだ薄いため、構造化されたプログラミング言語としての日本語でソフトウェアの構造を定義できること自体を知らない、または認知していないシステムエンジニアの方はざらにいらっしゃいます。
結論から申し上げますと、既存の日本語プログラミング言語を使ってもシステム開発の上中流工程のあいまいさを排し、より合理的な整合性のある仕様や設計が可能であるとわたしは考えております。ただし、現存する代表的な日本語プログラミング言語は汎用の開発実装目的に設計・実装されていますので、上中流工程にそれを適用する場合は少し工夫が必要であることと、他の実装言語との直接のトランスコンパイルということは現時点でできません。
主要日本語プログラミング言語の特徴
以下に主要な日本語プログラミング言語の特徴をまとめてみました。
言語名 | 日本語語彙 | 日本語語順 | 分ち書き | オブジェクト指向 |
---|---|---|---|---|
なでしこ | 使用する | 使用する | しない | 対応しない |
プロデル | 使用する | 使用する | しない | 対応する |
Mind | 使用する | 使用する | する | 対応しない |
これらの言語を上流のモデリング言語や中流のロジック記述言語として適用した場合のイメージについて論じていきます。
分ち書きする・しないとはどのようなことなのか、日本語プログラミング言語自体をよくご存じない方は謎なお話とうつるかもしれません。詳しくは次回に各言語のソースコードを併記して説明します。
参考に、本記事の主題となりますユビキタス言語化された日本語プログラミング言語の企画設計例のRe:Mindはこの比較表では下記のようになります。
言語名 | 日本語語彙 | 日本語語順 | 分ち書き | オブジェクト指向 |
---|---|---|---|---|
Re:Mind | 使用する | 使用しない | する | 対応する |
自然言語の日本語でオブジェクト指向モデリングすることと何が異なるのか
現存する日本語プログラミング言語でのモデリングと聞いて、自然言語の日本語でオブジェクト指向モデリングすることを連想された方は多くいらっしゃるかもしれませんので、念のため強調させていただきます。
本記事は自然言語の日本語でオブジェクト指向モデリングすることに、ほとんど触れません。たとえば、UMLのクラス図でメソッド名・変数名をとりあえず自然言語の日本語で書いておくこととなにが違うのかということが、疑問に生じるかもしれません。
次回に詳しく説明する予定の、用途によってはこれらのコンパイラ言語の言語仕様を流用して疑似言語化することも有益と筆者は考えているのですが、自然言語で書くことと構造化されて定義由来に制約のあるプログラミング言語とでは疑似言語であっても定義の厳密さに有意差が生じると考えています。現存するコンパイラ言語を使用するメリットはコンパイラを通過させて未定義エラーを検出できることです。
この回のまとめ
上中流工程において、汎用実装目的で設計・実装された日本語プログラミング言語を適用した場合について、まず軽く考察してみました。
次回
現存する代表的な日本語プログラミング言語を適用した場合についてソースコード例をまじえて考察します。