AIを使って、ちょっと面倒なExcel作業を片付けた
生成AIの活用というと、プログラムの自動生成やAIエージェントによる業務自動化など、大きな話題が注目されがちです。
もちろん、そうした使い方には大きな可能性があります。
私自身、以前、AIにPowerShellのコードを書かせて、100ファイル以上のExcelを一括処理したことがあります。
しかし、実際の仕事では、そこまで大がかりな仕組みを作る必要がない場面も少なくありません。
先日、Excelに格納されたデータを整理し、必要な情報を抽出する仕事がありました。
作業自体は難しいものではありません。
ただ、元データの持ち方が少々厄介でした。
そこでAIを使って加工方法を考え、Excelの標準機能と組み合わせて処理しました。
今回は、そんな日常的なAI活用と、その作業を通じて感じた業務設計への疑問について書いてみたいと思います。
作りたいのは、部署・氏名・ユーザーIDの一覧
今回の仕事のゴールは、非常にシンプルでした。
部署名、氏名、ユーザーIDを組み合わせた一覧を作ることです。
例えば、次のようなデータです。
こうした一覧があれば、誰がどの部署に所属し、どのユーザーIDを利用しているのか確認できます。
ところが、実際に用意されていた元データは、このような単純な構造ではありませんでした。
A列には部署の正式名称が入っています。
B列には、最初の行に部署の短縮名があり、その下に複数人の氏名がカンマ区切りで記載されています。
そしてC列には、複数のメールアドレスがセミコロン区切りで格納されていました。
つまり、一つのセルに複数の情報が詰め込まれている状態です。
人間が画面で確認するには、それほど不便ではないかもしれません。
しかし、このデータを利用して別の一覧を作ろうとすると、少し面倒なことになります。
AIに相談して、Excelの機能で分解する
まず、B列の先頭にある部署の短縮名を取り除く必要がありました。
部署の短縮名と氏名の一覧が、セル内で改行されていたからです。
そこで、AIに相談して、最初の行だけを除去する方法を考えてもらいました。
続いて、ExcelのTEXTSPLIT関数を使って、カンマ区切りの氏名を個別のデータに分割しました。
C列のメールアドレスも同様です。
こちらはセミコロンを区切り文字にして分割します。
こうすることで、一つのセルにまとめられていた情報を、個別に扱える状態へ変換できました。
ここで利用したのは、Excelにもともと備わっている関数です。
特別なプログラムを作ったわけではありません。
AIに適切な加工方法を考えてもらい、実際の処理はExcelの標準機能で行った。
それだけの話です。
しかし、こうした小さな使い方でも、関数を調べたり試行錯誤したりする時間を減らせます。
氏名の表記揺れを整えて、ユーザーマスタと照合する
次に問題になったのは、氏名の表記揺れでした。
例えば、「山田 太郎」と「山田太郎」。
人間なら同じ名前だと理解できますが、Excelで単純に文字列を比較すると一致しません。
今回のデータにも、姓名の間にスペースがある人と、ない人が混在していました。
そこで、半角スペースや全角スペースを取り除き、照合しやすい形に整えました。
その後、別途用意されていたユーザーマスタと照合します。
マスタには、部署、氏名、ユーザーIDなどの情報があります。
加工した氏名を使って対象者を探し、必要な情報を取得しました。
こうして、最終的な部署・氏名・ユーザーIDの一覧を作成したわけです。
もちろん、氏名だけで照合する場合には注意が必要です。
同姓同名の人がいるかもしれませんし、部署が異なる可能性もあります。
照合できなかった人や、複数の候補が見つかった人については、人間が確認する必要があります。
データが一致することと、正しい人物を特定できることは別です。
このような判断まで、すべて機械に任せればよいとは思っていません。
AIを使うために、AIのシステムを作る必要はない
今回、AIに複雑なプログラムを書かせたわけではありません。
AIがExcelファイルを直接操作したわけでもありません。
データの加工方法を相談し、それを自分でExcelに適用しました。
それでも、十分に役立ちました。
最近はAIエージェントやAIによる自動プログラミングなど、さまざまな技術が登場しています。
技術的には面白いですし、業務に与える影響も大きいでしょう。
ただ、現場で働いていると、もっと小さな問題が日々発生します。
Excelのデータ形式が揃っていない。
関数の組み合わせが分からない。
異なる資料の情報を突き合わせる必要がある。
こうした問題を解決するだけでも、時間はかかります。
そのために毎回プログラムを開発したり、新しいシステムを導入したりする必要はありません。
AIを使って最適な方法を考え、既にある道具を使って処理すれば十分なこともあります。
私は、こうした使い方がもっと一般的になってもよいと思っています。
それにしても、なぜこんなデータ加工が必要だったのか
一方で、今回の仕事を進めながら、少し気になったことがありました。
それは、そもそもなぜ、このようなデータ加工が必要になったのかということです。
今回のゴールは、部署・氏名・ユーザーIDの一覧を作ることでした。
しかも、照合に利用できるユーザーマスタも存在していました。
それならば、最初から利用目的に合ったデータを用意できなかったのでしょうか。
もちろん、元データには別の用途があったのかもしれません。
例えば、部署単位で所属人員を一覧表示するための資料だったり、メールの送信先を管理するための形式だったりする可能性があります。
そうした用途であれば、一つのセルに複数の名前やメールアドレスをまとめることにも、それなりの理由があるでしょう。
ただ、今回の業務に利用するには適していませんでした。
つまり、元データの作り方と、後工程で必要とされるデータの形が合っていなかったわけです。
私は、ここに業務設計上の課題を感じました。
ゴールが共有されていないと、後工程に余計な仕事が生まれる
ITの仕事をしていると、こうした場面に出会うことがあります。
前工程では問題なく作業が完了している。
しかし、その成果物を次の工程で利用しようとすると、追加の加工が必要になる。
部署名を整理する。
文字列を分割する。
氏名の表記を統一する。
別のマスタと照合する。
一つひとつは難しくありません。
しかし、後工程のために余計な作業が発生していることは確かです。
こうした問題の背景には、作業ごとの役割は決まっていても、最終的なゴールが十分に共有されていないという事情があるのではないかと思います。
例えば、データを用意する人が、その後どのような処理に使われるのかを知らない。
受け取る側も、元データの構造や制約を十分に理解していない。
それぞれが自分の担当範囲では正しく仕事をしていても、全体としては非効率になってしまう。
そんなことが起きるわけです。
個々の作業が正しくても、業務全体が合理的とは限らない。
これは、以前から業務改善について考える中で感じていることです。
業務改善は、今ある仕事をそのまま自動化することではない
以前、「業務自動化は、今ある仕事をプログラムに置き換えることではない」というテーマで記事を書きました。
今回のExcel作業も、その考え方につながります。
仮に、今回のデータ加工を完全に自動化するプログラムを作ったとします。
確かに、作業時間は短縮できるでしょう。
しかし、そのプログラムは、元データが扱いにくいという問題を前提にしています。
元データの構造が変われば、プログラムも修正しなければならないかもしれません。
一方、最初から目的に合ったデータを受け渡すことができれば、加工処理そのものが不要になる可能性もあります。
つまり、改善にはいくつかの選択肢があります。
今ある作業を自動化する。
処理方法を簡素化する。
データの受け渡し方法を変更する。
そして、必要のない作業そのものをなくす。
どれが正解なのかは、業務の内容や制約によって異なります。
今回のように、元データの形式をすぐに変更できない場合には、AIを使って効率よく加工することにも意味があります。
しかし、長期的に同じ作業を繰り返すのであれば、そもそものデータ構造や業務フローを見直すべきでしょう。
AI時代のエンジニアに求められること
今回の仕事で、私がAIに期待したのは、難しいプログラムを作る能力ではありませんでした。
目の前の問題を効率よく解決するための方法を考えてもらうことです。
Excelの関数で済むなら、Excelの関数を使う。
PowerShellが適していれば、PowerShellを使う。
AIによる文章処理や判断が必要なら、AIを活用する。
それぞれの技術には、得意なことと不得意なことがあります。
だからこそ、特定の技術にこだわらず、目的に合った方法を選ぶことが大切だと思っています。
AIが進化することで、プログラムを書く負担は確かに小さくなりました。
しかし、そもそも何を実現したいのか、どの方法が合理的なのかを判断することは、依然として重要です。
私は、これからのエンジニアには、そうした判断力がますます求められるのではないかと考えています。
最後に:小さなAI活用から、業務全体を見直す
今回の仕事は、Excelの文字列を分割し、表記を整え、マスタと照合するという、ごく身近な作業でした。
AIを使ったことで、加工方法を調べたり、試行錯誤したりする時間を減らせました。
大がかりなシステムを作らなくても、AIは十分に役立ちます。
一方で、その作業がなぜ必要になったのかを考えると、業務全体の設計にも目が向きます。
最初からゴールが共有されていれば、もっと簡単に済んだのではないか。
データを作る側と利用する側が、もう少し情報を共有していれば、余計な作業を減らせたのではないか。
そうした疑問です。
AIは、今ある仕事を効率化する強力な道具です。
しかし、本当に大切なのは、AIを使うこと自体ではありません。
何のためにその仕事をしているのかを理解し、最も合理的な方法を選ぶことです。
AIで仕事を速くすることも大切ですが、そもそも速くする必要のない仕事を減らすことは、もっと大切なのかもしれません。
そして、そうしたことを考えるのも、エンジニアの仕事だと思っています。