なでしこ (プログラミング言語)

**なでしこ**は、クジラ飛行机（くじらひこうづくえ）が制作したインタプリタ方式のスクリプト型プログラミング言語である。Windowsに特化したv1系と、Webに特化したv3系の二系統がある。v1系の動作確認済みのOSは、Microsoft Windows 98/Me/2000/XP/2003/Vista/7/8/10/11。v3系は、クロスプラットフォームで、HTML5に対応したWebブラウザ、また、Node.js上で動作する。

## 概要
ほとんどのプログラミング言語の文法は英語をベースにしているが、なでしこは日本語をベースにしているひまわりの後継プログラミング言語として、より自然な記述を目標として0から開発され、2005年2月17日に、正式版が公開された。

なでしこは、オープンソースのプログラミング言語であり、ソースコードが公開されている。なでしこ(v1)の本体はDelphiで開発された。インタプリタ方式なので実行速度は遅いが、ひまわりと比べると、実行速度が10倍以上速くなっている。なでしこ(v3)は、JavaScriptに変換されて実行される。

ひまわりと比べ、以下の改良・追加機能がある。
# 実行速度が10倍以上速い
# 機能がライブラリに分けられて配布サイズが小さい
# 単語の区切りの句読点が不要
# インデントによる構造化表現
# コンソール版なでしこを用いたCGI実行

IPAの2004年度未踏ソフトウェア創造事業「未踏ユース」に採択されたプロジェクトの一つで、公開から20周年を迎えた2025年現在も意欲的に開発が進んでいる。 また、2005年9月上旬には通称「なでしこ本」という、なでしこの公式ガイドブックが発売された。教育図書の2021年度中学校技術の教科書ではプログラミングの教材として採用され、なでしこの使い方が掲載された。モットーは「なでしこで誰でも簡単プログラマー」。

PDF関連命令、バーコード関連命令、スキャナ関連命令、積み木デザイナ（GUIエディタ）などを追加した、デラックス版（有料版）が、2019年9月19日のv1.577よりフリー版に統合された。また、スクリプト言語「Lua」や問い合わせ言語「SQL」などにも対応している。

LGPLを基本に採用し、状況により扱いが変わる、独自のライセンス形態になった。

## プログラム例
日本語プログラミング言語「なでしこ」の基本的なプログラム例です。

### メッセージの表示
母艦（メインフォーム）やダイアログにメッセージを表示します。

```
* 母艦に表示
「Welcome to Nadesiko.」と表示。

* ダイアログに表示
「Hello Nadesiko.」と言う。
```


### アプリケーションの起動
PC上の外部プログラムを起動します。

```
「notepad.exe」を起動。
```

* 注意：なでしこ3でアプリを起動する場合は、別途**なでしこ3配布キット**が必要になります。

### 複数ファイルのコピー
特定のファイルを、複数のコピー先へ個別にコピーするプログラムです。`{デスクトップ}`などの定数を使用することで、環境や時期を問わず動作いたします。

; 単純なコピー（複数のコピー先を個別に指定）

```
コピー元は「{デスクトップ}a\test.txt」
コピー先１は「{デスクトップ}b\test.txt」
コピー先２は「{デスクトップ}c\test.txt」

コピー元からコピー先１へファイルコピー。
コピー元からコピー先２へファイルコピー。
```


; 解説
* `コピー先`が増えるたびに行を追加する必要があります。
* 大量のファイルを扱う場合は、対象をリスト（配列）にまとめて「反復」命令を使用することで、より効率的に記述することが可能です。

## 文法
### コメント
*「**#**」から行末まで
*「**//**」から行末まで
*「**/***」から「***/**」まで
がコメントである。
 # ここはコメントです。
 // ここもコメントです。
 /*
 ここもまたコメントです。
 */
### 変数
変数名には、助詞などの予約語を除いた、英数字や「_」、日本語が使用できる。しかし、変数の先頭だけは数字を使用することはできない。
 長さは３０
