GUIを自動で操作するフリーツール:Sikuli IDE ですが、操作によってはとても長いものになります。そんな時に役立つであろうテクニックを記載していこうと思います。
※記載している内容はSikuliXにとどまらず、汎用的に使える内容もあります
①コメント
説明
コメントは非常に重要です。プログラム経験者なら当たり前に記載するものだと思いますが、未経験者は省いてしまう人もいるでしょう。言ってしまえば、単なるメモ。コメントの有無でプログラムの動作が異なることはありません。記載する癖は絶対に付けておきましょう。
では、コメントの意味はなんでしょうか?以下に一例を記載しました。
- 備忘録の代わり
- 長くなればなるほど、ソースコードの処理を追うのは大変です。そんな時に役立つのがコメント
- 処理のメモを記載しておけば、後から思い出すのも簡単ですし、何をしているかがすぐに分かる
- 作成されたソースコードを引き継ぐとき
- 作成者の癖もあるため、何の手掛かりもなしに他の人が書いたソースコードを引き継ぐのは、非常に困難なものになる
- 記載することになった経緯が分かる
- どうして該当の処理をしているか分かる
- バグの解析や関連する個所の目星も付けやすい
- 処理のスキップ
- 消したくないけど、一時的に処理をさせたくないときにコメントとすることですきっぷさせることができる
- 大量の処理の一部だけを実施させたいときなど
- 処理の内容を検討する際に、候補となるパターンを残しておくことができる
- 消したくないけど、一時的に処理をさせたくないときにコメントとすることですきっぷさせることができる
実例
パターン①
コメントにした行の初めに、「##」を記載します。
##コメントの内容を記載する
パターン②
コメントにしたい行を「”’」で囲む。
”’
コメントの内容を記載する
コメントの内容を記載する
コメントの内容を記載する
コメントの内容を記載する
コメントの内容を記載する
”’
番外
番外としますが、以下のように飾りを付けるとソースコードに埋もれずに目に留まります。
##~*~*~*~*~*~*~
##コメントの内容を記載する
##コメントの内容を記載する
##~*~*~*~*~*~*~
注意点
コメントは非常に重要なものと記載しました。しかし、ただし、煩雑すぎるのも考えものです。場合によっては、逆効果になることもあります。必要なコメントと不要なコメントの書き方は常に注意しておきましょう
そこで、おすすめするコメントの内容・書き方 と 避けた方が良い書き方 を以下に記載しておきます。
おすすめするコメントの内容・書き方
基本的には「ソースコードから読み取れないこと」「記載した人の意思」のようなものを書くのが良いと思います。
- 該当するソースコードを記載した経緯する
- バグの対応なのか?
- 何かの例外を避けるためなのか?
- まとまった塊(オブジェクト指向の「クラス」など)の役割の記載を記載する
避けた方が良い書き方
基本的には「ソースコードから、すぐ読み取れること」は書く必要はありません。
- 一行一行に処理の内容を記載する
- 個人の勉強用であれば全く問題ありません
- 作成者以外が使用・確認する場合は、処理を解読するのに時間がかかってしまいます
- 「ソースコードはどれ・・・?」「で、なんだっけ?」という状態になりかねません。
(余談ばかりで、本題になかなか入らない授業は、余談しか頭に残らなかったりしますよね?)
- 「ソースコードはどれ・・・?」「で、なんだっけ?」という状態になりかねません。
- 場合によっては、処理を重くさせてしまうこともあります
- 例え実行されなくても、出来上がったコードではコメント分の容量は増えます。
- 最終的にアプリやツールとしてリリースする場合は、容量が大きくダウンロードなどにも時間がかかってしまうでしょう
②繰り返し処理の削減
説明
大量のソースコードを書くと、同じソースコード(処理)の繰り返しが出てくることも少なくありません。そういったソースコードをひとまとめにしてしまいましょう。
クラスを使用する方法もありますが、ここでは簡単にできるように「関数の定義」で説明します。
関数を使うメリット
- 繰り返し処理が発生する場合は、一つだけ記載して、定義した関数を使うようにすれば良い
- 新しく流用したくなっても、組み込みが楽になる
- 処理の内容(機能)をひとまとめにでき、機能を区別できる
- エアコンの場合、「風量を調整」する機能、「温度を調整」する機能など
- ソースコードを編集する労力が減らせる
- 複数個所の修正をするのではなく、関数の内容のみの修正で済む
- ソースコードを編集した際の影響を制限できる
- 例)「風量を調整」する機能の処理を変更しても、直接的に「温度を調整」する機能には影響を出ない
実例
パターン①
引数:なし、戻り値:なし
関数定義
def printMessage():
print (“Test Message”)
実行文
printMessage()
実行結果
Test Message
パターン②
引数:あり、戻り値:なし
関数定義
def printMessage(msg):
print (msg)
実行文
message = “Test Message”
printMessage(message)実行結果
Test Message
パターン③
引数:なし、戻り値:あり
関数定義
def printMessage():
msg = “Test Message”
return msg実行文
message = printMessage()
print (message)実行結果
Test Message
パターン④
引数:あり、戻り値:あり
関数定義
def printMessage(messageFlag):
if messageFlag == 1:
msg = “Test Message”
else:
msg = “No Message”
return msg実行文
flag = 2
message = printMessage(flag)
print (message)実行結果
No Message
まとめ
今回は、ソースコードを記載する際に役立つであろうテクニックを記載してみました。
sikuliXのソースコードを書く際に、他にも役立つと思ったことがあれば、順次別記事で作成していこうと思うので、参考にしてみて下さい。