今日という日が人生で一番若いんだってさ

もうすぐ50歳になるアラフィフおじさんが独学でプログラミングの勉強を始めた記録です。

『マンガでわかる Ruby(2)オブジェクト指向編』を読了。

f:id:oshimago:20191015161555p:plain

ども、id:oshimago です。
台風19号(ハギビス)で被災された方々にはお見舞い申し上げるととともに、一日も早い復旧を願います。


さて、少し間が開いてしまいましたが、前回は『マンガでわかる Ruby(1)』という電子書籍Ruby について学びました。

今回はその続編にあたる『マンガでわかる Ruby(2)オブジェクト指向編』を学習しました。


booth.pm


本書は、私が以前から苦戦している「オブジェクト指向」に関する解説が中心となります。

構成は大きく分けて3つに分かれています。

1)オブジェクト指向についての解説
2)サンプルプログラム(Slack Bot)の作成
3)オブジェクト指向を使ってのサンプルプログラムの改良

最初のオブジェクト指向の解説については、これは大変分かりやすかったです。私でも理解できました(笑)。

特に「亀リモコン」をオブジェクトに見立てた「データ構造」と「手続き」の説明、それと「クッキーの金型」=クラス、「クッキーそのもの」=オブジェクト(インスタンス)の例えはすんなりと頭の中に入ってきました。

===

というか、こういったオブジェクト指向の「そもそも論」をすっ飛ばして、やれクラスだメソッドだ、やれオブジェクトだインスタンスだと他の入門書は何故いきなり説明に入るのでしょうか?
「そもそも論」を説明していただかないとこんなの理解できるわけがありません。

それまでの「手続き」を記述していくコードの書き方と、「オブジェクト指向」で記述するコードの書き方は「モノの考え方/セカイの捉え方」がまったく異なり、それこそ「天動説と地動説」くらいに考え方の大転換が必要なように(私には)感じました。

今までこういった解説をしてくれている入門書に出会ったことがなかっただけに、そういった意味では個人的にはもっと早くに本書に出会いたかったですし、むしろ本書に「救われた」気分です。
というか、すべての入門書は本書を見習ってオブジェクト指向の「そもそも論」を加えていただきたいところです。

===

閑話休題
後半(ページでいうと43ページ以降)においては、オブジェクト指向でサンプルプログラムを改良していくのですが、ここら辺になってくるとちょっと難しくなってきてなかなか頭に入ってきません。これまた流し読みです。

ただ「まったく歯が立たない」かというとそういうわけではなく、(おそらく)頑張れば読み解き、理解できるんじゃないかな、とは思います。
単純にたまたま私の気力とか体力とか集中力が足りなかったというか保たなかっただけなんだと思います。
おそらく1巻と合わせて3往復くらいすれば理解できるようになるんじゃないかな、という予感はあります。

いずれ時間を作って再度本書を復習したいと思います。

ではでは、今日はこの辺で。

『マンガでわかる Ruby(1)』を学習しました。

f:id:oshimago:20191007162946p:plain

ども、id:oshimago です。
アイスコーヒーよりホットコーヒーが美味しい季節になりました。

先日は『ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)』という書籍を学習したことについてブログに書きましたが、それを受けて、著者の五十嵐邦明さん( @igaiga555 )から Twitter 経由でコメントをいただきました。ありがとうございました。
著者さん自らコメントをいただくというのはなかなかない経験なのでちょっと驚いています。


そのやり取りの中で『マンガでわかる Ruby(1)』という電子書籍の存在を知る機会がありましたので、今日はそれを学習しました。


booth.pm


本書では Ruby そのものの文法的解説はサラっと済ませており(全100ページ中30ページほど)、残りは「タートルグラフィックス」という専用ツール(gem)を使って、実際にさまざまな図形を書いていきます。
その中で、繰り返し処理(.times)や条件分岐(if 〜 else)、メソッド(def)や再帰関数など、プログラミングの手法を学んでいきます。


f:id:oshimago:20191007163033p:plain


実際にプログラムを”書いた”ことが、目の前でさまざまな図形として”描かれて”いくのは「今、自分が何をやっているのか」、「プログラミングで書いたところが、どこに対応しているのか」などが具体的に明確に分かって理解の手助けになります。
また「ここの部分をいじってみたら図形はどう変わるのだろう?」というちょっとした試行錯誤や改造なども気軽に挑戦できます。


