【命名規則】その変数、1年後に読めますか?プロが使う「プレフィックス」の魔法

  • URLをコピーしました!
\ 迷子にならないための地図 /

未経験から一人前への
「最短ルート」公開中

独学で「何から勉強すれば…?」と悩んでいませんか?
現場で戦える知識を、体系的にまとめました。

FA電気設計ロードマップを見る

Data1 って何の値だっけ?」 「Start って、外部入力ボタン? それともタッチパネルのスイッチ?」

半年前に自分が書いたプログラムなのに、意味が分からなくて頭を抱える。 そんな経験はありませんか?

変数名にルールがないのは、「名札のないロッカー」に荷物を詰め込むのと同じです。 中身を確認するためだけに、「クロスリファレンス」で検索し、詳細画面を開く…。 そんなことを繰り返しているうちに、貴重な時間が過ぎていきます。

なぜ、あなたのコードは読みにくいのか。 それは、変数名に「情報」が入っていないからです。

私は9年の設計経験の中で、ある「魔法」を使うようになってから、デバッグ速度が劇的に上がりました。

それは、国際標準(IEC 61131-3)の指針でも推奨されている「プレフィックス(接頭辞)」という技術です。

これを使えば、名前を見ただけで「変数の正体」が一瞬で分かるようになります。 今回は、他人が読んでも一瞬で理解できる「美しいコード」を書くための、プロの命名ルールを解説します。


目次

なぜ「名前」にこだわるのか?

理由は単純です。 プログラムは、「書く時間」より「読む時間」の方が圧倒的に長いからです。

ラダー回路における「デバイスコメント」は、表示設定をオンにしないと見えませんし、文字数制限もあります。 しかし、「変数名(ラベル名)」は常に回路図上に表示されます。

つまり、分かりやすい変数名をつけることは、「常に表示されるコメントを書く」のと同じこと。 これこそが、最強の効率化なのです。


鉄則①:「どこから来たか」を区別せよ(スコープ)

PLCの変数スコープ(有効範囲)とプレフィックスの関係を示す図解。物理的な入力機器からの信号には i_ (Input)、出力機器への信号には o_ (Output)、ネットワーク経由のデータには n_ (Network)、プログラム全体で共有される内部メモリには g_ (Global) という接頭辞が付く様子を、ハードウェア構成図と組み合わせてイラスト化。

ここが初心者の盲点であり、プロとの決定的な違いです。 初心者は「型(ビットか整数か)」ばかり気にしますが、プロは「スコープ(有効範囲)」を最も気にします。

「この変数は、PLCの外から来た信号なのか? それとも内部で勝手に変わる値なのか?」 これを区別するために、変数の頭に小文字(プレフィックス)を付けます。

プロが使う推奨ルール(スコープ)

  • g_ (Global):グローバル変数
    • 意味: プログラムのどこからでも読み書きできる変数。
    • 効果:g_」が付いていると、「これは他のプログラムでも使われているから、勝手に値を書き換えると危険だぞ」と一目で警戒できます。
  • i_ (Input):外部入力
    • 意味: 物理的な入力端子(X)。センサや押しボタン。
    • 効果: プログラムで値を書き換えられない「読み取り専用」であることが分かります。
  • o_ (Output):外部出力
    • 意味: 物理的な出力端子(Y)。ソレノイドバルブや表示灯。
  • n_ (Network):通信データ
    • 意味: タッチパネルや他ラインとの通信エリア。
    • 効果: 「通信タイミングによって値が変わるかもしれない」というリスク管理ができます。

【事例:Start の正体】

  • Start … 詳細を開くまで正体不明。
  • i_Start … 「あ、物理的な押しボタンだな」
  • g_Start … 「ライン全体の一斉起動フラグだな」
  • n_Start … 「タッチパネルの起動ボタンだな」

プレフィックスがあるだけで、これだけの情報量が手に入ります。


