以前にニュースなどで以下の「雇用の未来—コンピューター化によって仕事は失われるのか(THE FUTURE OF EMPLOYMENT: HOW SUSCEPTIBLE ARE JOBS TO COMPUTERISATION?)」という論文が話題になった時がありました。
THE FUTURE OF EMPLOYMENT: HOW SUSCEPTIBLE ARE JOBS TO COMPUTERISATION?
オックスフォード大学でAI(人工知能)などの研究を行うオズボーン準教授が2014年に発表した論文とのこと。この論文はAIによって将来的に自動化されるリスクの高さを、702の職業について分析したものです。
このリストの中から10年後に90%の確率で「消える職業」「なくなる仕事」として会計や人事、保険などの「事務」の仕事の多くが入っており、それらも話題になったと思います。
最初にこのニュースを見た時の自分の印象としては、非常に懐疑的でした。
「さすがに『なくなる』というのは言い過ぎなんじゃないか。『なくなる』って『100%』とも言い換えられるし、それはさすがに難しいんじゃないか」と。
しかし最近になって、この論文の信憑性というのが徐々に高まってきていると感じるようになってきました。今回は、将来的に会計やその他の事務的な仕事がなくなるかどうかについて考えたことを書いていってみます。
現在の技術でも「なくそう」と思えば、おそらくほぼなくせる
冒頭部分で引用した論文の内容がが出されたのは2014年であり、そこから10年後というのは2024年になります。
これはあくまで自分の個人的な感覚になるんですが、会計やその他事務的な仕事の多くは、別に10年20年経ったらとかではなくて現在の技術でもなくそうと思えばほとんどなくせるんじゃないかと思います。
なぜそこまで言えるかというと、その理由はExcelなどに標準で搭載されている「VBA」とその周辺技術の進歩にあります。自分はこのブログでは「ExcelVBA」を勉強したり、それを実際に業務で使ってみてどうだったかといったことをいくつか書いていきました。
そこからある程度専門的にツールをつくる仕事もするようになって気づいた、もしくは驚いたのは、VBAの使える範囲やその可能性といった部分です。
多くの人はVBAのイメージは「Excel」であり、ExcelのVBAの使える範囲はExcel内だけだと思っている人が多いのではないでしょうか。以前の自分がまさにそのようなイメージでした。
しかし、以下の過去記事でも書いたように、自分でちゃんと勉強しながら実際の業務で使ってみることで、その有用性や使える範囲の広さというのが少しずつ理解できるようになっていきました。
では、具体的にどういった手法で「ほぼなくせる」と言えるのかというと、おおまかに以下のような感じになります。
- セル操作やピボットテーブルなどのExcel内の操作
- ファイルシステムオブジェクトを利用したExcel外のファイル間、フォルダ間の操作
- OLEやAPIを利用した外部アプリケーションやWebの操作
- クラスモジュールを利用したより柔軟なプログラミング
これらの手法を上手く駆使できれば、別に10年も待たなくても企業の末端の事務的な仕事のほとんどは自動化できる思います。
では上記の手法について簡単に説明していってみます。
セル操作やピボットテーブルなどのExcel内の操作
先程も書きましたが、プログラミング言語を全然勉強したことのない人が「VBA」と聞いたら、その使える範囲はExcel内だけであり、そのレベルというのもあまりイメージできないのではないでしょうか。
例えばセルの値を自動で操作できると言われたら、「あぁ、それぐらいはできそうだよね」と思ってもらえるでのはないでしょうか。しかしもっと高度なことはどれぐらいできるのか、ということはなかなかイメージしづらいと思います。
一般的にExcel内でできる操作はほとんどVBAでできると言われています。実際にExcel内でできる動作を全て確認したわけではないのでこの部分はなんとも言えないのですが、あながち間違っていないと思います。
というのも、ExcelVBAを勉強したからこそ今まで気づかなかったExcelの機能に気づいた部分も少なくなかったからです。
例えばExcelVBA関連の本で『できる逆引き Excel VBAを極める 勝ちワザ700 2010/2007/2003/2002対応 』というのがあります。要はExcelVBAの辞書みたいなものなのですが、最初こういった本があることを知ったときは本当に驚きました。
もちろん機能ごとのExcelVBAのコードの豊富さも驚いたのですが、それと同時にExcelで使える機能の多さにも驚きました。本書はだいたい900ページぐらいあるんですが、900ページもあるということはそれに対応するコードの分だけ機能もあると言えます。
VBAは、例えばセルにある文字列を太くするだけではなくて次のようなことも普通に出来ます。
- 条件付書式の設定
- 表内へのオートフィルターの設定やさらに細かい条件の設定
- グラフや図形の操作
- ピボットテーブルの作成やフィールドの変更
これらに加えて指定した条件での「条件分岐」や「繰り返し処理」、さらには「エラー処理」など、一般的に考えつくことはだいたいできると思って問題ないと思います。
けれどもここまで書いたことは、基本的には「Excel内」の処理になります。これだけでは、事務的な仕事をなくせるとまでは言えないのではないでしょうか。
いいえ、ExcelVBAが使える範囲はExcel内だけではありません。
ファイルシステムオブジェクトを利用したExcel外のファイル間、フォルダ間の操作
VBAにおける「ファイルシステムオブジェクト」というものについて『VBAエキスパート公式テキスト Access VBA スタンダード』には次のように書かれています。
P.155
FileSystemObjectの利用
「FileSystemObject(ファイルシステムオブジェクト)」とは、「Microsoft Scripting Runtime タイプライブラリ(Scrrun.dll)」ファイルに格納された、ドライブやフォルダ、ファイルなどを操作するためのオブジェクトです。
なんだか難しいことが書いてありますが、要はFileSystemObjectを使うとExcel内だけではなくて、ドライブやデスクトップ上にあるフォルダやファイルも操作できるようになる、ということです。
これを使うためのポイントは「パス」(コンピュータ内でファイルがどこにあるかの住所を表す「C:\Users\Documents\AAA」といった文字列)を上手く使うことでしょう。
例えばVBAのコードで「A」というファイルをBフォルダからCフォルダに移し変えたりコピーしたりすることも自動化できるということです。他にもフォルダ・ファイルの作成や削除、存在確認もできます。
VBAにはこういったやり方もあると初めて知ったときは本当に驚きました。そもそもVBAとか自動化という自分の中のイメージが「Excel内」にしかなかったからです。
この手法をより実務的に使えるようにするには、例えば条件分岐と特定の文字列から「A」ファイルは「A」フォルダ、「B」ファイルは「B」フォルダなど、やり方によってはもっと全然用途が広げられますし、操作できる範囲はエクセルファイルだけではありません。
多くの人は、「確かにExcel外でもVBAを使ってファイルやフォルダを操作できるのは凄いことだし便利だということはわかったけど、業務ではExcel以外のアプリケーションも使うこともあるし、そういった部分の自動化は難しいんじゃないか」といったことを考えられるかもしれません。
果たしてそうでしょうか。いいえ、VBAが使える範囲は、Excel内やドライブ・フォルダ・ファイル間だけではありません。
OLEやAPIを利用した外部アプリケーションやWebの操作
VBAを使うと、Microsoftのアプリケーションやそれ以外のアプリケーションも操作できます。この点については以下の過去記事で触れました。
自分がExcelVBAを勉強して一番驚いたのがこの部分です。記事の内容としては、VBAには「OLEオートメーション」という機能があり、Excelから別のアプリケーションを操作できるといったものです。
OLEとは「Object Linking and Embedding」の略称で、例えばExcelからWord、Access、PowerPoint、InternetExplorerなどが操作できるということです。もう少し詳しい事は上記の過去記事を見ていただければと思います。
VBAにはOLEオートメーション以外にも「API」という機能があり、『VBAエキスパート公式テキスト Excel VBA スタンダード』には次のように書かれています。
P.191
APIの概念
APIとはApplicaition Programming Interfaceの略称です。APIは、Windowsなどが持っている機能のうち、外部に公開している関数などで、VBAなど他のプログラムから利用できます。
一般的に、APIとはWindowsのAPIを差しますが、機能をAPIとして公開できるのはWindowsに限りません。そのほかのプログラムでも、機能の一部をAPIとして公開しているものがあります。そのように、外部に公開している機能や関数などを「ライブラリ」と呼びます。
要は、APIを使えるようになればExcelなどのOfficesoftだけではできなかったことができるようになる、ということです。Excelで使えるAPIの機能として主なものに「Win32API」といったものがあります。
この部分の関連書籍に『大村あつし の Excel VBA Win64/32 APIプログラミング』があります。内容的に自分の今までの知識と経験ではここで説明するのは難しいと感じたので、Win32APIをもっと知りたいという方はこの本を参照していただけると良いかもしれません。
Excelを使っていてAPIというと、WindowsのAPIを思い浮かべる人が多いかもしれません。けれどもAPIはそれだけではなく「WebAPI」というものも存在します。
プログラミングとかその周辺領域を勉強していると、自分の知らない所で実はいろんな技術が存在していたんだ、ということに気づくことができて非常におもしろいです。
APIとはApplication Programming Interfaceの略で、WebAPIとは、プログラミングからWebサービスを操作するための方法という意味になります。
例えばExcelを使うような仕事で役立つWebAPIとしては、郵便番号から住所を検索できるといった郵便番号APIといったものもあります。
実際にExcel上で使える形にするには、VBAでのプログラミングが必要になるのですが、そのやり方はインターネットを検索するとたくさん出てくるので、そちらを参照していただければと思います。
他にも「駅すぱあと」でもAPIを公開しています。
これを上手く利用すれば交通費の計算や経費精算も自動化できて仕事も楽になるのではないでしょうか。
これもまた驚いたことのひとつなのですが、実はWebAPIというのは以下のリンクのように非常にたくさんあります。これらのAPIから仕事に役立ちそうなものを選んで上手くVBAから利用できれば、業務の効率化も一層進むのではないでしょうか。
クラスモジュールを利用したより柔軟なプログラミング
ここまでVBAが使える範囲についていろいろ書いてきましたが、難易度的には自分の感覚だと以下のような感じです。
優しい
- Excel内の処理
- ファイル間・フォルダ間の処理
- OLEやAPIを利用した外部アプリケーションの処理
難しい
上の方ほどコードの記述方法や考え方的に優しくて、下の方ほど難しいです。それで、自分がここまでVBAを勉強してきて一番難しいと感じるのは、この「クラスモジュール」を利用した処理です。
一部オブジェクト指向の概念がはいっているとも言われており、コードの記述方法からして上記3つの手法とは一線を画している感じがします。しかしこれが使えるようになると、業務の効率化もかなり進むと思います。
このクラスモジュールについてはいろいろと勉強はしてきたのですが、今の自分ではその機能や使い方、具体的な有用性を説明するのは難しいです。ただ、習得すればVBAの使える範囲というのは大きく広がると思います。
もうひとつクラスモジュールが絡んだ手法として有用性が高いと思ったのは「WithEvents」キーワードを使った「イベント処理」です。
Excelで使えるVBAにおいて通常使えるイベントというのは決まっています。例えばWorkSheetのChangeイベントを利用して特定のシートを開いた時にAの処理をするとか、WorksheetのBeforeDoubleClickイベントを利用して特定のセルをダブルクリックした時にBの処理をするといった感じです。
VBAで使えるイベントというのは基本的に決まったものしか使えないのですが、それ以外でも業務上このタイミングでこの処理ができるようにした、といった場合もあります。そういった時に新たにイベントを作れるやり方がVBAにはあります。
この手法はExcelだけに限らず、ExcelからOutlookを利用する時など異なるアプリケーション間でもできます。VBAにはこういった手法があるということを知ったときはこれもまた本当に驚きました。
ただ、EventキーワードやRaiseEventキーワード、WithEventsキーワードを使ったり、クラスモジュールの使い方も知っておく必要があります。
この部分の詳しい内容については、『入門レベルでは決して足りない実務に必須のスキルとは ExcelVBA 実戦のための技術』に書かれているので、ExcelVBAを高いレベルで使いこなしたいという方には非常に役立つと思います。
VBAのコードの指示が行き届かない領域という課題
ここまで書いてきたことを使いこなせれば業務はほとんど自動化できるかのように思いますが、必ずしも上手くはいかない部分もあるかもしれません。
VBAを使うようになってから気づいたのですが、業務にはVBAのコードの指示が行き届かない領域があるようです。それは例えば自社システムなどです。
自社システムとは、自分がいる会社がある一定の業務領域のために自社で開発した自社専用のシステムのことです。自社システムには限らないと思うのですが、VBAやその他の手法を使ったプログラミングでもどうしてもネックになってくる時があると思います。
これは具体的に技術的にどうなっているかというのはよくわかりません。しかし、セキュリティの関係上どうしても自動化が難しいのかもしれませんが、VBAのコードの指示が行き届かない領域があるようです。例えばExcelVBAでIEを操作する技術が世の中には存在します。
ExcelVBAからIE(Internet Explorer)のページのタグなどの内部構造を利用することによって、特定の文字列の抽出や特定のボタンを押して次のページに遷移するといったことができます。
本来であれば、Webページであればそういったことができるのですが、Webページ上でも自社システムが絡んでくるとVBAのコードが受け付けてもらえないといったこともあるようです。
この問題の解決策としては、もしかしたらSendkeysなどを利用したGUI上の操作が必要かもしれません。
例えばエクセルであれば「A」シートの「A1セル」といったデジタル的具体的な指示ではなくて、「だいたいこの辺をクリックする」みたいなアナログ的指示が必要になってくるかもしれないということです。
なぜ昨今RPAの文字をよく目にするようになったのかというと、こういった要素もあるのかもしれないと感じました。VBAやプログラミングではどうしてできない部分も他のツールを利用することによって解決していければ、業務の自動化も大きく進んでいくのではないでしょうか。
まとめ
ここまで書いてきたことはVBAのほんの一部です。プログラミングを勉強したことがない人がVBAとかプログラミングを勉強するようになったら、そのもたらす効果や結果に本当に驚かれると思います。
別にプログラミング言語や、自動化できるのはVBAだけではありません。他にもプログラミング言語はたくさんありますし、やり方はたくさんあるでしょう。
VBAに限らず、いくつかのプログラミング言語や手法を駆使すれば、業務の自動化の幅も大きく広がっていくと思います。
現在、世の中の流れとしては少子高齢化によって人手不足が進んでいると同時に人工知能の進歩によって職が奪われるのではないか、という不安を抱いている人もいるようです。
自分の考えとしては、「気付き」と「選択」が大事だと思っています。「こういった世界もある」ということに早く気づけた方が良いでしょうし、その世界を「選択」できるかどうかもより良い人生にできるかどうかで重要な要素だと思います。
VBAを勉強して業務で実際に使うようになってきたからこそ気づくようになったのですが、自分の気づかないところで「こんなこともできる」「あんなこともできる」といった技術が、実は結構前から存在していたことに非常に驚きました。
というか、自分がいかに「IT」というものについて知らなかったかということに驚かされました。ですから、プログラミング言語を勉強したことがない、使ったことがないという人は早く勉強してみるべきだと思っています。その効果の及ぶ範囲やもたらされる効果、その周辺領域の技術の進歩というものに驚くでしょうから。





















コメント