プログラミングの入門書というとどうしても各々の命令の使い方や仕様の解説に終始してしまい少し退屈になりがちですが(>それも大事なんだと思いますが)、本書のように遊び心でいじりながらプログラミングの「コツ」や「ツボ」が体感でき、自由気ままにトライ&エラーができるのはとても有意義でした。


私のような Ruby 初学者だけではなく、小学校高学年から中学生くらいの子どもに「プログラミング的思考」を体験してもらうにもピッタリなテキストになるのではないでしょうか?


ではでは、今日はこの辺で。

『ゼロからわかる Ruby 超入門』2日目。やはり class(クラス)でつまづく。

f:id:oshimago:20191003150402j:plain

ども、id:oshimago です。
軽減税率制度がややこしくてかないません。

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)』という書籍を図書館で借りて昨日から読んでおります。

今日は第6章から。


ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)



第6章は「ハッシュ」について。
これは ドットインストールや Progate で JavaScriptPHP を学んだ時に出てきた「連想配列」と考え方が一緒なので(シンボルとかがあるので厳密にはちょっと違うのかもしれませんが)、そんなに苦労なくすんなりと理解できました。
each メソッドで簡単に繰り返し処理ができるので Ruby の方が直感的で分かりやすいですね。


第7章は「メソッド」について。
これも JavaScriptPHP で言うところの「関数」(function)と使い方や書き方がよく似ているので( function を def に変えるだけ)、ここも特に詰まるところはありませんでした(>厳密には違うんだと思いますが)。


で、問題なのが第8章の「クラス」について。
この章から急にレベルが上がったような気がして、章の中盤で内容が頭に入ってこず、結局章の最後まで読みきれずに諦めてしまいました。
「クラス」、「メソッド」、「レシーバ」、「インスタンス変数」、「インスタンスメソッド」、「クラスメソッド」、「継承」などなど、用語の意味とそれぞれの関係性について把握しきれませんでした。

とは言え「本書の説明が分かりづらい」ということは決して感じず、むしろ他の書籍よりは分かりやすい説明だったと思います。

ですが、「クラスはどういう時に使うのか?」、「クラスを使うことで何が便利になるのか?」というクラスの「そもそも論」が未だに理解できていません。

「クラスを使わずにコードを書くとこんなに複雑でコード量が多くなるけど、同じことをクラスを使って書くとこんなに分かりやすくコード量も少なく書けて便利ですよね!」みたいなビフォア&アフターがあったら良かったです。
文法学習的な例文だけじゃなくて、実例っぽいものが欲しかったです。


なので第9章の「モジュール」のところは残念ながら飛ばしてしまいました。


第10章は Gem ライブラリと bundler、それと sinatraJSON について。
sinatra について調べると「Ruby on Rails の簡易版」みたいなものらしく比較的簡単にウェブアプリが作れるもの・・・らしいです。
sinatra についてはまた機会をみて調べてみたいと思います。


第11章は、例外処理、正規表現などについて。
おそらくいずれはこれらが必要になる時が来るのだとは思いますが、今のところその域に達していおらずいまいちピンと来なかったので、これらについてはざっくりと目を通しただけです。


総括として。
全体としてはとても分かりやすい書籍だったと思います。前書きにも書かれていましたが、著者のお人柄でしょうか、語りかけるような口調(文体?)のおかげですんなりと読み進めることができました。

とは言え、やはり「クラス」に関しては自分にとっては鬼門でした。
本書を何度か読み返してなんとかクラスの部分を攻略したいところですが、図書館から借りている書籍なのでいずれは購入して学習する必要があるかもしれません。

ではでは、今日はこの辺で。

『ゼロからわかる Ruby 超入門』という書籍を図書館で借りてきました。

f:id:oshimago:20191003150402j:plain

ども、id:oshimago です。
ここのところ何かとバタバタしており、プログラミングの学習を少しサボり気味でした。また改めて仕切り直しです。

さて、今日も所用で図書館に行った際にコンピュータ関連の棚を覗いて『ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)』という書籍を借りてきました。
すでに借りている『たった1日で基本が身に付く! Ruby on Rails 超入門』はいったんお休みでこちらから手を付けることにしました。


ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)


すでにドットインストールや Progate で Ruby については軽く触れているので、理解している(つもりの)部分はサラっとななめ読みにしてサクサクと進めています。

今日は第1章の環境設定から第5章の配列用のメソッドまでを学習しました。ページ数でいうとちょうど本書の半分くらいまでです。
ドットインストールや Progate では出てこなかったメソッドなどに出会えたのが収穫でした。