通常は、変数の宣言は必要ないが、型を厳密にするために以下のように記述することができる。
 場所とは文字列
 年齢とは整数

ただし、上記の方法ではなでしこ3だと関数の宣言として扱われ、エラーになる。

数列・文字列ではJavaScriptと同じように扱うことができる。

## サブプロジェクト

### なでしこv2
C#でなでしこを書き直すことにより、Windows以外にMacやLinuxで動作できるようにするプロジェクト。実行方式はこれまでの、暗号化されたソースをそのまま実行ファイルに埋め込むのではなく、抽象度の高いバイトコードに変換して実行ファイルに埋め込む。開発は2018年11月以降中断しているが、2025年現在もオープンソースとして公開されており、コミュニティによるフォークや再開の可能性が残されており、将来的な更新が期待されている。

### 🐧 Linuxでなでしこv2を使う利点
1. **軽量・高速な環境での実行**

* Linuxは軽量でリソース消費が少ないため、なでしこv2のようなスクリプト言語を高速に実行可能。
* 古いPCやRaspberry Piなどでも快適に動作。

2. **サーバー・自動化用途に強い**

* cronやsystemdと組み合わせて、なでしこスクリプトを定期実行・監視に活用可能。
* WebサーバーやIoTデバイス上での日本語スクリプトによる制御が可能。

3. **日本語プログラミング教育の普及**

* Linuxベースの教育環境（例：Edubuntu、Raspberry Pi OS）に組み込めば、学校や地域の学習支援に活用できる。
* CLIやGUIを通じて、子どもや初心者が「日本語でプログラミング」を体験できる。

4. **オープンソースとの親和性**

* なでしこv2自体がオープンソースであり、Linuxの文化と親和性が高い。
* GitHubでの共同開発や、他のOSSツールとの連携がしやすい。

### 🚀 Linuxでのなでしこv2の可能性
1. **地域向けツールの開発**

* 地元自治体やNPOが、なでしこで「ゴミ収集日通知」「避難所案内」などのツールを作成し、Linuxサーバーで運用可能。
* 日本語で書けることで、非エンジニアでも保守・改良がしやすい。

2. **SNS連携・情報発信**

* MastodonやMisskeyなどのFediverseと連携し、「なでしこボット」をLinux上で運用。
* 地域イベントや災害情報を自動投稿する仕組みも構築可能。

3. **教育・ワークショップでの活用**

* Linux環境＋なでしこで「日本語プログラミング体験会」を開催。
* 教材やテンプレートをOSSとして公開すれば、全国展開も可能。

4. **CLIツール化・スクリプト配布**

* なでしこv2で書いたスクリプトをLinuxのCLIツールとして配布。
* 例：「天気予報取得」「PDF一括変換」「CSV整形」など、日常業務に役立つツール群。

🧩 技術的な注意点と工夫

* なでしこv2はNode.jsベースなので、LinuxにNode.jsが必要。
* UTF-8環境での文字化け対策や、ファイルパスの扱いに注意。
* GUI系の機能（画像表示など）はX環境が必要な場合もある。

### v1との比較

### 関連リンク

* GitHubリポジトリ： https://github.com/kujirahand/nadesiko2
* 開発Wiki： https://www.nadesi.com/dev/wiki/index.php

----
### なでしこv3
なでしこを、Webブラウザ上で動かせるように開発された。なでしこのコードは随時Javascriptに変換されて、HTML5に対応したモダンブラウザ上であれば、PC/スマートフォン/タブレットを問わず動かすことができる。Webブラウザ上でプログラムを開発し、実行することができる。

### 特徴
なでしこ3は、以下の技術的特徴を持つ。

