社内で自作システムを使いたい話


社内で自作システムを使う壁

業務効率化のために自作システムを作る、、までは簡単なんですがね。
それを組織として利用しようとするといろいろな壁があります。
ちょっと考え方をまとめてみようかなと。

ガバナンスとの戦い(勝てない)

そもそも、セキュリティはガバナンスが肝なわけで、基本は組織はきちんと精査して安全性を担保したツールや環境以外は使わせたくないし、使えないようにガッツリシステムと制度を固めるんですよね。
で、そこにシステムを追加しようとするなら。
相応の規模のメリットがあることを示して、相応の予算と体制で既存のルールとおり合いをつけて追加する、っていう大掛かりなことになるわけです。

個人やチームがちょこちょこ使って潰すくらいのシステムでは、ガバナンスの壁はまず超えられない。
あるいは運良く壁をすり抜けてしまっても、コアメンバが抜けてガバガバな状態になった段階でガッツリ攻撃の踏み台にされたりなんかして、ガバナンスをもっとガッチガチにされる羽目になるまでのワンセット。

そういうのがない会社に行けばって?
自分の立場上、むしろガバナンスづくりに先に着手するかなぁ。。ガバナンスは必要なんですよ、実際。

与えられたもので頑張る?

じゃぁどうするかというと、ガバナンスが(うっかり)許可してしまっているマクロやRPAツールで渋々格好の悪い仕組みを作るくらいしか無くなる。
ただ、ここはセキュリティの流暢次第でいつ塞がれるかわからないですから、仮のすみかにしかならない。

自腹AWSに作っちゃう?

ダメ、絶対。
何がって、業務で使うシステムである以上、多かれ少なかれ機密情報を登録してしまうことになりますから。
そんな用途じゃない?
使ってるうちに別の用途に使えるんじゃないかとか余計なこと考えてやらかすやつが絶対でますから。。
昔Webストレージにデスクトップの全ファイルアップした同僚がいたなぁ。。何ミスりゃそうなるんだか。。

結局Officeかよ。

まぁそうなるんですよね。
エクセルバンザイ。
。。。。。。。。。まだだ、、、まだ諦めてたまるか!!

突っ走る前に。そのシステムで大丈夫?

ちょっと脱線。
業務のシステム化や自動化でツネヅネ感じていることをつらつらと。

ちゃんと面倒見れるの?

システム使い始めた頃はいいんですよ。
それが半年、、、1年、、、まず間違いなく面倒見てる時間なくなりますし、やる気もなくなる。
チームできちんとメンテできるようにしようとすると一定のスキルマップを持った人材を定常的に育成・配備できるようにする必要があるのですけれど、当然本業は自作システムのメンテじゃないですから、、、結局もともとそういう開発を実施しているチームじゃないとシステムの面倒見きれない、という状態になります。

人間にできないことはやらせない

あるいはシステムありきの効率の業務が当たり前になってくると。。ある日システムがトラブルったら、、、自チームや関連チームに甚大な迷惑をかける羽目になる。
それを考えると、システムにやらせる作業は最悪人間が頑張れば実施できる(数日くらいなら、、)というくらいにとどめて置かないと怖い。
そうしないといざというときに耐えられない。
あるいは、ダウンが許されないガッチガチのハードコアな運用を求められることになってしまう。。

信頼しないしさせない

最悪のケース。
チームの業務が自システムありきになってしまって、、、
システムに任せっきりになりその業務できるノウハウがチームから消え去り、、
そして開発者が転職したら。

。。。何が怖いって、これがよくある話だってことなんですよね。
そもそも素人がその時のはやりのフレームワークで作ったようなもん、1年もたてば脆弱極まりないガバッガバな状態になるのですから、さっさと破棄して別のシステム作るなり、ちゃんとした商用のシステム買ってきて業務マイグレする方が遥かに正しい。
むしろそのシステムがあるからと業務のマイグレ妨げる原因になってたら元も子もない。

総じて

必要に応じて作って、潮目がかわったらさっさと潰す。
その程度のシステムであるべきだなと思ってます。

改めて、ガバナンスとの戦い

さて。
流暢は変わるでしょうけれど、現時点である程度使わせてもらいやすいかなあぁと思う技術をつらつらとまとめてみます。

Power Automate (Microsoft)

Office 365を使っていると、実は利用ライセンスがついてたりします。
Office製品をベースとしたRPAツールとでもいいましょうか。
https://flow.microsoft.com/ja-jp/

もともと「flow」という製品名だったので、使い方をググるときはflow版の情報がヒットすることも多いですね。

GUIで箱同士を線で結んでいく感じで処理を作っていきます。
outlookでメールを受け取ったら、内容を読み込んでエクセルに書き出したり。
Teamsに起票したり。
Tasksと連携してチケット管理したり。

過去に駆動したときの条件で再試験をする、というような動作テストの使い勝手は非常に良いです。

ちょっと複雑な処理は、VBAライクな構文で書いていきます。
。。。VBAかぁ。。。
あと、WebUIでVBAを記載すると、なんか内容の反映に変なディレイがあったり、構文ミスしてると無言で入力拒否って前の値保持したり、画面の最大化しないと表示されないボタンがあったり、、めんどくさいやつです。

。。てかそれより何よりそもそもOffice製品がイケてないからそいつら連携させてもさぁ、、

ただ、これもよくよく考えると結構深刻な攻撃通せちゃいそうな感じもあります。
遠からず、封印されるんじゃないかな、、

ブラウザ + js + localstorage

なんだかんだ行ってもブラウザはまず使えます、、、よね、、?
接続可能なサイトは多かれ少なかれ絞り込まれてるでしょうけど。

で、外部にデータを置くのがダメなら? ローカルにおきゃいいだろ!! って発想。
。。。チームの情報共有にすらつかえんけど。。。

外部WebサーバにはJSだけおいて、処理は全部ブラウザに押し付けて、データの保存もブラウザに押し付ければ、、、
試しに作ってみるかなぁ。。

チームの中での情報共有は最低限なんとかしないといけないけど。
WebRTC,,,?
私がガバ側なら、んなシステム見つけた時点で潰すわな。。何しでかすかわかったもんじゃない。

(行けるか、、?)エクセルマクロ、Power Shell

現状ダメ目の位置にいる人だと思います。
攻撃メールの添付だったり、侵入後の攻撃展開用に頻繁に使われるもんだから、昨今のセキュリティ対策入れてると完全停止させられてるんじゃないでしょうか。
もう一歩進むときちんと証明書で署名したものだけ実行させる、という管理になると思うのですが、どうなんだろ。。

USBメモリもそうですけど、利便性を突き詰めて作られたはずなのにむしろ危ないからと封印される。
悲しい話ですね。。。

他、、

なんか良いものあったらぜひ教えてください。