読者です 読者をやめる 読者になる 読者になる

つぎのステップへ移行する?

ドットインストールのRuby入門を一通り見終えました。
かなり理解があまいので、今後も繰り返し参照していきたいと思います。

さて、入門がおわったということで、次はどうしようか……と思っていたところ、ドットインストールにはrailsの講座もある!ということで、こちらの動画を一本見てみました。

railsではhtml,css,javascript,それからSOLiteについての基礎的な知識があるといいでしょう。」

まじか……!
いままでRubyしかさわっていない人間にはまだrailsは早かったのか!?

おとなしく、「たのしいRuby 第5版」を引き続き進めていこうと思います……

アウトプットがないと不安

ミニツク」や「たのしいRuby 第5版」でクラスについてお勉強中です。
メソッド、クラスと進むにつれ、写経するにしても書き写す分量が多くなっていきます。

paizaラーニング」ではそれぞれの単元ごとに実際にプログラミングを自分で書いてみるという形の確認テストがあったのですが、テストという形でアウトプットしてみないとはたして自分がどこまで理解しているのか不安になりますね。
「ミニツク」にあるテストも、実際に手を動かして試しつつ受けたほうがいいかもしれないな…これまで、実際にRubyを動かしてしまうとカンニングになるような感覚があって、コードを書かずに淡々と問題を解いていました。

そろそろまただれてきそうなので(早い)、他にも無料の学習サービスはないかな~と思っているところです。

jsonファイルについて

今日はスクーのRuby入門の開講日。最終回。

schoo.jp

内容は一時間目がjsonファイルについて、二時間目がこれまでの講座の総まとめでした。
前回、RubyAPIについては「な、なんかライブラリとかあるらしい……」くらいの漠然とした理解(印象?)で終わってしまいましたが、今回のjsonのお話はとてもおもしろかったです。
これまでの学習では、Rubyコマンドプロンプト上でひたすら書いて出力して…という感じだったのですが、webサイトの情報を読み込むという体験を初めて行い、「Rubyと普段見ているWebサイト」が繋がるような感覚を覚えました。たくさん公開されているというwebAPIをどのように利用するかについて具体的なイメージができたわけではありませんが、普段使用しているさまざまなサービスもRubyと繋げられるのかも!となんだかワクワク。

総まとめの方は、時間の都合で途中退室。。。。休んだ回(メソッド、クラス)の説明は聞きたかったのですが。。。そういえば、「数字はアンダーバーで区切る」ということはすっかり忘れていたので、ああ!と声をあげてしまいました。

それにしても、毎週二時間授業があるというのはとてもいい環境だったなあと思います。また続きの講座とかやるのかな?ぜひ、やってもらいたいものです。

メソッドのことをわかってあげたい

ミニツク」を見ていて、メソッドのことがよくわかっていないな、という気がしたので、「たのしいRuby 第5版」や「ドットインストール」でメソッドのおさらいをすることにしました。

といっても、具体的に何がどうわかっていないかもわからず、なんとなくわかっていない気がする……というほんとうにわかっていない時の状態に陥っているため、わかっていることを自分なりに順番にまとめていってみたいと思います。(間違っているかもしれない)

  • メソッドとは、オブジェクトを操作するための命令のようなもの。オブジェクトの種類(クラス)によって、実行できる命令は異なる。
  • 「メソッドを受け取るオブジェクト(レシーバと呼ぶ).メソッド名(引数…)」の形で記述する。
  • do~endで記述される「ブロックつきメソッド」がある。(each、loopなど)
  • メソッドにはオブジェクトをレシーバーとするインスタンスメソッド、クラスをレシーバーとするクラスメソッド、レシーバーのない関数メソッドの3種類がある。
  • メソッドを定義するときは、以下のように記述する。
    def メソッド名(引数1,引数2…)
        実行したい処理
    end 

……この、メソッド定義からやや理解があやふやになってしまっている気が。
そもそも、なんとなく使っていたけれど、引数ってどういう意味だっけ?と調べてみると、引数とは、メソッドに渡す情報のことを指すらしい。もともと、引数という言葉がメソッドに結び付いたものだったんですね。
そして、メソッドを定義する際、実行したい処理にあわせ適切な数&順番で引数を渡してあげることが重要になる、と。

こうしたことを意識しながら、改めて「ドットインストール」のRuby入門#18「メソッドを作ってみよう」を見てようやく腑に落ちたような気がします。メソッドを定義するとき、外からカスタムできる「オプション」をつけたい場合、引数を与えてあげるといいと考えるとわかりやすいと思いました。

引数の渡し方やデフォルト値の設定など、メソッド定義における引数の扱いについてはまだまだ勉強すべきことがたくさんありますが、今回は基本をあらためてしっかり復習したところで終了。あいかわらずのゆるゆるです。

 

コードガール、クリアしてしまいました。paizaではほかにもゲームが公開されているみたいなので、また新しいのをはじめてみようかな。どれも美少女ゲーっぽいですね。

paiza.jp

for文での降順?

今日は予定があったため、コードガールを少しプレイした程度。その中でひっかかったのが「forを使い、5から1の数字を順番に出力してください」という問題。

for i in 5..1
p i
end

 これだとエラーになってしまうんですね。
仕方ないので、

for i in 1..5
    i = 6 - i
    p i
end

と記述したら、きちんと出力されたものの、なにかもっとシュッとしたやり方はないものだろうか……。「Ruby for 降順」と調べてもなかなかそれっぽいものは見当たらず。
for i in[ 5,4,3,2,1 ]という書き方もできますが、それもちょっと不格好ですよね。

 とりあえず、n>mのとき、n..mという書き方はできないというのが本日の学びでした。

trueかfalseか、当てさせてくれ

比較演算子の優先順位は

!>&&>||> not > and = or 

ミニツク」で条件判断の項目についておさらいしていたのですが、最後の演習問題で「この式はtrueを返すか?それともfalseか」という問題がたくさん出てきたのですね。これが、めちゃくちゃ楽しい……!永遠に、trueかfalseか当て続けたいと思ってしまいました。いっそ、Rubyになりたい。

 だいたい躓くときは上記の優先順位を間違えているときなので、忘れないように記事の一番上に記しておきました。これに関しては、覚える以外にどうしようもありませんものね。

文字列とシンボル

今日も「ミニツク - Rubyのe-ラーニング研修システム」を読みながら、基本の復習。
昨日のSchooの講座で配列とハッシュをやったこともあり、とくにこの2点についていろいろと試してみたりしました。

ところで、「ミニツク」のハッシュの項目を読んでいてはじめて

・シンボル
・文字列

の違いにぶつかりました。

これまで、シンボルの存在を知らずにハッシュを書いていたのです。
そのため、たとえば

hash = { name: "山田", furigana: "yamada"}

のようなハッシュを書いたときに返ってくる[:name]がシンボルだとわかっていませんでした。ハッシュはこうやって書くものなんだな、といった程度の理解。

ところが、[:~]というのはシンボルで、文字列とは異なるというではないですか!

ですから、上記の例だと、

hash = { name: "山田", furigana: "yamada"}
hash = { "name": "山田", "furigana": "yamada"}

のふたつは異なるんですね。

何も考えずに「こういう書き方をするんだ~」と鵜呑みにしていたため、上記のキーが文字列ではないことを意識すらしていませんでした。

ちなみに、文字列とシンボルの違いについてはこちらの記事が大変参考になりました。

qiita.com

コードガールがやたら「Time.now」を使う問題を出してくるので、Timeにちょっと慣れてきた気がするのがうれしいです。