2ヶ月のプログラミング学習

このブログの目的

 DIVE INTO CODEというプログラミングスクールでrubyrailsを中心にを全くの未経験から始めて2ヶ月以上が経ちましたが、何をやってきたかの自分の学習の振り返りと、今後目指すべき方向性を確認する為の日記として定期的に記していきたいと思います。

 

スクールに入る前の私のやっていたこと

スクールに入る前にprogateを少しやっていましたが、それ以外はほとんどやっておらず、もちろん今までITに関わったことがなかったので拡張子の意味がわからず、スクールに提出することになっていた自己紹介シートをpdfに変換する方法側からず、右往左往していた事を思い出します。このような状況から私はスタートしました。

 

私の1日の学習時間

朝10時からスクールの閉館の夜10時までだいたい平均して10時間以上は学習していたと思います。土日のスクールがない時もスクールの自習室に行って平日と同じように学習を進めていました。私は決して理解が早い方ではないですが、昔から座学は長時間やってもそんなに苦ではないのでそこを自分の強みと捉えてとにかく量をこなして、理解を深めるスタイルで取り組んでいます。もちろん、効率化も考えますが僕の場合はいつもベストな効率化をできるわけではないので。

 

成果物

プログラミングスクールの課題の一環として作成した物を紹介していきます

Twitterクローンアプリ

こちらはrailsCRUD機能を搭載した拙いですが初めての成果物です。ログインシステム何もないTwitterと名乗るには無理がある作品なのですが、初めてherokuにデプロイしたり、GitHubに初めて登録したりと私にとっては勉強になることが多い作品でした。フレームワークの基礎であるMVC構造についての基礎の基礎を動くものを通じて学ぶことができました。

 Facebookクローンアプリ

こちらもFacebookのと言えば聞こえはいいのですが、前回作ったTwitterクローンのアプリに画像機能やログイン昨日が搭載された単純なアプリです。しかし私にとっては色々と苦労しました。特にアソシエーションを組んだ時にデータベースから値をひっぱてくる時に苦労した記憶があります。これを実装した時にやっと自分がプログラミングを勉強していることが形になったという実感が湧きました。

Tarobook

Instagramクローンアプリ

これがクローンシリーズの中で一番苦労しました。Facebookクローンの機能に加えてが多対多のアソシエーションで実現するお気に入り機能の実装やsendgridを利用したメール機能の実装など。加える機能が多く、課題を進めていく上でかなり学びが多いアプリケーションとなりました。追加機能以外は他のクローンシリーズと同じ実装なので復習作業としてもよくできた課題だと感じました。

Instarogram

タスク管理アプリ

株式会社万葉さんの新入社員教育で使われた課題をスクールのカリキュラムで作成しました。こちらもrailsの実装の基本を身につけるにはとても良い課題で、着手から終わるまでに3週間もかかりました。今まで作成してきたCRUD機能はもちろんのこと、一つの機能を作るたびにrspec を使ってテストを毎回実装しました。並び替え機能や検索機能、タグ機能などをgemを使わずに1から実装したので時間はかかりましたが、railsの裏で何が行われているかを確認しながら実装できたので、この課題を終えたことでrailsの基本的なことはある程度理解できていると自信を持って言えるようになったと思います。

SHINTASK

 

スクールで学んだrails以外のこと

HTML・CSS

基礎的な内容を勉強しました。2カラムのHP作成が課題として出され、テキストに沿って作成する形です。それぞれのタグの使い方や意味、HP構成の知識、フォームやラジオボタンなどを使用したお問い合わせ機能等、基本的なHPに必要な画面は学習した。CSSについてはbootstrapについてもグリッドシステムなどの基本的な事は学んだ。

JavaScript

基礎的な内容ではありましたが、プログラミング言語初学者にとって基本中の基本である変数、定数から始まり、比較演算子、条件式、配列、関数などをじっくりやりました。最低限必要な事はだいたい網羅していると感じました。課題では「成績判定プログラム」を考え、JavaScriptにおける関数の作りかたを学びました。

Ruby

JavaScriptで言語の核となる学習をしていたため、ボリュームの多い内容ではありましたが頭には入って来やすかった。しかし、テキストの最後の方の難しいアルゴリズムの内容になると、正直訳が分からなくなっていました。今やっても難しいであろうから、この辺はもう一度力をつけてからまた戻ってきます。そしてこのテキストではruby on rails の醍醐味である、オブジェクト志向の骨幹とも言えるクラスとインスタンスについては少し触れる程度でした。その時には不思議に思ったが、スクールにはテキストの他に週2回のワークと言われる授業のようなものがあって、そこでがっつりと学ぶのでテキストではこのような内容になっていたようです。

SQL

テキストでは生SQLの基本的なところまでは触れます。SQLのクエリの描き方をひと通り学ぶ事ができました。しかし実際これ以降テキストでは直接SQLからデータをひっぱてくる事はほとんどなく、railsではactiverecordで書いてデータを取得するのでこの辺は知識は他ののフレームワークを使った時に発揮できそうです。課題としては、paizaのBランクの問題に取り組みました。

web技術入門

wedについての基本情報もカリキュラムの一つとして組み込まれていました。URLやIPアドレスとはなんなのか、などwebサイトがどのような仕組みで動いているのかを学ぶことができました。課題としてはgemのWbrickを使ってWebサーバーを構築し、erbでページを作成しました。その時に直接DBからデータを取り出して表示するなどをしました。

