中身の3パターンが投稿の続きにある形なので、ここは「自分の現場版の3パターン」を先に作ってしまうのが実利がある。最初の一歩は今日30分でできる。手元の直近プロジェクト1本を GX Works で開き、コピペで作った回路ブロックを検索して、デバイス番号の置き換え漏れ・タイマ番号の重複・立ち上がり接点の元信号が旧ブロックのまま、の3点だけを目視で潰す。ほぼ確実に1つは出てくるはずで、出てきたパターンをメモに残す。次の段階は、これを人力の目視から機械の検査に移すことだ。GX Works からデバイス使用一覧やプロジェクトを CSV/テキストで書き出し、Excel か GAS で「同一タイマ・カウンタ番号が複数の回路で出力側に使われていないか」を突き合わせるだけのチェック表を作る。二重コイルと番号重複はこれで相当な割合が機械的に拾えるので、コピペ由来の事故は目に見えて減る。さらに進めるなら、書き出したラダーのテキストを生成 AI に貼って「このブロックはこの上のブロックのコピー元と何が違うか、デバイス番号の差分だけを表にして」と頼む使い方が効く。差分を人間が読む形にしてくれるので、置き換え漏れが一覧で浮かぶ。コストは、目視とチェック表なら手持ちのツールだけでゼロ円、AI に読ませる部分も無料枠で試せる。注意点は2つで、1つは社外案件のラダーを外部サービスへ貼るのは秘密保持の問題があるので、まず自社の練習用プロジェクトか、デバイス名を伏せ字にしたものでやること。もう1つは、機械チェックが通ったことを「動作確認した」と読み替えないこと。番号の重複は拾えても、コピー元の回路が今回の設備で意味を成すかどうかは人間にしか判断できない。
TOPIC 04制御設計
引き継いだ GAS に、本番を止めずに最初の修正を入れる手順
引き継いだ GAS を直すと決めた人が、最初の1行をどこで書くかを扱った記事。たいていは本番のエディタで直接書き始めることになるが、それは他に開く場所がないからだと指摘している。そのうえで、GAS には先に知っておいたほうがいい性質が3つあるとして挙げているのが次の点である。1つは、保存した瞬間に反映されること。時間主導トリガーは次の実行で最新のコードを動かし、デプロイという工程を挟むのはウェブアプリとして公開している場合だけで、定期実行は保存だけで置き換わる。もう1つは、取り消しが効かないこと。エディタを閉じたあとの Ctrl+Z はなく、変更履歴から戻すことはできるとしている。
「保存=即本番」という性質は、制御屋にとってはオンライン書き込みそのものなので、扱い方も同じにするのが早い。最初の一歩として、引き継いだ GAS を開いたらコードを1文字も触る前に、プロジェクト全体をコピーして `〇〇_退避_20260828` という名前の別プロジェクトを作ってしまう。ラダーで言えば書き込み前の吸い上げに当たる作業で、これをやっておけば変更履歴に頼らずいつでも戻せる。次の段階は、時間主導トリガーの扱いだ。定期実行が保存だけで置き換わるということは、あなたが編集している最中の中途半端なコードが夜中に走る可能性があるということなので、修正に着手する前にトリガー一覧を開いて対象トリガーを一時削除し、スクリーンショットで設定内容を残しておく。作業が終わって動作確認できてから同じ設定で作り直す。この「止める→直す→戻す」の順番を守るだけで、業務が止まる事故はほぼ防げる。実務での最初の対象としては、日報や点検記録をスプレッドシートに集める GAS、あるいは客先報告書のフォーマット整形をしている GAS が向いている。壊れても翌朝手作業で埋め合わせが利く範囲から始めるのが安全だ。コストはすべて Workspace の標準機能なので追加費用ゼロで、かかるのは1本あたり30分程度の手間だけ。注意点として、退避コピーを作るときにスプレッドシートやフォームへのバインドがある場合は、コピー先が本番のシートを掴んだままになることがある。退避プロジェクトのトリガーは必ず空のままにして、二重に走らせないこと。ここを外すと、直すつもりが本番データを二重書き込みする側に回ってしまう。
TOPIC 05制御設計
GAS の業務ロジックを Vitest でローカルテストする
TypeScript と clasp で GAS をローカル管理している人、あるいはこれから始めたい人に向けて、Vitest で業務ロジックのテストを自動化する方法を紹介した記事。Vitest のようなテストフレームワークの本当の価値は、一度書いたテストをコードの変更のたびに何度でも自動で再実行し、意図しない振る舞いの変化(デグレ)を検知できるという継続的な品質保証にあるとしている。自動テストが本当に効いてくるのは、分岐が複雑でロジックの見通しが悪くなりがちな業務ロジックを、半年後・1年後に別の担当者あるいは未来の自分が触っても壊れていないことを機械的に保証する場面だと述べている。
「半年後に別の担当者が触っても壊れていないことを機械的に保証する」というのは、まさに制御設計で引き継ぎのたびに困っている話なので、GAS を持っているなら試す価値がある。最初の一歩は、いきなり全体をテストしようとしないこと。今動いている GAS の中から、判定ロジックが1つだけ入った関数を選ぶ。たとえば点検記録の「測定値が管理値を外れていたら NG を返す」関数や、日報から稼働時間を計算する関数がちょうどいい。その関数だけを SpreadsheetApp などの GAS 固有 API に触らない純粋な関数として切り出し、入力と期待値の組を5つ書く。上限ちょうど、上限+0.1、空欄、文字列、マイナス値の5つで、境界のバグはほぼ拾える。次の段階は、この形をテンプレート化して横展開することだ。GAS 固有の API を触る部分と判定ロジックを分けるという書き方さえ守れば、テストできる範囲は自然に広がる。制御屋にとっては、シーケンスの判定条件をシミュレータで空打ちしてから実機に入れるのと同じ発想だと考えるとしっくりくるはずだ。コストは、Node.js と Vitest と clasp がいずれも無料なので金銭的にはゼロ。かかるのは最初の環境構築の半日程度で、2本目からは1本あたり1時間もかからない。注意点は、テストが通ったことを「業務が正しい」と読み替えないこと。テストが保証するのは、あなたが書いた期待値どおりに関数が動くことだけで、管理値の設定そのものが間違っていれば通ったまま間違い続ける。だから期待値の表を作るときは、現場の管理値表と突き合わせて数字を写す工程を必ず人間の手順として残しておきたい。
B
フィールド業務
4 TOPICS
TOPIC 06フィールド業務
Siemens ProductCERT が Element Maps のクロスサイトスクリプティング脆弱性を公表(SSA-682041)
影響範囲が @siemens/maps-ng パッケージのみと明記されているので、まずやるべきは「自分は当事者か」の切り分けだ。最初の一歩は、客先で納めた HMI や監視画面のうち、ブラウザで開く形式のものを洗い出し、地図表示を使っている画面があるかを確認すること。工場のレイアウト図や設備配置図を地図コンポーネントで描いている監視システムがあれば当たりで、なければ今回は対象外と結論を書いて終わらせてよい。この「対象外だと文書で結論づける」工程まで含めて15分で終わる。次の段階は、当たった場合の更新計画だ。Siemens が新バージョンを出しているので最新版に上げるのが正解だが、現場の監視システムは止められない時間帯があるので、更新のタイミングを客先の生産計画と突き合わせて決める。攻撃条件が「細工されたURLを開いてピンにマウスを重ねる」である以上、更新までの暫定策としては、監視 PC から外部リンクを開かせない運用と、オペレータへの「監視画面のURLはブックマークからしか開かない」という周知が効く。コストは、パッケージ更新自体はライセンス内なので追加費用なしで、実作業は動作確認を含めて半日〜1日を見ておく。注意点として、この手の Web コンポーネント由来の脆弱性は「制御機器ではないから関係ない」と扱われて放置されやすい。実際に狙われるのは制御機器そのものではなく、それを見ている端末のブラウザセッションのほうなので、OT 側の資産台帳に「監視画面が使っている Web コンポーネントとそのバージョン」の列を足しておくと、次に同種の勧告が出たときの判断が数分で済むようになる。
無料・事前登録制で会期が来週の9月3〜4日なので、行くか行かないかを今日中に決めてしまうのが実利がある。最初の一歩は、事前登録を先に済ませてしまうことだ。登録は無料なので、当日行けなくなっても失うものはない。逆に登録を後回しにすると定員や締切で落ちる。狙いを「AIエージェント活用の留意点」の回に絞るなら、9月4日(金)10:30〜11:30 のワークショップセッション WS C だけを目的に、午前だけ抜ける形でも十分に成立する。次の段階は、聞きに行くなら質問を3つ用意していくことだ。展示会の講演は一般論に寄りやすいので、自分の案件に引きつけた具体的な問いを持っていくかどうかで持ち帰りの量が変わる。制御設計・現場対応をやっている立場なら、「エージェントに装置のパラメータ変更まで任せている事例で、変更前の承認はどう取っているか」「誤操作したときの責任分界はどこに引いているか」「導入した現場で最初に止まったのはどの工程か」あたりが効く。留意点が主題の講演なので、この種の質問は本題とも噛み合う。コストは参加費が無料なので、実質かかるのは交通費と半日〜1日の時間だけ。首都圏以外から出るなら費用対効果を測りにくいが、同時開催の「AI Innovation Tokyo 2026」「DXシステム開発 Expo 2026」も同じ会場で回れるので、AI 関連の情報収集をまとめて1日で済ませる日と割り切ると計算が合う。注意点は、この手のイベントで聞いた導入事例を、そのまま社内で「他社はやっている」と紹介しないこと。展示会で語られる事例は成功側に寄っているので、持ち帰った話は必ず「自分の設備で最初に詰まるのはどこか」に翻訳してから共有したい。
TOPIC 08フィールド業務
設備が止まった直後は、I/O番号とタイムスタンプだけを先に書く
X の投稿で、設備が止まった直後に、まだ配線もセンサーも見ていないのに「また俺のせいや」と口から出たことがあると振り返っている。若手の頃、その一言のせいで、確認すべきI/O番号を後回しにして30分ロスしたこともあるという。投稿は、事実は「アラームが出た」だけであり、そこに評価を乗せた瞬間、思考は原因ではなく自分の情けなさに向かうと指摘する。そのうえで、今は異常が出たらまずI/O番号とタイムスタンプだけをメモしてから話すようにしており、感情はいらない、感情はそれを書き終えたあとでいい、と書いている。
AI が人間の仕事を奪うとの懸念が高まる一方、労働市場全体を見ただけではどの層が影響を受けているのかは分からない。この点について、スタンフォード大学デジタルエコノミー研究所の研究チームが、生成AIの普及後に起きた雇用の変化を年齢や職種ごとに分析した結果を報告している。記事は研究を "Canaries in the Coal Mine? Six Facts about..." として紹介しており、影響が若年層に集中しているという結果を伝えている。
これは自分の雇用より、「若手にどう仕事を渡すか」の設計に効く話として読むのが実利がある。制御設計の現場で AI に置き換わりやすいのは、まさに若手が経験を積むために振られてきた仕事——タグ表の作成、コメントの整備、既存プログラムの読み解き、報告書の下書き——だからだ。最初の一歩は、自分のチームで新人に振っている作業を1週間分書き出し、「AI に投げたら10分で終わるもの」に印を付けてみることだ。おそらく半分近くが該当する。次の段階は、その印が付いた作業を単純に AI へ移すのではなく、渡し方を変えることだ。具体的には、新人に「まず自分でやる」ではなく「AI に出させた結果をレビューして、間違いを3つ指摘する」という形で渡す。タグ表の命名規則チェックでも、ラダーの二重コイル検査でも、AI の出力には必ず取りこぼしと過検出が混ざるので、そこを見つける作業は現物の理解がないとできない。つまり、経験を積む場としては元の作業と同等かそれ以上に機能する。3つ目に、レビュー結果を記録に残すことを勧めたい。「AI がこう言ったが、実際はこうだった」という差分は、そのまま社内のノウハウになり、次に AI へ渡すときのプロンプトにも組み込める。コストは追加のツールが要らないのでゼロ円、必要なのは仕事の振り方を決め直す時間だけだ。注意点として、この研究が示しているのは職種と年齢による雇用変化の偏りであって、あなたの会社で誰を採るべきかを直接教えてくれるものではない。数字を根拠に採用や配置を語るのではなく、「若手が経験を積む経路が細くなりやすい」という警告として受け取り、経路を自分の手で作り直すほうへ使いたい。