第55回 Ruby/Rails勉強会@関西
第55回 Ruby/Rails勉強会@関西に参加してきました。今回は尼崎だったのでずいぶん近く。近くだと楽で良いです。最近は遠かったから……というわけではなく仕事と重なったりして久しく参加できていなかったので久々に行けてよかったです。
今回面白かったのはFixnumのobject_idが2n+1になっているとか。他は4の倍数だからぶつからない、へー。つまり、奇数のリストが欲しかったらこんな風に書けるわけですね。
(0..100).map{|x| x.object_id}
Bignumになると困るのでよい子は真似しないように。Bignumの場合は同じ値でも値が一定でないようです。
あとは、hashの値は32bitマシンなら32bit、64bitマシンなら64bitになるとのこと。自分のクラスに hash メソッドを加えないといけないようなときは、変に計算式考えるよりインスタンス変数をArrayに突っ込んでArrayのhash取るようなことをするのが安全なようです。
ところで、最近はLTがあるの? いいな、LTならなんかしょうもないことしゃべりたいな。
kobo touchふたつが並びました。片方がかずひこさんのフランス版のkobo touch (not 楽天)で、片方が僕の日本版のkobo touch (楽天)です。かずひこさんのが日本語表示になっていて、僕のはフランス語表示にしてあります。ところでフランス語の書籍は買えるのかな? 買えたらいいな。アラビア語は無理かなあ。
名前重要
コードをシンプルにすることは重要だ。誰しもがコードを読むのにできるだけ時間はかけなくないと思っている。もしコードを読むのが大好きで大好きで仕方ないという人がいたとしても、同じ時間をかけるのならたくさん深く読めたほうがいいでしょう。それにどうしても時間をかけて読み解かなきゃいけないコードがあったとしたら、誤解してバグを埋め込んだりする危険性も高いはず。じゃあ、どうやったらコードをシンプルにできるのか。
その入り口が名前重要と思っている。「名前重要」といってもおおまかに3段階ぐらいステップがある。
- 正しい名前:内容に合った名前を付ける
- いい名前:内容が一目で分かる、区別できる名前にする
- いい構成:いい名前が付けられるような構成にする
まずは名前を付ける2つ。引数にBoolean値をとってtrueなら電気が付き、falseなら電気が消えるなら何という名前を付けようか。method1(x)とか、push_button(x)なんて関数名では何をしたいのか分からない。たまに「turn_on_light(x)」と付ける人がいて引数なしで電気が付くのなら問題ないけれど、falseだと消えるとはなかなか気づかない。せめて「switch_light(x)」とか付いても消えてもいい名前を付けたい。
こんなレベルでも、最初は引数なしで turn_on() だったものが引数付きに変わったときに関数名をそのまま残してしまって残念な状態になることは多い。気をつけよう。
ひとつひとつの関数の名前としては良くても、似て非なる関数がたくさんあるときに似たような名前が付いていて「何が違うんだ? いつどっちを呼べばいいの?」となっていることも多々ある。コメントで何が違うか丁寧に解説するのもいいけど、まずは名前で区別できるように検討してみよう。
名付けに気をつけるようになったら、次は名前を付けられない変な関数・巨大な関数が気になってくる。それはたいていの場合、関数の設計自体が悪い。単一の機能ごとに小さく分解したり、意味がまとまりそうなところだけまとめて一段階上の名前を付けるなど、「いい名前がつけられる」ような構成を作ることがすごく大事。たいていの場合、名前を付けられないということはいろんなものがごちゃごちゃになっていて構成が悪いのだ。
端から端までいい名前が付けられたらいいのだけど、なかなか現実は難しい。せめてコードを書くときには動けば良いやと書きっぱなしにしないで、いい名前は付けられているだろうかと自問して進むようにしたい。
俺の話を聞け!2012 に行ってきました。
ウェブに関連して発表したり聞いたりするイベント、俺の話を聞け! 2012に行ってきました。
ノリで「発表します」のほうにも書いてしまったので、うーん、なんか話すネタあったかなあと考えたあげく、"World Wide" Webについてだらだらしゃべってきました。思ってたよりウケたのでよかったよかった。
「僕の場合はいろいろオープンにしてる人なので、写真撮ってアップしてくれてもいいですよー」というのを言おうと思っていて言い忘れてました。もし迷ってる人がいたらどうぞ。
話題に出したサイトはこのあたりです。
- Welkom bij Facebook - Meld je aan, registreer je of ontdek meer
- AJE - Al Jazeera English
- Lang-8 - Multi-lingual language learning and language exchange | Lang-8
さて、Web系勉強会。Webといっても、プレゼンの仕方からデザインの話、鉄道モデリングや恋人獲得法までいろいろあるものです。えっと、何の勉強会だっけ。もちろんBootstrapとかWebまわりの最近の技術もたくさん。でもWebっていうのは自由なもんです。おやつもいっぱいありました。
Web系の仕事をしてるわけではない僕でも、出てくるものはどこかわりと身近なんですよね。そして、冒頭でmsngさんが言ってた「自分にとっての当たり前は、他人にとっては当たり前でない」というのがすごく分かるイベントでした。
カメラピープルが欲してるWebサービスとか、すごく楽しい。
そして懇親会は無限手羽先でした。けっこういっぱい食べたよ!
第52回 Ruby/Rails勉強会@関西に行ってきました
第52回 Ruby/Rails勉強会@関西に行ってきました。
今回は関西Ruby会議04のおかげもあって初めて来られた方が多かったです。こうやっていろんな新しい人が入ってきて盛り上げてくれると、すごくわくわくしますね。
Herokuにデプロイ
déployer ってなんて発音するのかな? といきなり振られて、とっさに「え、でぷろわいえ」と言える程度にはフランス語脳が残っています。フランス語もちょろちょろ使いたいなあ。
それはさておき、デプロイ。Rails界隈はgemを管理したりとかいろんな便利なツールがあるもので、Herokuに乗っけるのもけっこう簡単にできるのだろうな。今までいろいろ紹介されてたツールとかがだいぶ頭の中で繋がってきて、「ああ、そういう感じなのかー」と分かってきました。しかしRailsに全然触れていない、ちょっとくらいその簡単さに触れてみたいなあ。
jQuery
- Ruby3.1のデフォルトになったので使おう
- $("li:even") とかで、適用範囲を簡単に選べる、便利
- 要素にCSSいろいろ適用
これは便利そう。JavaScriptもなかなか面倒だからね。Rubyで簡単なものを作ったら、さくっとWebベースにしてjQuery使ってちょっと飾ってみたらちょっと面白い感じになりそう。
minami.rb ハッカソン中継
マイク重要。
同日のイベント中継って面白いけど内輪な感じになりすぎがちなので、初めて来た人が多いときだったのはちょっとタイミングが悪かったかなあ。でも、ハッカソンでできあがるものがどんな感じになったのかはみんなすごく気になっていたよう。どうなったんだろう?
初心者レッスン
- 文字列について
- エンコーディング要注意
- String#each_codepoint 初めて知った。
Ruby (not Rails)だと、使用頻度が高いのは文字列ですよね。例題やるときは、対象となる文字列を用意するのが一番けっこう困ったりする。「行数を数えよう」といったときの、最初に用意する複数行の文字列とかね。
そしてTAっぽくやっていましたが、他人の書くコードを見ていると人それぞれ癖があっておもしろい。とにかく
class String def count_line end end
とか書き始める人とか。比較的単純なときは irb でやっちゃって、少しひねりがでてきたら irb -r とかを使って、とかそういうお手軽な方法を紹介するのもいい役目ですね。