"究極の初心者"　文系大学生プログラミング勉強の道のり - 2 - 

前回はProgateで少しだけプログラミングにふれたことがある状態の文系大学生が、大学の講義でPythonの基礎文法（関数、クラス、ファイルの操作以外）を学び、プログラミング学習の難しさや大変さなどを知った流れを書かせていただきました。

今回はその後、半年間の講義が終わり、地元のIT企業のインターンシップに参加させていただいたときの話と、そのころの勉強の様子についてを書いていこうと思います。

その頃の状況
-
- 春から学んでいた半年間の大学の講義が終わった。
- 大学の授業でPythonの基礎を学び、プログラミングの難しさや、学習の大変さを知ったが、
同時に最初の一歩は踏み出せただろう、という自信がつきはじめた。
- 次に何を学べばよいのかわからず、授業で習ったことを復習するだけのような日々が続いている。

その当時はこのような状況でした。ここから、地元のIT企業がインターンシップを募集しているのを見つけ、次第に動き始めます。



2-0 地元のIT企業のインターンシップに参加する
-

夏になり、大学三年生は就職活動の始まりに「インターンシップ」（就業体験）に参加するという情報をよく耳にするようになりました。

それを聞き、自分もどこかインターンシップに参加したいと思い「マイナビ」を見ていると、地元のIT企業がエンジニア職を経験できるインターンシップを開催しているのを見つけたので、早速応募させていただきました。（そのインターンシップは「プログラミング未経験者可」のものでした。）


面接を終え無事、夏休みの後半からインターンシップに参加させていただくことになったので、それに向けて私は新たなプログラミングの独学をはじめます。

