スキップしてメイン コンテンツに移動

自動化スクリプトの成否を分ける違い:結局はUXだ

スクリプト UX 比較

開発現場や運用組織で、システム運用の効率化のために自動化スクリプトを作成することはよくあります。最近ではAIの助けを借りて、誰でも素早く簡単にスクリプトを生成できる時代になりました。しかし、同じAIツールを使って同じ目的のスクリプトを作成しても、チームメンバーに愛されるスクリプトもあれば、そっぽを向かれるスクリプトもあります。 その理由は何でしょうか?

最近、同じ現場でスクリプトを主に開発する同僚と私の事例を通じて、ユーザーに選ばれる自動化ツールの核心について話したいと思います。

「動くけど、手間がかかりすぎる」

同僚が作ったスクリプトは、確かに要求された「目的」を達成するコードでした。しかし、スクリプトを実行するための過程が問題でした。

  1. スクリプトを実行するために手動でGatewayサーバーに接続しなければならない。
  2. ログイン後、必要な情報を手動で照会しなければならない。
  3. ユーザーが直接状態を確認し、必要な部分だけを選んでスクリプトのパラメータとして入力して初めて実行される。

結局、このスクリプトを使うためには、作業者がシステムの構造をよく理解している必要があり、実行の前後で緊張を緩めることができませんでした。「ツール」を使うために「人」が合わせなければならない状況だったのです。

「ワンクリックで全部やってくれる」

一方、私がチームに提供したスクリプトの方向性は異なりました。

  1. ユーザーが目的だけを選択すれば、
  2. スクリプトが目標対象のGatewayサーバーに勝手に接続し、
  3. 必要な情報を自ら収集してユーザーに提示します。
  4. ユーザーが内容を確認して「次へ(Next)」を押すと作業が安全に遂行され、
  5. 実行前後の結果を比較し、報告しやすい形で証拠(Evidence)ファイルまで自動的に残します。

このスクリプトを使うための**事前準備は「ゼロ」**です。結局、チームメンバーは私のスクリプトだけを使うようになり、同僚は自動化業務から手を引くことになりました。

コーディングスキルではなく「UX(ユーザー体験)」の違い

同じAIでコードを書くのに、なぜこのような結果の違いが生じるのでしょうか? 正解はまさに**UX(ユーザー体験)**にあります。

依頼者が「こういう作業をするスクリプトが必要です」と言ったとき、ジュニアとシニアのアプローチはここで分かれます。

  • ジュニアのアプローチ:「この作業『だけ』を実行するコードを書いて渡せばいいだろう。」
  • シニアのアプローチ:「依頼者は最終的にこの作業を通じて何を得たいのだろうか? どうすれば最小限の労力で目的を達成させてあげられるだろうか? 作業者が最も不安に思うポイントをどう解消し、安心できる証拠を握らせてあげられるだろうか?」

ジュニアが育てるべき武器

AIがコードを代わりに書いてくれる時代において、「文法を知ってコードをタイピングする能力」はもはや強力な競争力ではありません。今の開発者の真の実力は、**「依頼者の文脈を読み取り、最小限のアクションで目的を達成するようにデザインし、心理的な安定感まで提供する能力」**で決まります。

これはまだAIが完全に代替できない、徹底的に人(個人)の力量の差が明確に表れる領域です。

ジュニア開発者であれば、単に動作するコードを超えて、「このツールを使う人の体験」を設計する訓練をしなければなりません。それこそが、AI時代に代替されないシニアのパワーであり、開発者としての価値を証明する最も確実な道なのです。

コメント

このブログの人気の投稿

面倒くさいORACLEの文字化け状況