鉄則②:「どんな形か」を区別せよ(データ型)

PLCのデータ型とプレフィックスの関係を示す図解。ビット型(b_)はON/OFFスイッチ、整数型(w_)は整数が入る箱、実数型(r_)は小数がアイル箱、文字列型(s_)はテキストが入る巻物として描かれ、それぞれに具体的な変数名の例が示されている。型が違うデータを入れようとするとエラーになる様子も警告アイコンで表現。

次に、「その箱の形(データ型)」を示します。 これは、前回解説したFB(ファンクションブロック)の引数などで特に役立ちます。

プロが使う推奨ルール(データ型)

  • b_ (Bool/Bit):ビット
    • 意味: ON/OFF(True/False)の信号。
    • 例: b_AutoMode (自動モード中)
  • w_ (Word/Int):整数
    • 意味: 数字(16bit/32bit整数)。
    • 例: w_TimerSet (タイマー設定値)
  • r_ (Real):実数
    • 意味: 小数点を含む数値。
    • 例: r_Temperature (現在温度)
  • s_ (String):文字列
    • 意味: 文字データ。
    • 例: s_LotNo (ロット番号)

【メリット】 w_Val(整数用の箱)に 10.5(実数)を入れようとしたら、「あ、型が違う(wだから整数だ)」と書いている途中で気づけます。 つまらない型変換ミス(バグ)を未然に防げるのです。


実践! 悪い例 vs 良い例

では、実際にどれくらい読みやすくなるか比較してみましょう。

❌ 悪い例(1年後に読めない)

  • Temp
    • (Temporaryの一時変数? Temperatureの温度? どっち?)
  • SW1
    • (何のスイッチ? 入力? 内部?)
  • Data
    • (情報量ゼロ。何が入っているか全く不明)

⭕ 良い例(組み合わせ技)

  • i_b_EmsStop
    • i_(入力)+ b_(ビット)+ EmsStop(非常停止)
    • 意味:「物理的な非常停止ボタンの入力信号」
  • g_r_OvenTemp
    • g_(グローバル)+ r_(実数)+ OvenTemp(炉内温度)
    • 意味:「全体で共有されている炉内温度の現在値(小数あり)」

解説:長すぎませんか?

「名前が長くなって入力が面倒くさい」と思いましたか? 大丈夫です。最近の設計ツール(GX Works3など)には、強力な入力補助機能(インテリセンス)があります。

「i_」と打つだけで、候補がズラッと出てきます。 むしろ、適当な名前をつけて後で「えーっと、あの変数は何だっけ…」と探す時間の方が、人生の無駄です。


まとめ:未来の自分へのプレゼント

命名ルールは、あなたを縛る「拘束」ではありません。 未来のあなたが迷わないための「道しるべ」です。

いきなり全てを変えるのは大変かもしれません。 まずは、g_(グローバル変数)」をつけるところから始めてみてください。

それだけで、「この変数はどこか別の場所でも使われているのか?」という恐怖から解放され、安心してプログラムを修正できるようになります。

「変数名」という名のプレゼントを、未来の自分に贈ってあげましょう。


▼ 現場で役立つ!あわせて読みたい

💬 更新情報を X (Twitter) で発信中!

記事の更新通知や、現場で役立つ「電気制御の小ネタ」をツイートしています。 また、「記事のここが分からなかった」「現場でここが困っているけどどうしたらいい?」といった疑問があれば、DMで募集しています!個別のトラブル相談も、ブログのネタにさせていただけるなら大歓迎です!ぜひフォローして気軽に絡んでください!

左側は意味不明な変数名(Data1, Tempなど)で混乱するエンジニア(過去のスパゲッティコード)、右側はプレフィックス(g_, i_ など)で整理された変数名を使って自信を持って設計するエンジニア(未来の構造化設計)。PLCの変数命名規則によるビフォーアフターを対比させたアイキャッチ画像。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次