TAKST の雑念所

週2は何かを書くということを目的に、思いついたことを何か書きます。

IT 業界における手順書は本質を完全に見失った典型である、大体、コードで書けるはず

今北産業

  • 知ってる人は知っている。IT 業界には "手順書" と言われるものが存在する。
  • 他業界にも存在するが ITIL あたりのプラクティス資格でも、「運用手順書が存在しない作業は行ってはならない」とか扱ってしまったことにより手順書が一部で神聖化されている感がなくもない。
  • 手順書はミスなく誰でも同じことができるようにする、が目的で、今では大半の作業がそれをコードで書くことで実現できる (Infrastructure as Code, IaC) のに、頑なに手順書にこだわる層がいる。なぜ?

さて、忙しさにかまけて数日サボってしまったので、今日は書こうと思う。と言いつつ、忙しさのピークは抜けてないので、これはこれで現実逃避と言えなくもない。今日書きたいのはなんで日本で IaC が定着しないのか。というか、いまだに手順書がでかい顔しているのか、という話です。

別に IT 業界に限定せずに手順書や運用マニュアルのようなものは存在すると思うのです。そして、誰もが簡単に繰り返し実行できる運用手順を確立することや、その確立された手順を分かりやすく文章にまとめることはそれぞれが独立したスキルで、どちらも極めて重要ながら身に付けることが難しいということも共通してるかと思います。で、本題。IT業界における運用手順書の話です。仕事上、クラウドの利用を訴求することが多いのですが、未だにクラウドは頻繁に画面が変わるからスクリーンショットや手順の文言の更新も頻繁に発生して、手順書管理が面倒だからまかりならん、とご意見いただく現場に遭遇することがあるんですよね。なんかこれ、本質を見失って、手順書を管理することが半分くらい目的になってるよなーと。運用手順自体を標準化して共有するということが時代や技術を問わずに重要であるということは変りません。ただ、GUI や文言ありきの手順書ってのはどうなのかな、と。クラウドに限定しませんが、最近の技術って大体、コードで叩けるんです。スクリプトとか、コマンドラインとか、API とか、いずれにせよ画面や文言にとらわれずに、直接実行できる内容そのものを記述する術があるんですね。なので、"誰もが、簡単に、ミスなく繰り返し処理を行う" という本質的な目的を考えた場合、GUI なんかさっさと捨ててコードベースで管理すべきなんです。

例えばですが、IaaS VM を立てて、OS をインストールする手順なんか、オンプレで GUI ベースでやると、対象環境に接続するところから、どのアイコンをクリックしてどのボタンをクリックして、どの選択肢を選んで、次はどのファイルを選んで、ということを延々とやっていくわけですが、パブリッククラウドだと aws ec2 run-instances とか az vm create とかで終わるわけですよ。オンプレでも Python でも PowerShell でも使えばよろしい。Terraform とか ansible とか使っても良いですし。

なんかこう、その作業で何の価値を産みだしているのか、という仕事の本質的なポイントではなくて、教えられた業務を完遂することが仕事になっている例ってやっぱり残念だなーと思う次第。自分自身、仕事のための仕事じゃなくて、価値を生み出すことをやってるかを確認しながら日々を過ごせるよう気を付けないとですね。