アラフィフの素人VBAリーマンが、次に取り組むものは（２）

#はじめに

前回に続いて、一般企業でちょっとマクロが使えるという、
いわゆる「VBAリーマン」の今後の行く末を考えるという
内容であるが・・・
https://qiita.com/motochan1969/items/8f00da6ef352afb46d9d

#最近の振りかえり

ある程度、独学だけで勉強を勧めつつ、
決して社内でITエンジニアとして仕事ができる環境がない前提において、
どうやって、自分の職場の環境を変えていくのか？
そこがテーマである。

自分がITエンジニアと大きく環境が異なると思っているのは、
普段の業務が日本語でのかな入力（たまに中国語も含める）
などとやっていると、まずキーボード入力とかパソコンに向かい合う意味付けと言うものが
いわゆるIT企業人と比べて全く異なっている。


おそらくIT企業においては、コードを書くことがコミュニケーションの大半になってくるのだろうが、
まず日本語の、「かな入力」しか体に馴染んでいないことが、
大問題である。

最近、PYTHON関係の動画をよく見るのであるが、
だいたい海外のITプログラマは、英語を主体とした言語環境にあって、
まずプログラム言語＝英語がベースになってくる。

そこで重要なのが、英語を話せるような感覚で、
キーボードをポチポチできているのか？

そのことが、今後のプログラマ人生において重要な位置づけであること痛感する。
（それこそ、最近は日本語の文章やメールでさえも、音声チャットなどで
入力することが、合理的な場合もあるが、同じように
プログラムを音声入力で出来る時代になった場合に、
まず日本人は、英語を話せないという壁で躓いてしまうのではないかと思う）


#これから目指す方向

まず英語を勉強して、英語の文章を目にするようにする。
プログラム言語の解読において、なるべく英語のドキュメントを参照にする。
キーボードの入力に際しても、ブラインドタッチをする際に、
これまでは「日本語かな入力」を多用しているが、
これからは、ブラインドタッチの英語入力に力を入れる。
（タイピングするという行為は、言語の学習において、正確性という意味で、
非常に練習になると考えられる。）

##キーボード練習

いろいろソフトがあるが、まずワープロ等の文書作成の業界人ではない限り
プログラマは、プログラマに特化した、VISUALSTUDIOなどの
ＩＤＥツールを多用して、これらの支援を得るべきである。

しかしながら、ＧＵＩ環境が適しているのかと言えば、
やはりテキストーベースでSHELLを触れる方が、
いいに決まっているだろう。

##言語

さてプログラム言語であるが、現在のところ大きく大別すると、
デスクトップアプリにするのか？
ＷＥＢアプリにするのか？

ここが大きく帰路に立つ部分である。

業務で使うアプリなんていうのは、インストールでカチッとしたものを
配布するのがいいのか？　
それともブラウザ上に、あたかもサービスを受ける人が居るように
依頼業務にしてしまうのか？
ここが悩みどころであるが。

しかしながら、最近得られた一つの結論としては、
デスクトップアプリの開発は、かなりハードルが高くて、
これからのＩＴエンジニアは、やはりWEBベースの仕事が大半になってくるのではないかと
思っている。

まず、デスクトップエンジニアになろうとするのであれば、
特定の機種（windows，LINUX、MAC）などの
ハードウェアの知識が必要になってくる。

ここでのネックは、マイクロソフト、ＡＰＰＬＥなどの
メーカーと密接な関係にあるということである。

例えば、いま大半のサラリーマンが、仕事をしている環境と言うのは
マイクロソフト（ＷＩＮＤＯＷＳ）の一択であって、
大半がOFFICE製品と、それに親和性のあるVBA一択と言うのが
現状であるから・・・

これがいつの時代に、OFFICE製品から脱却するのか？
それはおそらく、マイクロソフトとともに人生を歩むのみで、
いつになったら、VBAはこの世の中から無くなるのか？
（そういう先の読めない世界になってくる）

#目的を明確化する

最近、PYTHONを使ったWEBアプリ開発をかなりやっているが、
PYTHONが優れていると思う理由は、（他の言語も同じかもしれないが)
ソースが無料で簡単に入手できる。

これに尽きるのではないかと思っている。

もちろん、フロントエンドなどの開発でも、
JSのライブラリなど、世の中には優れたものが
ゴロゴロと転がっている。

しかしながら、これらのフレームワークは、それこそ山ほどあり、
一つ一つを極めていくには、いったい何時になったら
すべてをクリアできるのかは、まったく見えてこない。

#所詮はフォルダとソースの組み合わせ

VBAリーマンの大半は、構造化プログラマと言っても過言ではない。
しかしながら、世の中のプログラム言語と言うのは、
だいたいにおいて、フォルダとその組み合わせで成り立っており、
それこそ、モジュールやクラス単位で、開発が進められている。

それぞれのモジュールをテストして、部品の一つ一つを完成させ
それを組み立てていくことで、最終的な巨大なアプリケーションは完成している。

ＷＥＢのページもしかり、デスクトップアプリもしかりである。

