#EXCEL-VBAに飽き足らない
会社でもEXCELを使った仕事は今更ながら多すぎる
そこでVBAを覚えて、いろいろプログラミングの模索をしているのであるが・・・
実際のところ、そろそろ限界である。
最近はUIPATHなどの、RPAツールがVBAの次に使われるものと
言われているが・・・
#Win32Api
さてVBAを拡張しようと思ったら、まっさきに取り組むのはDLL開発である。
DLLというのは、コンパイル済みのEXEファイルで、
そこに関数などを書いておけば、これをVBAから使うことができる。
さて仕事で、使うとなったら、どんな時が考えられるだろう?
・画像処理
・AI処理
・RPA処理(いわゆるEXCELアプリケーションの外側の開発)
#勉強法
そんなわけで、いきなりプログラム開発環境が必要になるのであるが、
なにせ最新のVISUAL STUDIO 2019をインストールしても、
そもそもVBA拡張を素人がやっている時代は、もう10年も前である。
ゆえに、最新のIDEを入れても、そもそもチンプンカンプンなのである。
それに、最近のトレンドは、WINDOWSよりも、WEBの方にシフトしているので、
そもそも時代錯誤もはなはだしいのである。
#オープンソースの活用
画像処理系で言えば、OPENCVを使いこなすことが、一番良い。
しかしながら、OPENCVはc++、PYTHONを正式にカバーしているが、
そうなると、入りやすい順番で言えば、PYTHON一択になってしまう。
この時に困るのが、WINDOWSでPYTHONを動かす環境を
作る必要がある。
特に、仕事での使用だと、素人が作ったアプリをわざわざPYTHONを入れて
使ってもらうことは、ハードルが高すぎる。
その選択としては、WEBアプリにしてしまって、PYTHON処理を
隠蔽してしまうことが手っ取り早い。
なので、それが選択できるような状況であれば、そこそこPYTHONを使えばいいだろう。
#WEBアプリ開発
さて、気軽にOPENCVや、AI開発と言ったことに取り組むのは楽だ。
しかしながら、いざアプリとしてサービス構築するとなると、
この先には、地獄の覚悟が必要である。
まずWEBを立ち上げるのに、PYTHYONでサーバーを書く必要がある。
そのためには、FLASKやDJANGOと言ったフレークワークの勉強が必要である。
その後に、クライアント側を構築するにあたっては、
HTML,CSS,JAVASCRIPT(Jクエリー)などと言う
いまどきの言語を総ざらいする必要がある。
(正直言って、VBAからスタートした素人では、少なくとも3か月はかかるだろう)
#c++
そこで、いまさらながら舞い戻ってくるのであるが、
デスクトップアプリの方であるが、これがまたまた難解である。
何故かというと、VISUAL STUDIOというツールを完璧に使いこなす必要がある。
このソフトが一筋縄に行かないのは、マイクロソフトのWINDOWS技術を
完全に理解しないとならない。
それこそc++と言えば、WEB技術が一般になる前の言語なので、
いわゆるフレームワークが古い。
最近は、.NETというフレームワークが一般的であるが、
.NETはc#、VBしかサポートしていないからだ・・・
それにEXCELにはバージョンがあって、32bitと64bitで
せっかく作ったライブラリが動かなくなったりして、
いわゆる最新技術のフレームワークで、そもそもコンセプトの古い
EXCEL,VBAをマッチさせるのは、至難の業になってくる。
#取り組むべきもの
さて、こういう風につらつら、書いてきたが、
VBAの次に取り組むものとしては、やはり現時点では、
OPENCVをc++で使いこなすのが、
最優先になってくる。
#c#というもの
さて、c++の前に、C#は一体なんぞや?
という疑問が出てくる。
そもそも、VBAを知っている人間からすれば、実はC#ではなく
VBの方が、入りやすいのではないかと思ってしまう。
しかしながら、世の中の流れなのか、はっきり言って、VB.NETでの
入門は、すごく危険である。
とにかく実行速度が、遅くなるらしくて、.NETの技術を
使いこなすのであれば、その経過でVBを触るのもありである。
しかしながら、最終的にはC#を触ることが、一つの選択にはなってくる。
#OPENCVSHARP
一応C++の関数を、C#でも使えるようにする、ライブラリが世の中には存在する。
しかしながら、そもそもc++でのコンパイラも使いこなせないものが
C#に飛びつくのは、かなり危険である。
C#というのは、そもそもJAVAとよく似た文法であって、
そこの世の中の流れを、マイクロソフトが対抗したものだ。
なので、C#が完全に使えるようになってくると、やっとエンジニアとしては
飯が食える状態になったと言えるのではないか。
(しかしながら、世の中と30年以上のギャップを埋めるには、
相当の代償を払わないと、いまの現役エンジニアにはかなわないだろう)
#総まとめ
アラフィフのオッサンエンジニアが、いまから頑張ってできることは
この長い時代の技術の進化を、頑張れば数年でワープできることだ。
だから、昔の書物を入手して、最新の技術から俯瞰して、
その技術を学びなおすことが良いと思う。
これはスマホ一色の現代人が、そもそもスマホが出てくる前の
時代をタイムマシンに乗ってさかのぼっていくようなものだ。
#先人の知恵を借りるという事
いつの時代にも、学ぶべきものはある。
先人の知恵と言うものは、つねに馬鹿にはならないし、
現代人だからと言って、先人が歩いた道を知らずに、
どうやって道を切り開いてきたかの、そのエッセンスを知らずには、
この先の道を進むことはできないである。
#吉村昭の小説「漂流」
私の大好きな小説に、吉村昭の「漂流」と言うのがある。
この中で出てくる主人公は、江戸時代の船乗りで、
無人島に流れ着き、たった一人で、その困難を乗り越えて、
最終的には何十年もかけて、日本に帰ってくるという偉業を無しとげている。
もしも、仮に今の自分が、その難破船に乗った一員だったとして、
ケータイ電話も、食料も何にも持たずに乗船していたら、
いくら現代に生きて、いろんな知識を持っていたとして、
この状況で、生き抜く知恵を出すことはできない。
要するに現代人は、現代だから存在できるのであって、
江戸時代に行ってしまえば、おそらく当時の人よりは
劣っていて、時代の差と言うものは、何の優位性もないという事である。
昔の人の知恵を馬鹿にすることはできない。
つまり、今を学ぶということは、つまりそれは過去を知る。
そういうことである。
#つづき
https://qiita.com/EasyCording/items/bbfe363abf1eed542f98