6月30日に開催された、Ruby勉強会@札幌-26に参加しました。
前回は参加できなかったのでなんだか久しぶりでした。勉強会そのものが久しぶり。
新しいMacBook Airをはじめて持っていった勉強会です。(Rubyの環境セットアップだけしてあった)
初めてのRuby読み合わせ
7章:メソッドの 7.1.4 引数展開 から。
マシンを入れ替えたばっかりで、読み合わせしながら書いたソースコードがTerminalの履歴から全部消えてしまっていた…
けっこういろいろ面白いことをやってたのに。
引数展開
*修飾によって、配列に格納された値を引数として展開することができる。
Ruby1.8までは、修飾付き要素は引数の最後でなければいけなかったけど、Ruby1.9からは位置も回数も自由。
配列から引数リストへの自動的な展開はされない。
params = [1,2] #=> [1, 2] x, y = params # 代入できる #=> [1, 2] x #=> 1 y #=> 2 def some_method(x,y) return x + y end some_method(x,y) #=> 3 some_method(params) # 呼べない ArgumentError: wrong number of arguments (1 for 2)
メソッドの定義
メソッドは def – end で定義する。
return を書かない場合、メソッドの最後の式が評価されて戻り値となる。
なので、最後に評価される式を戻したい場合、returnは書いても書かなくてもよい。
…のだけれど、実際省略するかどうか、という話をしました。
自分は if文などでreturn式が分かれる場合は、両方にreturnを書くなあ。
(というか、単純なロジック以外は明示的に return 書いている方が多い気がする)
あとは、例として書かれていたコード
def fact(n); (1..n).inject(1){|p, i| p*i} end}
から、injectの使い方とか、文字列の場合はどうなるかであるとか、色々なコードを書きました。
こんな感じのを色々試したと思う。
(1..10).map(&:to_s).inject(){|p,i| p + i} # => "12345678910" ("1".."10").inject(){|p,i| p + i} # => "12345678910" ("1".."15").inject(){|p,i| p + i} # => "123456789101112131415" ("-1".."15").inject(){|p,i| p + i} # => "-1-2-3-4-5-6-7-8-9" ("-1".."1").inject(){|p,i| p + i} # => "-1" ("-1".."-10").inject(){|p,i| p + i} # => "-1-2-3-4-5-6-7-8-9-10"
130ページ「多値の返却」の前までで時間切れとなりました。
@hmskさんのお話
この日は、東京から参加していた@hmskさんが、
勉強会の3日前、2013年6月27日に正式にローンチした決済システム「WebPay」についてのお話をしてくれました。
自分自身は「Webサービスで決済システムを実装した/する」経験はないのですが(外部サービスに飛ばすだけ…はやったことがあるような気がしないでもない)、決済をするコード例をみると非常にシンプルで使いやすそうでした。
また、現在の開発体制についても話してくれました。
4人のうち3人がオフィスで一緒に暮らしている、というのが一番衝撃的でした。
衣食住を共にしながらプログラミングも一緒にしながら…四六時中一緒….(自分には無理そうだ)
役割分担としては、4人ともコードがかけるので必要に応じてフルスタックで動いてるとのこと。
常に競争しながら、でも一丸となっている強いチームだなあと感じました。
この後に公開された、このインタビュー記事にもサービスや思いについて詳しく書かれていました。
“「技術者として、過去の自分を救いに行く作業だった」(濱崎氏)” カッコイイ!!
WebPayの導入事例としてSAKELIFEという素敵なサービスを教えていただけたことも良かった….!!
@sumimさんのお話
Smalltalkの歴史を紐解くお話。
様々な言語の祖先、アイディアの発祥となっているのだということを知りました。
Smalltalk-72という非アスキー文字を使ったプログラムは見ていて面白かった。
指とか目とか、何だこれは….!
これもプログラミング言語になるんだ….!という驚き。
Smalltalk-72については @sumimさんの記事がとても詳しいです。
その他キーワードのメモ
- Smalltalkで最初に実行された式は 3 + 4
- すべてがメッセージという概念
- XCodeの中身はまるまるSmalltalk
- コピペはSmalltalkが発祥
- 似ているところとぶっ飛んでいるところ(Rubyと、かな?)
- オブジェクトの全能性にguiを添えるだけという方向性
「小さい子供使えて、その子が大きくなっても使えるようにという思想」というのがいいなあ。
おもちゃのように遊ぶこともできるし、大人になって高度なプログラミング言語としても使える。
@sumimさんの話を聞くたびに、なぜか、合宿などをして、夜中に居間のような所に集まって、ゆっくり話を聞きたいなあと思うのでした。(座学形式だと理解できないところも多いからかなあ)
今回も楽しかったです。
次回も楽しみ。