Excel VBA,python,Google Apps Script(javascript)と勉強してみて
仕事の業務としては4年ほど前からExcel VBAを使用し、ちょこちょこ定型化した作業を自動化してきました。
去年の夏からPythonを触り始め、ようやくflaskにてWEBアプリ(電話帳)を公開することができました。
そしてこのお盆からJavascriptをGoogle Apps Script上で本格的に勉強しはじめました。
そんな僕が途中経過として各言語の所感を簡単に書いていきます。
長所:
- 簡単…シート上でのみの運用となるのでオブジェクトはブック・セル・シートの3つ以外はほとんど使わないので、あんまり考えなくてもマクロが組めます。
- 生産性が非常に高い...既存のエクセルで行っている業務であればなんでも対象となるため、おそらく事務仕事との親和性、生産性の向上に関しては一番高いです。
- 簡潔なコードでOK...今見直してもコードが簡単、すぐわかる
- デザインするのが簡単...セルに色つけたりセルの大きさを変更したりが非常に簡単かつ直感的に行うことが出来る。もっと込んだことをしたかったらフォームという手段も。
- みんなが使い方を知っている…これは良し悪しかもしれないけど
短所:
- 自由度が低い...やりたいことがエクセル以外になったとき、途端に難しくなります。
- 型付けが面倒くさい...静的型付けが必要なので、いちいちDimとかSetとかしないといけないです。正直メンドイ
- 開発環境が古臭い...VBAのエディタは必要十分なのですが、なんとなく使いづらいというかインターフェースが古臭いです。
総括としては事務で使うなら必要十分だと思いました。正直これだけでOKまである
てか今見直して思ったんですがjavascriptより随分と簡単。。
長所:
- コードが平易…やっぱこれにつきる。面倒なデリミタもなんもない。ただただやりたいことを完結に書くことが出来る
- ライブラリのインポートが簡単…pipしてimportするだけ。しかもそれもあんまり多くない。
- 奥が深い…機械学習・WEBアプリなどはここの得意分野
短所:
Flaskを使ってWEBアプリ作ったり、scrapy使ってクローラ作ったり、やりたいことは一通り出来るが、覚えることの多さに毎回辟易する。
【2020/03/30追記:】
簡単に扱えるが機械学習関連以外での出番が少なくなっている気がした。
長所:
- 現代の基幹技術…WEBだけでなくこれからの技術はnode.jsも含めて全部ここから出発してる。
- 出来ることの多さ…pythonに輪をかけて出来ることが多い。
短所:
- コードが長い…関数の定義がpython:def ExcelVBA:subと3文字に対して驚きのfunctionの7文字簡潔なコードを書かせる気はそもそもない。閉じカッコ{}もデリミタ;も長いオブジェクト名(getElementByIdとか)もすべてが災いしてかPythonやVBAで出来ることを実装しようとすると文字量は2,3割くらいは増える
【2018/05/14追記:】ES6においてアロー関数でfunctionすら要らなくなりました
- クラスがない…ちょっと面倒
【2018/05/14追記:】ES6においてclass実装されました
- ライブラリのインポートの仕方がよくわからない...これは後からの勉強か
【2018/05/14追記:】ES6においてimport実装されました
クラスもモジュールもない言語なのに標準というなんとも不思議な感じ。
【2018/05/14追記:】クラスもモジュールもあります。
【2020/03/30追記:】
- Reactのお陰でgetElementByIdなんてしなくてもDOM操作できるようになりました。
- Firestoreのお陰でSQLなんて覚えなくてもいいみたいです。Tableに合ったState作って保存。
総括:
どの言語を使うかにもよるかとは思うんですが、Javascriptで即時関数を学んで初めてpythonのラムダ式の意味がわかったり、名前空間の理解の大切さをExcel VBAで学んだり、pythonを学んで初めてjavascriptのvar の意味がわかったりと言語ごとにわかりやすい部分や難解な部分がある。全部とは言わないが複数の言語は並行して学習すべきだと思った。
【2018/05/14追記:】javascriptはES6においてほぼ全ての欠点がなくなりました。ただしGASでの開発となると特殊な環境(babel+clasp)が必要になります。
【2020/03/30追記:】GAS V8の導入によりGASで開発するときもES6な記法でOKになりました。結果としてjavascript最強です。機械学習しない限りはjavascriptだけできるようになってればエンジニアじゃない限りはなんだってできます。スゴイ。