プログラミングの勉強は導入部で挫折する人が多いです。
勉強を始める前に
・どういう言語を勉強すればいいの?
・そもそも何ができるの?
こんな疑問が浮かびます。
それを調べて何かの言語に辿りついたとしても、すぐにはプログラムをさわれません。
通常は言語を動かす前に設定が必要で、
・SDK(ソフト開発キット)をインストール
環境設定だけで、こういうワケがわからない事をするハメになります。
しかも参考にするサイトとバージョンが微妙に違うのか、画面と同じように進められません。
この時点で結構、プログラムに対して苦手意識が高まってきます。
そして、最初に学習用に打たされるサンプルプログラムを実行すると、画面に
Hello world!
と表示されます。
・・・・・・・・で?
となります。
ここまで長い時間かけて、『Hello world!』と表示されるだけで、労力と全く合わない成果に
『プログラミングなんて無駄』
という思いになって、勉強を辞めてしまいます。
こういう下準備がなく、しかもプログラムで出来る事が想像つきやすい身近なソフトがあります。
エクセルに標準でついている、VBAというプログラムです。
すぐに始められて応用範囲も広く、会社でも使えるので年収に直結しやすいです。
関連:独学でプログラミングの勉強をして年収が数倍に上がった件
プログラミングの勉強はエクセルVBAがオススメな理由
プログラミングを勉強しようとする時期によって、旬のプログラムが違います。
C言語・Perl・Ruby・Python
システム関係の人にどれがオススメか聞くと、人によって答えが違うし、説明を聞いても
『日本語で説明して!』
と思うくらいチンプンカンプンです。
初心者に専門用語を羅列する人は結構いて、泣きそうになります。
勉強の導入部は、簡単であるべきだと思います。
エクセルVBAとは、ビジュアルベーシックという言語で、エクセルを動かすプログラムとだけ覚えてください。
デキる人に聞いても会話が噛み合わない
エンジニア系の人にオススメのプログラムを聞くと
「まずプログラミングで何がしたいの?」
と逆質問されます。
プログラムで何ができるのかもよくわからないのに、そんな事を聞かれても・・・
算数で『どこがわからないのかもわからない』という状態です。
そんな時は使える範囲が広いので、とりあえずエクセルVBAを選択しておけばOKです。
すぐにプログラムを動作させられる
VBAは他の言語のように環境設定がなく、すぐにプログラムが動かせます。
動かない人は、エクセルのマクロのセキュリティ設定というのを変更してください。
これだけでプログラムを動かせるのは、非常に楽です。
他のプログラムを始める時にサーバー設定が必要でしたが、黒い画面が出てきて何度も同じような事を繰り返して、1時間くらい格闘しました。
プログラムの勉強を始めようと思う頃にはヘトヘトです。
エクセルVBAはやろうと思ったモチベーションを削がれる事無く、プログラミングから始められます。
プログラムの基礎が身につく
エクセルVBAはプログラムの動作を、身近なエクセルで確認できるので着実に前に進めます。
デバッグ(ミスの発見・修正)作業の時も、他のプログラムより簡単にできます。
デバッグの時に1行ずつプログラムを止めながら見る事ができるので、どこで何をしているのか独学でもよくわかります。
VBAで出来ないのは、NASAのプログラムや銀行ATMで使われるソフトなどですが、そちらに進む時にもVBAでプログラムの基礎を学んだ後なら理解しやすいと思います。
エクセルVBAはわかりやすいプログラム
他のプログラムとの違いは、エクセルの表を使えるという事にあります。
他のはプログラムを作動させると黒い画面が起動して、英語がずらずらと出てきて知らない内に終わります。
プログラムが合ってるのか間違っているのかよくわかりません。
エクセルVBAなら、エクセル表で人間が確認しやすい形で表示をしてくれるので、非常にわかりやすいです。
エクセルを使った事がある人なら、何のストレスもないでしょう。
だから勉強用にも最適です。
すぐに活用できる
自分でやっている業務を自動化できるので、勉強の結果をすぐに仕事に活用する事ができます。
二つくらいの命令文を覚えただけで、何かしら作る事ができます。
普通のプログラムの勉強でモチベーションの維持ができないのは、勉強した事を仕事に活用しにくいからです。
活用するにしても、プログラムを相当覚えないとできません。
人間は遠くにある成果より、近くにある小さな成果を得た方が歩みが止まりにくいものです。
どこの会社でも導入できるから、給料が上がりやすい
大抵の会社でエクセルを使っているので、VBAはどこでも導入しやすいです。
会社の人たちもエクセルなら慣れているので、難しいものではないかと警戒されにくいです。
プログラムで仕事を自動化できても、稼働させられないと給料は上がりません。
便利なものでも、人は変化する事に恐れを抱きます。
普通のプログラムでやろうとして
「サーバーを借りて、システムを運用したいんです」
なんて言ったら、原始人の前でライターを使うようなもので、上司や他の人はものすごく怯えて拒否感を示します。
プログラムを稼働させるには、人の心理を読む必要があります。
マクロなの? VBAなの?
エクセルの便利な使い方を知っている人はマクロという、動作を記録して再現できる機能をご存知だと思います。
そのマクロの編集をすると、動作の記録のプログラムを見る事ができます。
ここにビジュアルベーシックのプログラムを書き足す事もできます。
実行する時は、普段見ているエクセルの画面から、『マクロの実行』を選択肢てプログラムを動かします。
だからVBAで作られたプログラムでも、『マクロ』と呼ぶ人が多いです。
社内で『VBA』と呼ぶ人が居たら、自分でプログラミングしている人なので聞くと何か答えてくれるでしょう。
勉強しやすいプログラムだけど、奥が深い
NASAで使うプログラムは難しいですが、一般企業で使うプログラムならVBAが一番使えました。
▼
すぐに仕事に使える
▼
改善点が見つかる
▼
更に勉強する
このサイクルで着実にステップアップできました。
しかも給料が上がるという実利もあったので、モチベーションが維持できました。
独学のススメ
学校の先生でも教えるのが上手い・下手があるように、プログラミングが出来る人が教え上手とは限りません。
そういう人に当たると勉強する気が折れてしまいます。
わたしはペンの裏で液晶画面を軽く指した事があります。
そしたらエンジア風の人が子供のように大きな声を出したので、ちょっと嫌になりました。
今は独学の参考になるサイトが多くあるので、一人が好きな人でも勉強ができます。
勉強の結果をアウトプットするのが重要です。
VBAを勉強したらできること
例えば各自が作ったエクセルファイルが100個あって、それを一つにまとめなければならない仕事があったとします。
手作業で一つ一つのファイルを開いて、コピーペーストを繰り返す作業です。
エクセルVBAなら、自動で各エクセルからデータを取り込んで、一つにまとめる事ができます。
一つにまとめる途中で演算もできるので、全てが自動で終わります。
ファイルを自動で作ってくれる
今度は逆に、一つのファイルから複数のファイルを作るパターンです。
例えば、取引先と売買内容の記録をデータベースからダウンロードしたとします。
それを各取引先に送るため、各社ごとのファイルを作る事も、VBAで自動的にできます。
機械がやるので、別の取引先の売買内容を間違って記載する事もありません。
プログラムを自動化するのは手間を減らすだけでなく、注意力を消費しないためでもあります。
単純作業は機械に任せて、付加価値の高い仕事に専念できます。
インターネットも使える
例えば、毎朝なにかの管理画面にログインをして、データを取らないといけない仕事があったとします。
これもエクエルVBAで自動化できます。
自動でインターネットのブラウザ(IEとかedge)を開いて、管理画面にログインをしてデータをダウンロードして、更にエクセルに取り込めます。
集計作業があるなら、それも組み込めます。
プログラムを作動させてトイレに行って戻ってくれば、仕事が完了しています。
副業にも使える
わたしは副業で株やFXをしていますが、そういうのにも使えます。
例えばFXでは、チャートから現在値を取り込んで計算して、毎分で買いか売りかの予想を出す物を作りました。
まぁ、チャートから値動きの予想はできない事がわかって使わなくなりましたが、技術的にはそういう事も出来ます。
今はニュースサイトを巡回して、特定のニュースをピックアップするというのに使っています。
そういう助手みたいな作業を機械にさせる事もできます。
プログラムの設計で仕事の質が変わる
プログラムを考える時、どういう動作をさせれば合理的かを考えます。
更に他の人が使った時の分かりやすさといった事も考えます。
これらは管理職の頭の使い方と一緒です。
わたしの役職は最終的に役員でしたが、それはプログラミングの思考のおかげです。
プログラムは書き方より使い勝手
例えばアメリカ人を笑わせる場合、英語が堪能な出来る人が勝つか、英語が下手だけと面白い人のどちらが有利でしょうか。
恐らく、片言の英語でも面白い事を考えつく人の方が勝ちます。
プログラムも美しい書き方が出来る人より、活用方法を思いつく人の方が使えるプログラムを作れます。
プログラミングはできるけど、ものすごく偏屈な人を何人か見ましたが、いずれも使い勝手の悪いものしか作れませんでした。
だから、プログラミングの知識が少なくても、他人に気を使える人の方が適性があると思います。
システム設計(難しくないです)についても書きました!
自分でプログラミングが出来る意義
外部の会社に依頼して、ものすごく使いにくいシステムが出来上がるのはよくある事です。
発注側の人がシステムに関して知識がないので、見当はずれの要求をしがちです。
外部の会社のシステムエンジニアにしても、発注側の仕事をあまり理解していなかったりします。
そうすると保険的に余計な機能がゴテゴテとついて、使い勝手が悪いシステムが出来上がり、大して効率化できません。
自分でプログラミングをすれば最適なものが出来るし、外部に発注する時にも正確に仕様を伝えられます。
そういう人材はどこでも需要があり、わたしも30代以降の転職は招かれる形でした。
そのキッカケは、エクセルVBAでした。