* **クロスプラットフォーム性:** 記述されたコードはJavaScriptに変換され、[Webブラウザ]、[Node.js]（サーバーサイド）、[Electron]（デスクトップアプリケーション）など、JavaScript実行環境が動作する環境であれば、[Windows]、[macOS]、[Linux]、[Chromebook]といったオペレーティングシステムを問わず動作する。
* **日本語構文:** 制御構文や関数名に日本語を使用し、「もし〜ならば」「〜を〜に表示」といった形式で記述する。これにより、プログラミング初心者の学習コスト低減に寄与している。
* **構造化プログラミング:** [インデント]に基づいたブロック構造を採用しており、現代的なプログラミング手法に対応している。
* **豊富なライブラリ:** コア機能に加え、ファイル操作、データベースアクセス、ネットワーク通信、GUI操作などの機能をプラグイン（部品）として利用できる。
* **Web描画機能:** [HTML]要素や[キャンバス]の操作に特化した命令を持ち、ブラウザ上で動作する動的なコンテンツや簡易的なWebアプリケーションの開発に適している。

### 応用分野
なでしこ3は、その日本語対応と実行環境の汎用性から、多岐にわたる分野で応用されている。

* **プログラミング教育:** 日本語話者にとって直感的な学習環境を提供するため、初等・中等教育機関や生涯学習におけるプログラミング入門教材として採用されている。
* **業務自動化:** ファイル操作やテキスト処理、データの整形といった日常的な業務を自動化するためのスクリプト言語として利用される。特にNode.js環境を利用することで、OSに依存しない自動化ツールを開発できる。
* **Webアプリケーション開発:** [Ajax]通信や[Web API]の利用も容易であり、小規模から中規模のWebアプリケーションのプロトタイプ作成や開発に活用される。
* **データサイエンス・機械学習:** 専用ライブラリを導入することで、日本語で機械学習モデルの利用やデータ解析を行うことが可能となっている。

### 🧠 なでしこv3で「できること」
1. **日本語での直感的なプログラミング**

* 「表示する」「繰り返す」など、自然な日本語で記述可能。
* 初心者や非エンジニアでも理解しやすい構文。

2. **ブラウザ上で動作（Node.jsベース）**

* Webブラウザで動作するため、インストール不要。
* 教育現場やワークショップで即座に使える。

3. **豊富なプラグインによる機能拡張**

* `plugin_browser`：カメラ・ビデオ・描画などの操作。
* `plugin_httpserver`：簡易Webサーバとして動作。
* `plugin_system`：ファイル操作や文字列処理。
* `nadesiko3-drone`：ドローン制御にも対応。

4. **範囲オブジェクトの導入（2024年）**

* `3…5`のような記述で範囲を表現。
* 繰り返し処理や乱数生成、配列参照に活用可能。

5. **厳密チェック構文で品質向上**

* **厳密チェック**により、エラー検出とデバッグが容易に。
* 初心者にも分かりやすいエラーメッセージ表示。

### 🚀 これからの可能性と展望
1. **教育分野での普及拡大**

* 小中高向け教材として活用可能。
* ScratchやPythonの橋渡しとして、日本語で論理的思考を育成。

2. **地域・公共向けツール開発**

* 日本語で書けるため、自治体や市民団体が独自ツールを作成しやすい。
* 例：避難所案内、ゴミ収集通知、イベント告知ボット。

3. **IoT・ロボット連携**

* ドローン制御やセンサー連携など、物理デバイスとの接続が進化。
* Raspberry PiなどLinux環境との親和性も高い。

4. **Web連携・SNS自動化**

* MastodonやMisskeyと連携した情報発信ボット。
* HTTPサーバ機能でAPI連携も可能。

5. **OSSコミュニティとの連携強化**

* GitHubでの開発が活発。
* Advent CalendarやOSC展示など、ユーザー参加型の開発文化が根付いている。

## 脚注

## 関連項目
* ひまわり (プログラミング言語)
* 日本語プログラミング言語

## 外部リンク

* なでしこ公式サイト
* なでしこ3公式サイト