大学1回生からインターンを始めている田川裕隆です。
大学1回生のこの時期にインターンをしているのはどうやら珍しいようですが、そこはあえて深入りせず、今回はプログラミングについてお話ししていこうと思います。
現在、同志社大学の社会学部に在籍しており、学校でプログラミングの授業はありません。
また、以前プログラミングを触っていたということや、特別な才能があったということもありません。
そんな私でも、未来電子でプログラミングを始めて一ヶ月という割と早い期間でカリキュラムの一つを終わらすことができました。
まだプログラミングを始めていない1ヶ月前のことを思い返してみると、プログラミングに対して疑問が3つありました。
疑問1:プログラミングはどのようにして勉強するのかということ。
疑問2:プログラミングには数学的才能がいるのかということ。
疑問3:プログラミングで何ができるのかということ。
今回はこの3つの疑問に対して、プログラミングの勉強をした1ヶ月を振り返りながら、1ヶ月前の自分が読んでも理解できるほど簡単に答えていこうと思います。
プログラミングに熟達してらっしゃる方がみると間違っていることが多々あるかもしれませんが、あくまで文系初心者が1ヶ月勉強した結果としてみてください。
また、間違いがあればご指摘ください。よろしくお願いします。
#プログラミングを学んだ1ヶ月
##春休み
学習時間:5時間
学習内容:HTML、CSS
プログラミングを始めたきっかけは、春休みにすることがなく暇だったからです。
これからプログラミングのスキルが必須になるという種の記事に煽られたのも一つのきっかけだったのかもしれません。
まず私は、[Progate](https://prog-8.com)から始めました。
プログラミングには色々な言語があるのですが、HTMLとCSSという一番簡単な言語から始めました。
「プログラミング言語」「HTML」「CSS」など、プログラミングを全く知らない方からすると意味不明な単語が連なってしまいましたが、Progateを始めると一瞬でわかることなので、身構えずにまずはProgateを始めてみましょう。
これから私の記事を読むにあたって、Progateをちょっとだけでも触っておくとより理解が深まると思います。
これを機会に初めの一歩を踏み出してみましょう。無料でできるのでリスクは0です。
Progateは初心者にとても優しいサイトで、ゲーム感覚で楽しく学習できることがわかると思います。
私にとっては一部難しいところもありましたが、大体の雰囲気みたいなものを掴めたら先にどんどん進みました。
##1日目〜5日目
学習時間:14時間
学習内容:HTML、CSS
ここからは未来電子のプログラミング学習コースに入ってからの話です。
Progateは課金をするとさらに詳しいところまで学習できます。
課金といっても確か月額980円だったので大した出費にはなりません。
ProgateでHTML、CSSのコースをクリアすると、ウェブページを自分で作れるようになります。
例えば[未来電子のホームページ](https://www.miraidenshi-tech.jp/intern-content/marketing/)は主にHTMLとCSSを使って作られています。
ただし、例えば「Webから✉️応募」を押して出てくる「CONTACT」にある機能(情報を入力してそれを応募する)はHTML、CSSだけではできず、後ほど紹介するPythonやPHPなどの他のプログラミング言語が必要になります。
逆にいうと、情報を見るだけの部分はHTML、CSSだけ出来てしまうのです!!
今の説明でもわかるように、プログラミング言語はそれぞれにできる役割があり、複数の言語を組み合わせて用います。
Progateをクリアしたら、早速ウェブページを作っていきましょう。
といっても、Progateをクリアしただけでは何をどうしたら良いのか分かりませんよね。
Progateではスライドがあってその順番通りに進めていけばいいのですが、実際に自分で作るとなると何から手を出していいのか分かりません。
でも、実際はそこまで専門的なことをするわけではありません。
ドットインストール(https://dotinstall.com)というこれまた初心者に優しいサイトがあり、自分でウェブページを作る手順を分かりやすく解説してくれます。
Progateと同じような感覚で手本を真似て進めていけば良いだけなのです。
その際、「Atom」というやつをパソコンにインストールするなど、初心者にとってはなんだか少し怖いと感じる?(私は感じました)作業があるのですが、そこは乗り越えましょう。
ここまでの作業で何か特別な数学的才能が必要だと感じた方はいらっしゃるでしょうか?
少なくとも私は全く感じませんでした。
強いて言うなら、ProgateのHTML、CSSのコースを完璧に理解する必要はないですが、最後まで続けられる気力?でしょうか。
何よりも楽しむことが大事ですね。
##6日目〜8日目
学習時間:12時間
学習内容:Python
HTML、CSSを使って自分で簡単なウエブページを作れるようになった後、Pythonという違う言語をProgateで学習しました。
学習するといっても、HTML、CSSと同じような感覚で、スライドがあるのでその順番通りに進めていけばいいのです。
無課金でできる学習は限られていますが、プログラミングの基礎を学ぶにはとてもよく、難易度もそこまで難しくないので、HTML、CSSをある程度理解できた方は挑戦してみましょう。
##9日目~13日目
学習時間:34時間
学習内容:環境開発
5日で学習時間が34時間だと、単純計算したら1日7時間ぐらい学習していたことになります。
ちょうどこの時期はゴールデンウィークで暇だったため、ほぼ1日中パソコンをいじっていた日もありました。
学習内容が環境開発となっていますが、なんのことだかさっぱり分からないと思うので解説します。
Pythonを勉強したわけですから、先ほど触れた「CONTACT」にある機能がもう作れるはずです。
しかしまたもや、Progateをクリアしただけでは何をどうしたら「CONTACT」にある機能を付け足せるのかが分からない状態に陥ります。
そこで役立つのがまたしてもドットインストールです。
ドットインストールで環境開発の学習をすると、「CONTACT」にある機能をどう付け足せば良いのかが分かります。
具体的には、自分のパソコンにどのような環境を用意すれば(何をインストールすれば)「CONTACT」にある機能を付け足せるのかが分かります。
しかし、ここで大きな問題が起きました。
ドットインストールの真似をしても上手く環境開発ができないのです。
ゼルダで例えると、攻略本通りに仕掛けを解いても次の扉が全く開かないのです。
(これから例えをちょくちょく入れていきますが、例えが下手くそなので理解できない方は無視してください。)
こうなったら違う攻略本を探して違う解決策を模索するしかないですよね。
この攻略本に当たるのがgoogleで検索して出てくるプログラミングに関する記事です。
googleで検索をすると様々な解決策が載っている記事が見つかります。
また、[teratail](https://teratail.com)というサイトで質問をするとエンジニアの方々が答えてくれます。
こうした、自分で調べる力がプログラミングではすごく重要になってきます。
それについては後ほど触れていきます。
そうこう調べていくうちに、カリキュラムの内容をクリアするためにはPythonよりPHPの方がやりやすいことが分かりました。
そのため、PHPを使えるようにするための環境開発をしました。
ちなみにこの時は20記事以上を参考にした記憶があります。
##14日目~21日目
学習時間:25時間
学習内容:PHP、データベース
PHPを使うと決めたからにはPHPの基礎から学ばないといけません。
基礎といったらProgateです。
しかし、個人的な意見ですがProgateのPHPはPythonよりもかなり難しく、後ろにいくにつれて理解できない部分が増えていきました。
そこで挫けてはいけません。分からないところはさらっと流しましょう。
もちろんきちんと理解する必要はあるのかもしれませんが、私は挫折したくないので2割ぐらいの理解で終わりました。
初心者は基礎だけを押さえて、難しすぎるところはプログラミング歴が長くなってから理解すれば良いと思います。
さて、カリキュラムの内容をクリアするためにはPHPをデータベースに連携しないといけません。
また訳の分からないことを書いてしまいましたが、今は、データベースってなんだ?という状態でOKです。
とにかく、カリキュラムを終わらすためにgoogleをフル活用して作業を続けていきます。
しかし、またもや記事の通りにデータベースを連携しようとしても上手くできないという問題が起きました。
環境開発の時はなんとかなったのですが、今回ばかりはいくら記事を参考にしても上手くいかないのです。
もし私が独学をしていたら必ずここで挫折していたでしょう。
しかし、未来電子には気軽に相談できる優秀な先輩方が多くいるため、無事に先に進むことができました。
この時は2時間ぐらい一緒に解決しようとしてくれました。本当に感謝です。
ちなみに上手くいかなかった理由は自分で環境開発をしていたことでした。
というのも、環境開発はカリキュラムに含まれておらず、あらかじめ環境は用意されていました。
ゼルダで例えると、仕掛けの解き方はあっていたのですが、あらかじめ用意されていたDSを使わず、見よう見まねで自分で作ったDSを使っていたため、バグが生じて先に進めなかったということです。
##22日目~28日目
学習時間:30時間
学習内容:PHP
さて、大きな問題を乗り越えたので完成に向けてgoogleで検索してどんどん進んでいきます。
さっきからgoogleで調べるということを連発しているのですが、調べてどうするんだという疑問を持たれた方は多いと思うので、それについて解説していきます。
これから、プログラミングを用いて作りたいサイトを、プラモデルで例えていきます。
これから私は、パンチとキックができるプラモデルAを作成していきます。
まずは、プラモデルAの基礎となる骨格をHTML、CSSで作っていきます。
これは、ProgateのHTML、CSSのコースなど、googleで調べて出てくる学習サイトの真似をして作っていきます。
しかし、例えばProgateをそっくりそのまま真似をしてしまうと、自分の作ろうとしているプラモデルAではなく、プラモデルBができてしまいます。
そうならないために、作っていく段階でプラモデルBをアレンジ(文字を変える、背景を変えるなど)して、プラモデルAに近づけていきます。
そうして、HTML、CSSを用いてプラモデルAの骨格を完成させます。
しかし、PHPを用いていないため、まだプラモデルAはパンチとキックができません。
次に、どうしたらパンチとキックができるようになるのかを調べていきます。
調べていくと、色々な参考サイトが出てくるのですが、パンチとキックができるプラモデルAを作ろうとする趣旨のサイトはなかなか出てきません。
例えば、パンチはできるがキックはできないプラモデルCを作ろうとするサイトや、キックはできるがダッシュという余計な機能がついたプラモデルDを作ろうとするサイトが出てきます。
どうしたらよいでしょうか。
大体の人はもうお分かりかもしれませんが、プラモデルCのパンチの機能とプラモデルDのキックの機能の作り方を真似すればいいのです。
しかし、プラモデルCのパンチ機能をそのままプラモデルAに付け足そうとしても、そもそもプラモデルの骨格が違うので上手くいきません。
プラモデルCのパンチ機能を少し改良してプラモデルAに付け足さないといけません。
その改良の仕方は、具体的にはプログラミングのコードを変えていくのですが、勉強を進めるにつれて分かってくるので安心してください。
同様にプラモデルDのキック機能だけを改良してプラモデルAに付け足すと完成です。
個人的にはこの組み立てていく作業が一番楽しかったです。
実際には、パンチやキックだけでなく、他にも様々な機能を付け足さないといけないので難易度は初心者からすると高いですが、楽しい作業なので続けられると思います。
#まとめ
プログラミングを学んだ1ヶ月を振り返ってみました。
私が最初にあげた3つの疑問
疑問1:プログラミングはどのようにして勉強するのかということ。
疑問2:プログラミングには数学的才能がいるのかということ。
疑問3:プログラミングで何ができるのかということ。
にはなんとか答えられたと思っています。
今まで解説してきたことは、あくまで私が1ヶ月で感じたことをそのまま書いているだけなので、正直正しいかどうかは分かりません。
しかし、この記事でプログラミングを学習している人が具体的に何をしているのかの1例をきちんと示せているならばこの記事の目的は達成しています。
プログラミングでできることは、ウェブページを作るだけではないのですが、まだ私にはよく分からないので一緒に学んでいきましょう。
また私の場合、学習時間がやけに長いですが、未来電子ではこれほど長時間の学習を求められるわけではないので安心してください。