ORACLEはそもそもUTF-8をサポートしてほかの言語はサポートはしているって書いてますが親切ではないようです。 現在サーバー側は昔からUS7ASCIIに設定して日本語を入れてしまい、データは7ビットASCIIモードで読み取りながら日本語のコートがOS側とクライアント側で変換しない必要があります。 クライアント側で文字化けの解決にはNLS_LANGの設定が効くクライアントが必要ですが、一部の有料クライアントにはサポートするようです。 接続構造は参考に https://www.oracle.com/technetwork/jp/content/charcterset-250314-ja.pdf の19スライドのように クライアントからNLS_LANGをUS7ASCIIに設定しても その設定した言語にもらったUTF-8のデータをクライアントが変換すると NLS_LANGを設定しても意味がないようです。 ORACLE SQL Developerがこの様です。 ODBCと直接接続は必ずUTF-8に変換してしまうのでUS7ASCIIになっているDBからはクライアントをいくら変換しても文字化けのままです。 必ずOCI接続を通じてクライアント側から読み取らないとUS7ASCIIは勝手に変換されますね。 この全ての条件が満たした無料クライアントはA5mk2の2.9.1バージョンだけですね。 A5MK2 ver.2.9.1 : https://a5m2.mmatsubara.com/download/a5m2_2.9.1_x64.zip 2.9.1 バージョンでサーバーを設定する場合Uicode変換を強制に無視するオプションがあります。 多分このバージョンの時点ではUTF-8をメインにして設計したDBが少なかったから文字化け対応のためできたオプションでしょう。 しかし、A5mk2の新しいバージョンにもまた結果の変換をしないオプションがなくなって文字化けしてしまいます。開発者はもうUTF-8ではないDBはないと思ってるでしょう。まだまだ残ってますよ~。 クライアント側からの変換などに参考になればと思います! まだ直接お仕事になさってますか? もう遅いです!ソフトウェアロボットにお仕事を任せてどの位自分の作業分量が減ってるかをご確認ください! https://talklowy-jp.b...

コピペができないときチェックすべきこと! :: よく迷うUiPathのコツ

UiPath( https://uipath.com )はMicrosoft社のWWFを改良した製品なのでVisual Studioより初心者向けに使いやすくなっている。 しかし、初心者がそのまま使うにはかなりのハドルがある。 理由は基本開発者向けの開発ツールを無理やり便利に作ってみたとしても開発の概念と考え方がないと結構躓くことが多い。 そのなかで私もよく迷ったりしていることの一つを整理しとく。 基本Activityはすぐコピぺができるので多数のUiPath Studioを開いて開発してたりする。 ここでコピペをしても反応ないときがよくある。 この場合はこれをチェックすること! 1.Sequenceがなく一つのActivityしかないところにはペーストできないのが多い。 例えば、ifの処理ボックスにはSequenceが最初はない。 そのボックスに一つのActivityはペーストできるのに2個目からはなぜか反応ない。 それで分からないまま新しいActivityを追加してたりしたが、 あそこにSequenceを入れたら解決ができるのだ! 2.正常にペーストできるはずのところに反応ない。 この場合はPackageが合わなくペーストが効かないケースが多い。 DESIGN>Manage Packagesをクリックしてコピー元のパッケージにインストールされているのにコピー先にインストールされてないパッケージを探す! パッケージを一々見るのが難しい!と思ったら メモ帳からファイルがあるフォルダにあるproject.jsonファイルを開いてみる! あそこにJSONの形式でインストールされたパッケージが見えるので比較しやすくなる! ちなみにコピペをすると変数の宣言が大変だと思うが、 そこでもコツがあるのだ! 変数の宣言はなるべく細かくしてSequence単位で管理できるようにする。 全てに影響がある変数はしょうがないから一番広く宣言するけど。 初心者向けの説明だと、 Variablesというところをクリックして変数を開いたらScopeという範囲が見える! 大体Sequenceボックスの名前を変えてないのでSequenceがすらりと表示されてるはずが、Sequenceボックスの名前を付けてたら見やすくなる。 あ...

UiPath - Excelのシート名が存在した場合の処理

UiPath.Excel Activityは活用方法によってかなり強力ですが、隠れて探せない項目が多すぎて困ったりします。 公式ドキュメントもいまいちだし…。 Excelを自動化するには協力なUiPathの機能の中でSheetの判断処理を残します。 今まではシートがあったら何とかしようとしたら見つける方法が分からなく、ErrorのExceptionで判断したりしましたが、 workbook.GetSheets.Contains("<sheet name>") があったのをいまさら見つけました; 早速試してみましたが、 messageboxにworkbookとか書いてみても出てこない…。 これはExcel Application Scopeを利用しなければなりませんでした! まずExcel Application ScopeにExcelファイルを登録! Excel Application Scope Activityの属性にOutputにwbを入力して変数に入れます。 変数に入れてからMessageBoxに wb.GetSheet.Contains("Sheet1") を入力してみると成功! 「wb.」をおした時点でいっぱい出てきましたね。 ググってみても詳しく出て着なかったのでここにまず記録 giip - Free UiPath and Rpa Integrated Orchestration Service https://giipasp.azurewebsites.net