KOTOFORIO
← お役立ち情報一覧

「連携を作った担当者が辞めてから、誰も直せないんです」

連携は、担当者が自分のユーザーで作ったものだった。退職でユーザーが無効になり、その日から連携が止まった。コードを開いても、どの値をどう変換しているのか誰にもわからない。連携は作った日がゴールではなく、何年も動かし続けるものです。そのための4つの論点を整理します。

シリーズ「システム連携の設計」3/3本目

変換:項目と値の対応は、コードの外の表で持つ

外国語の手紙には翻訳が要ります。システムも、同じものを別の名前・別の形で持っています。一方は「won」、もう一方は「受注」。日付の形も、タイムゾーンも、税込か税抜かも違います。

対応表をコードの外に持つ
項目と値の対応をスプレッドシートや設定で管理する。値を1つ追加するたびにコードを直さなくて済む
知らない値は、止めて知らせる
相手が新しい選択肢を追加したとき、その値のデータを静かに捨てない。数字が少し減るだけの「静かな失敗」になる
変えるときは事前に知らせる約束をする
相手システムの担当者と、項目や値を変えるときの連絡ルールを決める

認証と権限:連携専用の鍵を、必要な範囲だけ

マンションの合鍵を業者に渡すとき、全部屋の鍵ではなく、作業する部屋の鍵だけを渡します。連携にも、連携専用の鍵を、必要な範囲だけ渡します。

連携専用のユーザーで動かす
人のユーザーを使い回すと、その人の退職で止まり、誰の操作かも区別できない
最小限の権限にする
管理者の権限で動かすと、連携の不具合で全データが書き換わりうる
鍵はコードの外の安全な場所に置く
コードに書くと漏れる。鍵を変えるたびにコードを直すことにもなる
鍵の期限と更新の担当を決める
期限切れで、ある日突然全件が失敗する事故を防ぐ

監視:動いていることを、毎日確かめる

水道管は普段誰も気にしませんが、漏れていても気づかなければ、ある日床が水浸しになります。連携も、動いていることを毎日確かめる仕組みがないと、止まっていることに数週間気づきません。

最後に正常に終わった日時
一定時間を過ぎても更新されなければ知らせる
処理した件数
普段と比べて急に増えた・減ったら知らせる。0件は失敗と同じくらい怪しい
連携ごとの持ち主
連携の一覧に、目的・持ち主・止まったときの影響を書く。通知が届いても、直す人が決まっていなければ誰も動かない
通知の重さ
止まった・全件失敗はすぐに、1件の失敗は日次でまとめて。多すぎる通知は誰も読まない

作るか買うか:壊れたら誰が直すかで選ぶ

専用のコネクタ
名刺・MA・会計など、よくある連携。早いが、細かい要件には合わないことがある
iPaaS
複数の連携をまとめて画面で管理したいとき。月額の費用がかかる
スクリプト(GASなど)
小さく特殊な連携。安いが、作った人しか直せない状態になりやすい
自作の連携基盤
大量・複雑・止まると困るもの。開発と保守の体制が要る

ここで先に反論しておきます。「スクリプトなら無料で作れるので、一番安い」と思うかもしれません。ですが、失敗の扱いと監視を入れずに作ったスクリプトは、止まったときの調査と復旧で、結局高くつきます。スクリプトで作るなら、失敗の退避・通知・持ち主・手順書を最初から入れておきます。実際に使っている形は無料実装テンプレート集で配布しています。

自己診断

項目と値の対応は、どこで管理されていますか?
コードの中だけなら、値の追加のたびにエンジニアが要る
連携は、誰のユーザーで動いていますか?
人のユーザーなら、その人の退職で止まる
連携が止まったとき、どれくらいで気づきますか?
数日以上かかるなら、監視がない
社内の連携やスクリプトは何本あり、それぞれ誰が直せますか?
答えられなければ、作った人しか直せない連携がある

シリーズ:システム連携の設計

  1. 1.基本編:正・方向・キー
  2. 2.信頼性編:重複・失敗・制限
  3. 3.運用編:変換・認証・監視・選定(この記事)

6つのシリーズの全体像は仕組みの設計:6つの要素にまとめています。

問い

社内で一番古い連携を1つ思い出してください。それを作った人は、今も社内にいるでしょうか。いないなら、その連携は今日止まっても、明日直せる状態にあるでしょうか。

この内容を実際に試す
30分相談する →