さて、我々ＶＢＡリーマンが、そこまでのことを望まれているかと言えば、
実はそんなことはなくて、マクロで合理化できるというのは
あくまで手でポチポチしている作業を、自動でさくっとというのが
望まれる範囲である。

なので、そういう業務を仕事で展開しようとすると、
へたにデスクトップアプリなどを作成しようとはせず、
フロントエンドで、仕事の依頼者側の中身を示し、
あとはバックエンドで、受付してサーバー内部で
こちょこちょして、返信するという行為につきるのである。


#ＶＢＡへの組み込み

ＶＢＡのベースとなるには、EXCELといったアプリケーションがベースになってくる。
しかしながら、ブラウザを中心とする業務委託をベースにすれば、
ブラウザ上に、所望のEXCELファイルを並べておいて、もしくはダウンロードできる状態にしておいて、
それを使う側が、適当に処理を委託して、帰ってきたものを受け取るというのが
比較的、ＥＸＣＥＬ業務との親和性があってよいと考える。

下手にＶＢＡをこねて、ＥＸＣＥＬ内部に埋め込んだとしても、
極めて保守性が低下してしまうだけであるので

#バックエンドの構築

さてサーバー側での処理をさせるとなると、当然のことながら課題になってくるのは
どこにサーバーを置いたらいいのか？
ということであるが、これは適当にＬＡＮ上にＰＣ１台を置いて
そいつのＩＰアドレス＋ポートを解放してやれば済むだけである。

公開範囲を広げてあげたいのであれば、社内セキュリティのある
ＡＷＳクラウド等を借りるということになる。

最近はＷＩＮＤＯＷＳやＬＩＮＵＸのＯＳが乗った、
ＮＡＳなどというのも存在するので、それをサーバー代わりに使うのもアリだ。

しかしながら、最近はＡＷＳレンタルを社内ＩＴ部門に相談するのが
ベストという結論になった。

このときＡＷＳはWINDOWSにするのか？　LINUXにするのか？
という選択は悩むが、おそらくローカルPCで開発するのであれば
WINDOWSにならざる得ない・・・

#言語について

再度、バックエンド側の言語について、話を戻すが、
ファイル等の処理の基準が、あくまで、PDFや、OFFICE製品ということであれば、
ライブラリが豊富な言語に一択される。

以降が自分の最終的な選択であるが、

PYTHON
C#（ASP.NET）

上記の２択がVBAを卒業して、次のステップとして最有力と考える。

これに付随する、JavaScript,HTML,CSSなどは、
もちろん、ある程度の痛みを覚悟して、
経験を積む必要があるが・・・

さて、ASP.NETを選択した時点で、かなりややこしい
マイクロソフトとの付き合いが始まるのは
覚悟せざる得ない・・・

XAMLなどの、余計な知識が、HTML以外に必要になるのは
本当に避けたいところであるが・・・

自分がマイクロソフトを押すのは、
やはりWINDOWSを知るというのが前提にあるので、
LINUX,MACしかやらない人間であれば、
それは全く必要がない
（しかしながら、世の中のＰＣがWINDOWSが流通している限り
これに向かわないことは出来ない訳で・・・
はやくOFFICE製品が、CHOROME-PCに置き換わる時代になってもらいたい
ところであるが。。。）


#当面の目標

かなり個人的な話になってくるが、以下を今後の取り組みとする。

１）DJANGOフレームワークで、WEBサービスを構築する
　DJANGOを使うことで、MODEL,VIEWといった概念と、フォルダの構成などの知識を得る。
　またPYTHONを使うことで、テストやドキュメントの作成など、
　おおよそのITエンジニアとして得るべき知識を得ることができる。

２）C#(ASP.NET.CORE)の学習
　c#という言語は、ほんとうに良く出来ている言語だと思う。
　しかしながら、マイクロソフトのVISUALSTUDIOというIDEは本当に癖のあるアプリだ。
　とくにデスクトップアプリのフレームワークが、WINDOWSFORM、WPFなど、
　いろいろ賛否両論のあるものを習得せねばならない。

　ASP.NETでさえ、ASP.NET.COREなどもあったりして、
　マイクロソフトとともに、オープンソースに向き合うトレンドに
　付き合っていかねばならない。

３）当面は以下は手を出さない

　NODE.JS　多くのライブラリや、リポジトリなど、たくさん出回っている。
　もちろんフロント、バックの言語が共通化するなどで、これからの時代にマッチしているのかもしれない
　
　RUBY,PHP　これも時代に逆行するので、いまは時間がもったいないので着手しない

　c,c++　これはWIN32APIとの接続性は良い。ただしDLL開発などにハマると
　どんどんマニアックな方向性になってしまう。
　
　どうしてもVBAでやりたくなったら、それこそ.NETフレームワークに置き換えた
デスクトップアプリ化になるが、そのときはC#もしくはVBをガッツリやらなければならない。
（しかしながら、こういう業務は、後になってもメンテナンスができないなど課題が残るので、
なるべくは、サービス自体をＷＥＢアプリ化できる範囲にとどめた方が無難と考える）