学んだ内容は、募集要項で学んだことがあるとよい。とされていた「HTML＆CSS」です。
その際使った教材は、狩野 祐東さんの[「スラスラわかるHTML&CSSのきほん 第3版」（SBクリエイティブ）](https://www.sbcr.jp/product/4815611651/)でした。


この本でHTML,CSSの基礎を勉強しおわったところで、夏の2週間のインターンシップは始まりました。

インターンシップは、私ともう一人の学生、計2名に対し、一人のエンジニアの方がついて指導してくださる2対1の形式で、行われました。

まず初日は会社から貸していただいたパソコンに、開発に必要なソフトをインストールしていきます。「VSCode」、かろうじて「GitHub」までは聞いたことがありましたが、「Cygwin」「MongoDB」など、自分が聞いたこともないソフトを次々とインストールしていきました。
指導してくださるエンジニアの方の言うとおりに、設定をしていき、環境構築を1.5日ほどで終えました。この時、環境構築というものは、ものすごい時間もかかり複雑で難しいのだということを身をもって教えていただきました。

2日目までで環境構築を終え、その後はまず会社で開発しているWebサービスの軽微なバグの改修を行わせていただきました。

「特定の文字の表示が崩れてしまう」というバグに対しては、このインターンシップで初めて知った「ブラウザの開発者ツール」を使いながら、CSSのスタイルを変更し対応しました。

そしてその後は、WebサービスのUIの変更を行わせていただきました。
指導してくださったエンジニアの方はこれらの作業を進める傍ら、「Git」や、「コマンドライン」の使い方について解説もしてくださいました。
プログラミングを独学していたころは、プログラミング言語, HTML, CSSを学ぶということしか知りませんでしたが、Gitやターミナル、サーバーなど、現場で必要とされる知識はそのほかにもいろいろとあるのだということを知れ、この時ようやく、プログラミング学習の全体像が見えてきたような感覚になりました。（実際はまだまだ覚えることはある気はしますが）

インターンシップも後半に差し掛かり、私は「新規機能の追加」という作業をさせていただくことになりました。
具体的には、Webサービスにログインしているユーザーが「月額料金を支払っているユーザー」なら何も表示せず、サービスを「無料で利用しているユーザー」には、有料プランの広告を表示させるというものでした。

環境構築の時とは異なり、どうしたら実現できるかまずは自分で考える時間をくださいました。
まずユーザーが月額料金を払っているかどうか、おそらくif文を探せばいいのだろうという推測で探し始めます。しかし、どこのファイルを見ればよいか、どこに判別式があるのか、それとも別の方法でユーザーを区別するのか。いろいろと試したり考えたりしましたが自分一人では見つけられませんでした。

結局一緒に参加していた学生の方と協力したり、指導してくださるエンジニアの方に教わりながら、課金しているユーザーか非課金ユーザーかを見分ける部分を見つけ、何とか非課金ユーザーの画面にだけ広告のバナーを表示させることができました。
最初に自分で考える時間をくださったおかげで、今でもこの作業をしたときのことは覚えています。きっとこうするんだよ。と教えてしまう方が早く済むし、楽なはずなのに、まずは自分で考える時間を下さり、困ったときには的確にアドバイスしてくれました。自分も将来そんな風に教えられる人になりたいと思いました。

以上のような流れで無事2週間のインターンシップは終了しました。
とにかく毎日新しいことを知れて、「もうこんな時間！？」と就業時間になるたびに思っていました。こんなに一日が過ぎるのを早く感じたのは、この期間が初めてだったと思います。

インターンシップに参加させていただいた企業様、本当にありがとうございました。


2-1. 苦労した点
-
ここまでの期間で自分が苦労したことは
1. コマンドラインへの知識がなさ過ぎた
1. Gitで使う用語についてなかなか理解できなかった
1. 新しく出てきた大量の用語の整理

まず1についてですが、当時コマンドラインへの知識がなさ過ぎました。
当時の僕にアドバイスをするならば、難しくないのでProgateの「Command Line 基礎編」を学ぶべき。といいたいです。（ちょっと頑張れば1日で終わると思います）

プログラミング独学の私は「コマンドライン」という存在が眼中にありませんでした。
（というか知りもしませんでした）なぜなら、Progateやドットインストールをしていても、コマンドラインの知識は必要ないからです。
2「Gitで使う用語についてなかなか理解できなかった」も苦労した理由は1と同じです。
実務を経験したことのないプログラミング独学者は、その必要性を感じる機会はなかなかありません。
ですが本当に自分で何かを作ったり、エンジニアとして働きだした時には必須になるでしょう。
そのことを今回のインターンシップを通して知ることができました。
まずはそのことを知り、基礎の部分や、使われる用語については理解しておくことが、プログラミング独学者には必要かもしれません。

3は、すごく苦労しました。これまで述べたようにコマンドラインとはなにか。その中のcd,mkdir?　Gitだとマージとは何か、ブランチとは何か、プッシュとは、プルとは。
これらをきちんと整理しないとなかなかその先に進めません。

この当時の私はこの問題にうまく対処できず苦戦しました。

その頃の私に今アドバイスできるなら、iPadを買え、そして「コンセプト」という無限キャンバスを使って整理しろ。といいたいです。
当時はB5のコピー用紙に教えてもらったことを書いていました。家に帰ってメモを振り返ってみても、ノートのとり方が下手だったのであとから見返してもわかりずらいメモになってしまっていて
復習があまりできませんでした。
私の場合はiPadのコンセプトというメモアプリでメモを取り出してから、この問題をだいぶ解決することができたので当時の自分にはそうアドバイスしたいです。









2-2 学んだこと
-
-精神面 -
1. 学べる機会を探し、積極的に参加すると、今まで知らなかったことの扉がガバっと開く
1. Pythonの基礎文法とHTML、CSSを習った状態というのは、まだまだ知らないことがある状態


-技術面 -
1. HTMLとCSSの基礎
1. ブラウザ「開発者ツール」の使い方
1. Gitやコマンドラインの基礎

-今後に生かしたいこと-
本で読む、サイトを読むより、自分でコードを書く。それで動かせるようになる。ほうが実際に必要な能力は身につく。


2-3 次回予告
-
次回はインターンシップでプログラミングで学ぶべき範囲の広さを知ったあと、どのように勉強していったかを書いていこうと思います。
よろしければ次の記事も読んでいただけると幸いです。

この記事を最後まで読んでいただきありがとうございました。また次回。