メリークリスマス。2019年12月24日は、ひとりコードとにらめっこしていました。プロダクトチームの大木です。

9月に、「非エンジニアの僕が、SQLを習得するまでの道のり(その1)」、11月に「非エンジニアの僕が、SQLを習得するまでの道のり(その2)」と、データベース言語の一つであるSQLの学習してきました。

そのなかで、PR Tableのプロダクト開発で採用しているプログラミング言語「Ruby」に興味が持ってしまったため、SQLマスターではなく、Rubyマスターになることを目指し始めました。

「Rubyをやるぞ!」と思い、Googleで検索。

▲検索結果を見ると、オンライン学習サービス・プログラミングスクール・アフィリエイトサイトと何から手を付けて良いのか、軽く混乱......。

リファレンスサイトと参考書をマスターするほうが良いということで「改訂2版 パーフェクトRuby」を購入し、ひとまず読んでみる。「あれ、意外とわかる!」と思わせてくれる丁寧な解説により理解が進む。そして、また読み進める。

気づくと、参考書を読んでいれば出来るようになるんじゃないかという思いが芽生えてきました。けれど、実際にコードを書いてみると、エラーはたくさんでるわ、全然覚えていないわで、ボロボロでした。

参考書は蜜の味です。とてもこわい。

SQLの時もそうでしたが、やっぱりちゃんと手を動かして失敗しないと人間は覚えないんですね。

そんな、初心者の最中ではありますが、プログラミング学習の最初期を振り返ってみました。



<目次>
- Rubyとは
- プログラミング学習で必要そうな考え方
- プログラミング学習をはじめて良かったこと



Rubyとは

リファレンスサイト:https://docs.ruby-lang.org/ja/

Rubyとはプログラミング言語の一つ。日本人のまつもとゆきひろ氏によって開発された日本産のプログラミング言語です。まつもとゆきひろ氏はRubyについて「Ruby は純粋に楽しみのために設計され、言語を作る人、使う人、学ぶ人すべてが楽しめることを目的としています」と語っています。書いていて楽しいという点を重視しているため、文法がシンプルで書きやすく、初心者が初めて学ぶプログラミング言語としても人気です。
引用元:https://souspeak.com/ks/ruby-programming/

細かいことはよくわかりませんが、初心者が初めて学ぶのに適しているらしいので、とても助かりました。

プログラミング学習で必要そうな考え方

① 「これを作ってみよう」と思えるものだけつくる

冒頭でもお話した通り、参考書はいきなり読んでも、何も覚えられませんでした(独学でできてしまう人が羨ましい)。

自分の場合は、「自分がイメージできる仕様で作ってみたいものを作る」という方法が合っていると色々試してみて思いました。

そこで、RubyのフレームワークのSinatraを使って、PR Tableを20倍希釈したようなブログ投稿サイトを作りました。(※フレームワークとは、Webアプリケーションとして機能する枠組みシステムのこと)

機能は「簡単なログイン機能、投稿機能、投稿記事の一覧」で、最初は全くわからないものの足りない知識を補おうと参考書を読んだり、エンジニアの方々に質問をしたりすると、なんとなく、理解のサイクルができてきました。

● なんとなくできてきた理解のサイクル
1. 想定している挙動を実現するための理解が足りないところがボロボロ出てくる

2. 参考書やwebの情報を見たり、エンジニアの方々に質問をして、やってみる

3. できると思ったのに、エラーが出て、さらに悩む

4. 参考書やwebの情報を見たり、エンジニアの方々に質問をして、やってみる

5. なんとか、想定した通りの挙動ができる

このサイクルができてから、希望が見えてきました。

② 独学はさっさと諦める

人に聞くのが一番はやい!のは当たり前ですが、プログラミング学習は、WEBでたくさん情報があったり、学習するサイトがあったりするがゆえに、独学で続けてしまうなと言う印象があります。

私の場合は、間違った認識や基本的なところが抜けがちだったため、以前にHTML,CSSを学んでいたとき、「MENTA」というサービスで、質問できる環境を作ると、学習スピードが段違いでした。(独学でできてしまう人が羨ましい)

現在は、まわりのエンジニアの方々に質問できる環境があるので、とても助かっています。

「作りたいものから逆算して、わからない知識を補完する」という考えで参考書を読む・質問をするだけで解像度の高まり、一日中勉強していても苦にならなくなりました。

プログラミング学習をはじめて良かったこと 

12月からプロダクトチームに入り、業務を進めていくにあたり、裏側まで理解しながら会話ができるのが大きいなと感じます。

以前は、ブラウザに表示される箇所で依頼をしていたので、コミュニケーションが難しいなと感じることがたくさんありました。

まだまだ理解しないといけないことはたくさんありますが、コミュニケーションが取りやすくなったり、機能の改修や新機能を考えるときの解像度が高まりを感じるので、取り組んできて良かったと感じます。

次回予告:みんなに使ってもらえるwebアプリをつくろう

つかまり立ちな状態ではありますが、ざっくりしたことは理解できるようになってきたので、自分が作ったもので、周りの人の利便性が上がったら嬉しいなという気持ちが芽生えてきました。

そこで、これから社内に散らばってしまっている蔵書管理を簡単にするwebアプリケーションの製作過程をご紹介したいと思います。