週2回のワーク

スクールでは週に2回授業のようなものがあって、最初の1ヶ月はテキストのrubyJavaScriptについての復習をしました。2ヶ月目からはrubyについて深く勉強していく感じで、週一回はrubyのチェリー本について週に1章ずつ予習してきて、章の例題について解説してもらうような形で、もう1回は自動販売プログラムをrubyを使ってペアプログラミングで毎週3時間ほど書くという内容になっていました。自分の中ではこのワークでかなり成長したと感じました。最初の1ヶ月でプログラミング言語の基礎を学んだ上で、チェリー本を学ぶペースを与えていただけたことと、自販機プログラムを考えるというゲーム感覚でオブジェクト志向を学んでいけたので、独学でなかなかここまで深く言語を学ぶ機会を作るのは難しいと思いました。

 

その他スクール以外でやったこと

qiitaで記事を書いてみる

エンジニアの方なら皆さん利用されているナレッジ共有コミュニティサイトですね。情報発信していくことで自分の学習した知識が昇華されるというのはよく聞くので実際に私もやってみようということで、自分がrailsで開発しているときによく詰まっていたところ、曖昧なところを記事にすることで理解を深めようと思って書いてみました。また、このブログと同じで私自身に対する備忘録でもあります。今後も継続して書いていきます。

qiita.com

paiza

こちらも皆さんご存知だと思うのですが、毎日1つか2つは継続して続けて取り組んでいました。始めた頃はDランクでさえ四苦八苦していましたが、毎日継続することで、なんとかCランクにも太刀打ちできるようにはなりました。次なる目標はBランクの突破です。

 

2ヶ月後までに達成したい事

エンジニアとして内定をもらう

これは言うまでもない事で、スクールに通っている目的そのものでもあるのであまりこの記事で書く事ではないと思うのですが、目標として5月か6月に内定をいただけるように動いているので2ヶ月ないし3ヶ月以内に達成できればと考えております。あまり焦らずにしっかりと自己分析、企業研究をした上で自分にあった企業で働く事ができ、貢献できるように就職活動を進めていきます。

卒業課題のオリジナルアプリケーションを作成

テキストもいよいよ終わりが見えてきて、最後の課題としてのオリジナルアプリケーションの制作にぼちぼち取り掛かります。このアプリケーションを自身のポートフォリオとして就活をしていくつもりなので、人事の方にソースコードを見られてもいいようにわかりやすく書いていきます。コミットメッセージなどにも気を使ってfirst commitから実装完了までどう実装したのかを細かくコミットして説明していく予定です。内容については、自分の周りの友人や家族などに継続して使ってもらえるような、そう行ったアプリケーションを考えています。アイデアとしてはありふれたものになるかもしれませんが、自分がスクールで学んだ事をフルに活用し、自分が現時点でこれだけの技術がを持っていると事を就活でしっかりとアピールできるような作品にします。自分が実際に働いてプロジェクトをやっているような緊張感を持って取り組みたいと思います。乞うご期待。

フロントエンドについての勉強

今はrailsを中心にバックエンドの勉強をしていますが、将来的にはフルスタックでかけるようなエンジニアを目指しています。また、もし門戸が開かれているならば、最初はフロントエンドエンジニアとしての就業をさせてもらい、そこからバックエンドの仕事も徐々にこなしていくようなそういったキャリアを積んでいけたらいいなと思っています。なぜならば、フロントエンドから始めた方が結果が目に見えてわかるので、会社外などのITリテラシーがない方からも評価をもらいやすくエンジニアとして経験が乏しい期間でもモチベーションが保ちやすいと考えているからです。ただ、就職活動をしながらになるため、railsほどしっかり時間を確保できないのとスクールでフロントエンドをがわかる人がほとんどいないので、学習方法と効率は計画を練ってやらないと達成できないでしょう。

Javascript

フロントエンドを勉強していく上での言語としてJavaScriptを勉強してきます。言語としての汎用性の高さと、私が学びたいjqueryとVue.jsがJavaScriptで書かれているからです。今はreilsを勉強しているので学習計画についてしっかりと考えていませんが、卒業制作にこれらの勉強した技術を使って動きをつけていくような感じで考えています。

自力で問題を解決する力を付ける

いつでもメンターに質問できるのがスクールに通っているメリットの一つではありますが、それに甘んじてしまうと自己解決能力のない受動的な人間になってしまう危険性も孕んでいると最近思います。それに自己解決力は就活する際や、入社してからも求められる大事なスキルです。スクールでは30分悩んでわからなければ質問しましょうを推奨していますが、もうすでに2ヶ月以上学習している私としてはできるだけ自走できるようにならなければいけないフェーズに入っているので、テキストの進捗よりも自己解決力を養うことを優先していきたいと思います。とはいえ、何日も悩んでいてはそれはそれで問題なので、丸1日悩んで解決できないことは質問するというルールを自分の中で設定してやっていきます。

 

終わりに

ブログを書いたことがほとんどなかったので、日本語や文章の構成がおかしいところがあるかもしれませんが、そこはお手柔らかにお願いいたします。

今回この記事を作成したことで、この2ヶ月ちょっとで自分が何を習得できたのか、そして今後何をやっていくべきなどが可視化されたので記事を書く時間を割いてよかったと思います。次回はスクールを卒業したタイミングで振り返りの記事を書きたいと思います。