入社2ヶ月の松田です。
ブログを担当するのは2回目になります。
前回は、Microsoft製品で扱えるVBAという開発言語の紹介をさせて頂いております。

【技術紹介】Microsoftアプリをもっと便利に! VBAの紹介!

さて、今回はそもそもどうプログラミングを勉強したか、
独学は可能か等、実体験を交えて話していければと思います。

どうプログラミングを勉強した?

私の場合、短期の専門学校で2年間勉強しました。
それまでは、プログラミングのことなど全く知らない身です。
(一応htmlも中学、高校で習いましたが、基礎も基礎の部分です。)

「じゃあ今から学校に通ってください」と言いたいわけではありません。
正直なところ、センスも必要かと思いますが、独学は十分可能だと思います。
(実際、私の恩師であるWeb系エンジニアの方は独学でした)

私が思う手っ取り早い勉強方法、というかプログミングの慣れ方は以下です。
1. 本を買ってハンズオンで学習 (web教材(udemy等)でも可)
2. 実際にやりたいことをどうやって解くか、失敗しても良いので考えてみる
3. 日常生活などの手順をアルゴリズム化する
4. 算数の論理問題などを実際にプログラミングで解いてみる

確定でやるべきことが1で、私の場合、2がなくて特に3, 4でプログラミング脳になりました。
では、順番に簡単に説明していきます。

1. 本を買ってハンズオンで学習

基礎、入門を謳っている本であるなら、読者の知識があることを前提とはしていないので、
プログラミングに必要なサービスや、概念についても説明してくれていることが殆どです。
最初は本に書いてあるとおり、とりあえず手を動かしてみましょう。
あと、学習の際は、なるべくコピペは使わない方が良いかもしれません。(本来はコピペ絶対主義ですが)
と言うのは、とにかく英数字の羅列と決まり文句に慣れるためです。

2. 実際にやりたいことをどうやって解くか、失敗しても良いので考えてみる

個人的に、1の直後にこれは個人的にはあまりオススメはしませんが、
のんびり学習してなどいられない方はやってみても良いと思います。

ただ、なるべく簡単なものにしてください。
また、失敗してもここですぐに不向きと思って諦めないで下さい。

もしここで目的とするプログラミングが書けたならラッキー程度。
できなかったら残る3, 4を意識づけて、とにかくプログラミング脳になることを心がけてください。

3. 日常生活などの手順をアルゴリズム化する

くだらなく聞こえますが、プログラミング脳になるには欠かせません。

アルゴリズムとは「物事を解決するための手順を定義すること」
意味がわからないと思うので、実際に例を挙げてみます・

「冷蔵庫の牛乳を取り出す」
この手順をアルゴリズムにしてみましょう。
人間からすると、もうすでに手順がわかり切っているようですが、プログラムの気持ちになってください。

プログラム的なアルゴリズムは、こうなります。
1. 冷蔵庫に向かう
2. 冷蔵庫の扉を開ける
3. 牛乳を探す
4. 牛乳をつかむ
5. 牛乳をつかんだ手を冷蔵庫から出す
6. 冷蔵庫の扉を閉める

人間がどれだけ手順を省略して伝えられるかがわかりますね(笑)
プログラムにはこれだけ細分化、手順を教えてあげないと処理してくれないんです。
ちなみに3の時点で、 牛乳がない場合、少ない場合なども考えられますので、やろうと思えばより細かく定義することができます。

ちなみに、アルゴリズムの教材もあります。
どんな言語を勉強するにしても必要な概念になるので、とりあえず1冊買ってみても良いと思います。

4. 算数の論理問題などを実際にプログラミングで解いてみる

最後です。これができれば、プログラミングができるようになったと思って良いと思います。
実際に例を挙げてみましょう。

「ABCD = 4DCBA となるA, B, C, Dの値を求めよ。A,B,C,Dは1~9の整数で、ABCD,DCBAは4桁の整数である。」

ちなみにこの問題、人間の解き方と同じ方法でプログラミムで解くのはオススメしません。
わりと有名(?)な問題なので、人間的な解き方の解説は他サイト様で解説頂くとして、プログラムにはもっと単純明快な力技な解決策があります。

その解決策とは「1111 から 9999 まで総当たりで計算してみて、条件に当てはまるものを答える」です。

では、paiza上(※)で実際に解いてみましょう。
※ ブラウザ上でプログラミングをお試し実行できるWebサービス

書いていることはなんとなく通じるかな、と思います。
無事 ABCD = 8712 であるという答えがでました。 (4 * 2178 = 8712になります)

こんな風に、「これプログラムで解けるのでは?」「どう解くんだろう?」と思ったら、なんでも考えてみるクセをつけてみてください。
日常的に考えるのが苦にならなくなった方は、非常にエンジニア向きです。

いかがだったでしょうか。
ちなみに私は趣味の時間でも、プログラムのことを頭がよぎって純粋に楽しむ気持ちが薄れてしまいました。 (今は今で面白いですが)

それでは、ここまで読んで頂きありがとうございました!!!