ハローエンジニア!
前回はこちらの記事でVBAの案件にはどういったものがあるのかについて現役エンジニアであるけーいちさんからお話を聞かせていただきました。
今回はさらに、
「VBAを学習することはプログラミングを学習することと比べて難易度は下がるのか?」
ということについて前回に引き続き現役エンジニアであり、サイトメンバーであるけーいちさん、
それに加えて今回はナガヤンにも参加してもらって、お二人からお話を聞かせていただこうと思います!
VBAがそもそも何なのか?なぜ今回の話し合いに至ったのかについての経緯は前回の記事↑を参考にしていただけたらと思います。
※VBAも正確にはプログラミング言語なのですが、ここでは曖昧さを回避するためにあえて別のものとして扱っています。
せきぞー
まず、単刀直入にプログラミングが向いていないと思った人がVBAを代わりに学んでいくことについてどう思いますか?
ナガヤン
そうですねぇ、プログラミングをやってきた人間からすると、そこまで良い選択肢とは思えないんですよねぇ。
事務職系の処理言語なので…悪くはないのかなぁ…。う〜ん。
独立して専業にするっていうよりかは、現職に就きながら学んで紹介で転職を狙ったりすれば待遇は良くなりそうだなといった印象はありますね。
せきぞー
そうなんですか…。ほかのサイトメンバーからは「下手にSESで辛い思いするよりはVBAを学んで事務職やった方が幸せな気がします(byなかしー)」といった声もありましたが。
ナガヤン
それもそうなんだけど、「プログラマに向いてない人がVBAならできるのか?」という点が自分の中では未知数なんですよね。
VBAでもプログラミングの基本的な考え方というものが必要になってくるので。
前回取り上げられたブロガーさんの記事の中でも”VBAはともかく、エクセルを学ぶのは楽しい”ということが書かれていましたよね。
せきぞー
学習するハードルの高さでいったらVBAの方がプログラミングよりもまだ低いのかなといった印象が個人的にはあったんですが、実際のところどうなんでしょう??
けーいち
それに関しては学習する人の現職であったり、その界隈というものに完全に依存する気がするので学習の難易度で判断するのはあまりおすすめできないですね。
もともとExcel入力の仕事をしている人などで「今手作業で行ってる業務を効率化したいからできる範囲で工夫がしたい」といった理由であればVBAを学ぶのは全然ありだと思います。
けーいち
一方で、プログラムを組みたいと考えている人にもVBAはおすすめなのかといえば、そんなことはないと思いますね。
そもそもVBAとプログラミングというのは考え方が同じだとしても用途が全く変わってくるんですよ。
プログラミングを日頃触ってる人間からすると「VBAはあくまでプログラミングではなく、あれはマクロだ」といった括りで捉える人が多いかなと思います。
けーいち
例えでいうなら、日本語を学びたい人にいきなり津軽弁の勉強をさせるようなイメージ。
ナガヤン
(東北出身)
津軽弁ですか(笑
津軽弁だとほんとに現地の人にしか聞き取れないじゃないですか。せめて京都弁くらいにしませんかね?
けーいち
いや、津軽弁です。
せきぞー
………。
ナガヤン
………。
ナガヤン
でもマクロっぽい動きってPython、Rubyにもそういう面はあるのでまったく関係ないというわけではないですよね。
けーいち
今触っている技術と地続きになっているのであれば、やる意味は全然あるとは思います。
せきぞー
なるほど、そもそもVBAとプログラミングを比較すること自体が結構難しいっていうことなんですね。
ナガヤン
ちなみに実際に触ってみた感覚だと自分はプログラミングよりVBAの方が扱いがキツいと感じましたよ。
なのでプログラミングよりキツい言語なのに、そんなにおすすめしちゃっていいのかな?って個人的には少し思ってしまいます。
せきぞー
たとえばどんなところがキツいと感じましたか?
ナガヤン
そうですねぇ、具体的なところだと、
同じ動作なのに名前を言い換えなければいけないものがあったり、他の言語だと変数名の前に型を書くことが多いんですけど、VBAでは後に書くとか、書いた変数の寿命がどこまであるのかわかりづらくて「そこまで見ちゃうのか」っていう動きをすることもあったりして。
なんというか、単純に覚えることが多い気がしています。
ナガヤン
あと、エラー検知っていう言い方していいのかな。なんかこうエラーが出たときにどこ直したらいいのか?っていうのを探るのが難しいですね。
「よくわからないけど動かなくなった」というのが結構起こるので、扱う上での「作法」を覚えないとしんどい言語だと思います。
ナガヤン
なのでまぁ、雰囲気でうまくいってるうちはいいんです。
雰囲気がうまくハマらないと、とたんにきつい言語になるので、かっちりした言語を扱ってきた人にはまずキツいし、雰囲気でうまくいってる人はなんかうまくいってる、「波長が合ったんだな」っていう感じですね。
けーいち
そこらへんはもうPHPとかと似ているところがあってですね。
VBAというのは開発の言語として作られたものではなく「既存の仕組みを便利にしたいよね」が起点になってるんですよ。
なので、開発言語としてのセオリーだったりが通用しないことが多々あったりするんですよね。
けーいち
「こうやったらこう動くだろう」が、まあまあ通用しなかったりするので、キツいっていう。
目的はあくまで「Excel等を使うための機能拡張」というところに特化している言語なので、大規模なシステムを組むためのようなものでもないし、そこまでケアがされていないんですよね。
せきぞー
たしかにそこまで聞くとさっきの津軽弁って話もしっくりくるかなって気はしますね。
逆にVBAから学習をはじめてそこからプログラミングに興味を持って勉強しはじめる人もなかにはいるって聞きますけど、そっちのパターンについてはどう思いますか?
けーいち
そうですね〜興味をもつっていうのは入口がいろいろあると思うのでいいとは思います。
ただ、VBAはあくまでも津軽弁のように限られた環境に特化しすぎた言語だったりするので、開発言語として学ぶのであればスキルの横展開は難しいと思います。
なので効率的に学んでいく方法ではないと感じますねー。
ナガヤン
一方で津軽弁も日常会話に使う言語ですから、日常会話ってまず挨拶から始まるよねとか、別れるときは別れの挨拶があるよねとかは同じなので他の言語でも通用する部分はあります。なのでVBAでもプログラミングの考え方というものはある程度理解できると思いますよ。
せきぞー
やっぱりそうなってくるとプログラミングの入口としてVBAから入ることがおすすめできる人というのはExcelだったりを現職で使っている人のような限定的な層になってくるってことになりそうですね。
ナガヤン
いずれにせよプログラミング的な考え方は必要になってくると思います。
「こういう時はこうします」「そうじゃなかったらこうします」っていう分岐処理とか、10回やるまで同じ処理を繰り返しますとか、そういうのを組み合わせてプログラミングってするんですけど、そういった基本的な考え方ができないとつまずくことになるかもしれません。
けーいち
まあなんかプログラミングって一種の積み木遊びみたいな感じだと思うんですよ。
要は、一個の大きい作品というものを細かいパーツに分けて「これとこれを組み合わせたらこの形できるな」みたいなものだと思うんですよね。
だからVBAとかに関しても、処理の単位ってのはあるので、平たく言うとIF文(分岐)とFOR文(ループ)てのは少なくともあるわけなので、大概はその考えですね。
ナガヤン
だからなんかこう、どうやったら自分で組み立てられるかを考えられるようになってほしいんですよね。
「ここまで組み立てたんですけど、次どうしたらいいですか?」みたいに言われたことだけやろうとしているといつまでたっても使えるようにならないし、教える側としてもちょっとキツいと感じてしまいますね。
けーいち
プログラミングってプログラムを組むための準備の段階が一番大事なんですよ。
実際のシステム開発においても、いわゆる上流工程と言われるフェーズでAs-Is To-Be(現状と理想)をきちんと整理して定義することが非常に重要になってきます。
もう少し具体的に言うと、「どういうものを作るべきなのか」とか、「現状はどういう状況で、どういった課題があるのか」といったゴール設定をきちんと定義します。
そのうえで「じゃあ実際に作っていきましょう」っていう段階になってはじめてどんな言語やフレームワークを利用してどうやって実装していくかを決めていきます。
けーいち
一般的にプログラミングに関する学習って後者の「使い方」についてにフォーカスされがちなんですが、個人的には前者の「ゴール設定」についての考え方を学ぶことの方がずっと重要だと思ってるんですよね。
今自分が話した「考え方を学ぶこと」ってプログラマーにならなかったとしても他の仕事に活きてくることなので、まずはここを勉強してほしいと思っています。
けーいち
ただ、問題はそういうことを教えているプログラミングスクールがほとんどないというところなんですよね…
プログラミングスクールっていうのは、あくまで「この言語、もしくはこのフレームワークを使って、こういうものが作れます」っていう使い方についてを教えることに特化してしまっているので「スクールに入ってはみたけど、やっぱ俺向いてないわ」ってなってそこで諦めてしまう人が出てきてしまうのはいささか残念に思ってしまうところですね。
せきぞー
「何を学ぶか」よりも「どうやって学ぶか」がすごく大事になってくるということなんですね。
けーいち
おそらくですけど前回のブロガーの方が「Excelの方が学びやすかったり楽しい」って言われていたのは、実際に手を動かして自分の思った通りに動いたり、扱えたりっていう「起きてること、できてること、というものが自分の理解できる範疇で収まっているから」だと思うんですよ。
プログラミングに関しても、座学で「理屈は置いといてこういう使い方をすればこうなるんですよ〜」って言われたことを「フンフン」っていってノートにメモとってるだけでは面白くないですよね?
けーいち
それよりも実際に動いているちっちゃいプログラミングを見て「こういう書き方をしたからこういう理屈で動作をしてるんだよ」といった「自分が書いたコードが動く&その理屈についての補足」っていうのがあれば、ひょっとしたらもっと楽しめたんじゃないかなっていう気がしますねぇ。
せきぞー
なるほど。ということは「初学者がいきなりVBAやプログラミングの使い方について学び始める」のは得策ではなく、「まずはプログラミングがどのように成り立っているのか、といった全体像」をしっかり理解していくことから始めていくことが重要になってくるということなんですね。
今回はこのあたりで切り上げさせていただきたいと思います。
せきぞー
今回の話を簡単に振り返ってみたいと思います。
次回はVBAおよびプログラミングについての具体的な学び方についてのお話を聞いていきたいと思います。
次回もぜひお楽しみに。
普段は野外イベントの設営など行っています。
出来るだけ読者の方の視点に立った執筆を心がけていきます!
物静かな性格なため時折南の島に佇む某石像と勘違いされることもあるとか、ないとか。
Twitter:@100Sekizo
「関数?? フッ…そんなの制服と一緒に学校に置いてきちまったよ」