今回はスケッチを見やすくします。
キッチンタイマーのスケッチを作る前に
第12回までの記事で、LEDを1秒ごとにつけたり消したりするスケッチを作成して、実際にArduinoを動作させてみました。
いよいよこれからキッチンタイマーのスケッチを新規に作成していきますが、途中でいろいろな動作確認をするために別のスケッチを作成します。
今の時点では作成したスケッチは1つしかありませんが、今後スケッチがどんどん増えてくるわけです。
PCで何かのファイルをいくつか作成するとき、ファイルがごちゃごちゃになってきた経験はありませんか? ファイル名に日付を入れたり、ファイル名に変更内容を簡単に付け足したり、いろいろな工夫をしてファイルを区別していたかもしれません。
これから作成するスケッチは、基本的にファイル名を工夫してわかるようにします。例えばファイル名が「LED_blink」であれば、1秒ごとにLEDをつけたり消したりするスケッチとわかります。
でも、例えばスケッチ作成の練習として0.5秒ごとにLEDをつけたり消したりするスケッチを別につくりたいとき、ファイル名を工夫しても、ファイル名のみからスケッチの中身を思い出すのは難しくなってきそうです。
これはプログラムを作成するときに必ず発生する問題です。
そこで、どのようなプログラミング言語でも、プログラムの中にメモ書きできる仕組みが用意されています。
このメモ書きできる仕組みを利用してスケッチの中に動作内容を書いておけば、あとからスケッチをみたときにスケッチの中身まで見なくてもメモ書きを読めば動作内容がすぐにわかるというわけです。
それでは、これから作成した「LED_blink」スケッチの中に、「1秒ごとに12番ピンに接続したLEDをつけたり消したりするスケッチ」というメモ書きを書きましょう。
コメント文
「LED_blink」スケッチの中に「1秒ごとに12番ピンに接続したLEDをつけたり消したりするスケッチ」と直接書き込むと、当然ながら(?)、以下のようにArdiuno IDEに怒られます(例のやつです。気に食わないとダメなところを目立つようにして英語で怒られるやつです)。
それでは、これからスケッチにメモ書きするやり方を確認していきましょう。
その前に用語を覚えたいと思います。
スケッチ(プログラム)に書くメモのことを「コメント」と呼んでいます。プログラム(スケッチ)の中に書いたコメントは「コメント文」と呼ばれます。
C/C++言語ではコメント文の書き方2通り用意されています。それではひとつずつ覚えていきましょう。
なお今後、命令の説明図の右上に「C/C++言語」「Arduino」とマークをつけます。
「C/C++言語」マークがついている命令はC/C++言語の文法です。例えばRaspberry PiではC/C++言語でプログラミングできますが、そのときも同じになります。
「Arduino」のマークがついている命令はArduino独自の命令です。Rasbpberry Piなど他のコンピュータでは使用できません。
コメントを、最初を「/*」、最後を「*/」で囲むとその部分がコメント文となります。先ほどのようにスケッチにコメントを書く場合は、
/* 1秒ごとに12番ピンに接続したLEDをつけたり消したりするスケッチ */
と書きます。このコメント文は複数行で書いても問題ありません。例えば以下のように書いてもOKです。
/*1秒ごとに12番ピンに接続したLEDを
つけたり消したりするスケッチ */
このコメント文の書き方では「/*」から始まって、「*/」が出てくるまでどこまでもコメント文になります。
以下のように書けば、命令の意味を書いておくこともできます。
digitalWrite(12, HIGH); /* 青色LEDをつける */
C/C++言語ではもうひとつコメント文の書き方があります。
「//」と「/」を2回続けて書くと、この「//」から改行まで、つまりその行の終わりまでがコメントになります。
以下のコメント文の書き方はOKですが、
// 1秒ごとに12番ピンに接続したLEDをつけたり消したりするスケッチ
以下のコメント文は2行目が怒られます。
// 1秒ごとに12番ピンに接続したLEDを
つけたり消したりするスケッチ
また、先ほどのように命令の意味を書いておくことができます。
digitalWrite(12, HIGH); // 青色LEDをつける
先ほどの「/* コメント */」のコメント文より入力する文字が少ないので、こちらのコメントの方がいいですよね。
例の謎の文章の解明
以前からずっと気になっていたあれ、ありますよね。
もうわかりますよね。これはコメント文だったんです。
コメント文はちょっと薄いグレーの色になっていますよね。
これは、Arduino IDEがこの行をコメント文と認識してグレーにしているためです。スケッチの主体は命令で、コメント文は脇役(わきやく)ということで、コメント文がそれほど目立たないようにグレーになっています。
このコメント文は英語で書いてありますが、日本語の意味は以下になります。
“put your setup code here, to run once:”
「1回だけ実行する命令をここに書いてください」
“put your main code here, to run repeatedly:”
「ずっと繰り返し実行する命令をここに書いてください」
もうこの仕組みはわかっていますので、このコメント文は必要ないですよね。あとで削除しましょう。ただ、このコメント文の先頭にスペースが入っているのは気にはなりますが…
スケッチにコメントを書こう
それでは、あとからスケッチを見て内容がすぐにわかるようにコメントを書いてみます。
書く内容は、スケッチの動作内容以外にも自分で書いておきたい内容を書いておいてください。といっても何を書けばいいの?って感じですよね。
一般的にプログラムの先頭には以下のような項目を書くケースが多いです。
- プログラム名
- プログラムの動作内容
- 作成日
- 変更した場合、変更日と変更内容
- プログラムのバージョン(Version 1.0など)
- 作成者名
- 注意事項
- ライセンス(商用に使ってはダメ、とか細かい規定)
とはいっても、個人でつくるものですので、自分があとから見てわかる内容であればOKです。
コメントは複数行で書きますので「/* コメント */」の方で書きましょう。それでは作成した「LED_blink」を開いてください。
以下のようにスケッチの先頭に2行ぐらい空けましょう。
次に1行目に「/*」と入力します。
あれ? なんだか全体がグレーになりましたよね。これは、Arduino IDEが「/*」を認識して「*/」までの文字をコメントと認識するためです。この状態ではコメント文の終わりの「*/」がないので、最後までコメント文として認識しているわけです。
次にリターンキーを押してください。以下のように自動的に「*/」を入力してくれましたよね。
これで「/*」から「*/」までの間がコメントとなり、ここに自由にコメントが書けます。コメント内容は自分で考えて入力してみてください。以下は入力例ですが、特に決まりはありませんので、自分が後から見てわかる内容にしましょう。
あとは例の最初から書かれていたコメントは削除しておきます。
これでコメントが書けました。今後自分でスケッチを作成するとき、できるだけコメントを書いておくようにしてください。
他の人のコメントの書き方を見てみよう
ここで、他の人はどのようなコメントを書くのか見てみましょう。
Arduino IDEの「ファイル」→「スケッチ例」メニューを選択してください。このメニューは、スケッチのサンプルがたくさん入っています。
この中から、「01.Basics」の「Blink」を選択してください。
これはArduino IDEに入っているLEDを1秒ごとにつけたり消したりするスケッチです(なんだあったんだ、って感じですね)。スケッチの最初の方にコメントがたくさん書いてあります。というかスケッチの命令本体よりコメントの方が長いですよね。
書いてある内容は以下です。
- 動作内容(「LEDを1秒つけて1秒消す、という動作を繰り返す」という内容)
- Arduinoの各製品の違いの説明
- 変更日と変更した人の名前
- このプログラムは自由に使っていいですよ、という内容
- サイトの説明へのリンク
ところで、「LED_blink」に入力したコメントと、このスケッチ例にある「Blink」スケッチのコメントですが、ちょっと書き方が違いますよね。自分で入力したコメントは各行の先頭に「*」が付いています。スケッチ例のコメントは「*」がありません。どちらもコメントの書き方のルールにあっています。これは好みの問題なので自分が見やすい書き方で問題ありません。
先ほどのように「/*」と入力してコメントを書いていくと自動的に「*」が入力されてしまいますよね。これを避けたい場合は以下のように入力します。
最初にコメントを入力したときと同様に「/*」と入力してリターンキーを押して以下のような状態にしてから、2行目の「*」を削除します。
この状態で2行目から書き始めると、自動で「*」が入力されなくなります。
Arduino IDEでは、リターンキーを押すと、前の行をみて推測して次の行を準備してくれます。一度「*」がない行を作れば、次の行からは「*」を自動的に入力しなくなります。
ブロックコメントとインラインコメント
最後にコメント文についてもう少し用語を覚えておきましょう。
先ほどの「/* コメント */」を「ブロックコメント」と呼びます。「ブロック」は日本語で「かたまり」という意味です。
「/* コメント */」は複数行書くことができます。このように複数行書くと「行」というより「かたまり」に見えるので「ブロックコメント」と呼ばれています。
もうひとつの「//」のコメントは「インラインコメント」と呼びます。「イン」は「〜の中」、「ライン」は「行」の意味ですので、「インライン」は日本語で「行内」「行の中」という意味になります。
先ほどのように
digitalWrite(12, HIGH); // 青色LEDをつける
このような書き方をよく見ると、1行の中にコメントを書いていますよね。「//」はこのように行の中に書くので「インラインコメント」と呼ばれています。
他のプログラミング言語を習得するとき、「ブロックコメントはこのように書きます」「インラインコメントはこのように書きます」という説明が出てきます。このような用語を覚えておくと、他のプログラミング言語の習得が早くなりそうですよね。
更新履歴
日付 | 内容 |
---|---|
2019.7.21 | 新規投稿 |
2021.8.22 | 新サイトデザイン対応 |
2022.2.9 | 誤記訂正 |