とりあえず今のところはとくにつまづくところもなく順調です。明日もこの調子で頑張りたいと思います。

ではでは、今日はこの辺で。

『たった1日で基本が身に付く! Ruby on Rails 超入門』という書籍を図書館で借りてきました。

f:id:oshimago:20190926112507j:plain

ども、id:oshimago です。
昨日は映画を観に行きました。『ヴァイオレット・エヴァーガーデン 外伝 - 永遠と自動手記人形 -』という作品です。
あまり派手さはないですが、とてもじんわりとする作品でした。よければ是非。


www.violet-evergarden.jp



『ヴァイオレット・エヴァーガーデン 外伝 - 永遠と自動手記人形 -』予告


さて、今日は所用で図書館に行きました。
その際、ついでにコンピュータ関連の棚を覗いてみると、『たった1日で基本が身に付く! Ruby on Rails 超入門』という書籍を見つけました。
「Progate であんなに苦労した Ruby on Rails をたった1日で身に付くなんて!」とまさに私のためにあるような書籍です。
というわけでさっそく借りてきました。


たった1日で基本が身に付く!  Ruby on Rails 超入門

たった1日で基本が身に付く! Ruby on Rails 超入門


前書きを読む限りでは、1章をこなすのに約1時間、これが全8章あるので計8時間=「たった1日」ということらしいです。
土日に集中して取り組めばこなせそうですね。

この書籍で実際に学習に取り組むのは明日以降にしたいと思います。

ではでは、今日はこの辺で。

Ruby on Rails の学習に挫折したので、明日から何を学習しようか?

f:id:oshimago:20190925150125p:plain

ども、id:oshimago です。

前回「Progate の Ruby on Rails のレッスンをお休みする」ということをお話ししました。
で、では今後は何をやっていこうか、という考察です。

===

ドットインストールで1ヶ月、Progate で1ヶ月弱、計2ヶ月弱、プログラミングの学習をしてきました。
おかげで HTML / CSSJavaScriptRuby あたりの入門レベルはなんとか身に付いたかな?という印象です。

私の最終的な目標/ゴールは「オリジナルのウェブサービスが作れるようになる」ということなので、Ruby on Rails はぜひともマスターしたいスキルではあります。
が、前述のように Ruby on Rails は挫折した、というか自分にはまだ早すぎたみたいなので、Ruby on Rails には「その時期」が来たらまた挑戦してきたいと思います。

Ruby on Rails のような本格的なウェブサービスではなくて、ちょっとした小さなウェブサービスなら、ドットインストールで学習した Vue.js や firebase で作れるんじゃないかな?という気がするので、Vue.js や firebase はこれからトライしてみたい気がします。

また、Ruby on Rails にいずれ取り組むためにも、Ruby 言語についてはもう少し足固めをしておこうかとも思います。

「こんな教材がいいよ」とか「あんな学習方法がオススメだよ」というのがあったら是非教えて下さい。

ではでは、今日はこの辺で。

Progate で Ruby on Rails の学習を始めました【4日目】→だけど一旦お休みします

f:id:oshimago:20190925144532p:plain

ども、id:oshimago です。

さて、Progate で Ruby on Rails の学習をはじめて早4日目。
最初は順調に進んできた学習ですが、ここにきてかなり怪しくなってきました。

とりあえず今日はレッスン8をこなしたのですが、これについての理解がかなり怪しい。
自分で今何をやっているのかがかなり曖昧な状態でした。


prog-8.com


レッスン8の次が道場コースの3なのですが、初手でつまづきます。
回答をそのままひたすら丸写し状態なのでまったく学習の体(てい)をなしていません。

道場コースは早々とあきらめて、次のレッスン9に取り掛かるもこれまた壁にぶち当たります。
投稿(posts)と投稿者(users)を紐付けるという内容なのですが、これもちっとも頭に入ってきません。

「さすがにちょっとこれはもう無理だわ」と心が折れてしまい、Progate での Ruby on Rails の学習は一旦お休みすることにしました。
Progate の教材自体はとても良くできていると思います。
ですが、残念ながら自分の知識やスキル(とやる気や根性)が付いていけませんでした。

こういう時は無理にあがかず、気分転換にもうちょっと他のことを学習するか、もう少し簡単なものを学習するか、少し遠回りでもいいので方向転換をした方がいいのかな?と思います。

ではでは、今日はこの辺で。