せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【パーフェクトRuby】を読んで4ヶ月後に起こったこと。

■topic
I studied about the book which name is perfect Ruby.
I write what I think.


このブログは、普段は、私せかいが勉強した事をまとめているブログなのですが、
今日のこの記事は
「パーフェクトRuby アドベントカレンダーブログ」の12/24日分になります。
パーフェクトRuby Advent Calendar 2013

前の日の23日の記事はこちらです!
私には愛するRuby(うた)があるから信じたこの道を私は行くだけ 〜パーフェクトRuby Advent Calendar 2013 12/23〜 | Kwappa研究開発室
 
 

技術系Advent Calendarとは

一般的なAdvent Calendarは,12月25日のクリスマスを楽しみに待つために,12月1日から24日までのカレンダーの日付の部分を開けるようになっており,1日ずつその日の日付の部分を開くと天使や動物の絵などが見えるという仕組み。
これに発想をえて,技術系Advent Calendarでは基本的に,12月1日から25日までの25日間,プログラミング言語縛りなどの簡易なルールで,毎日別の人が自分のblogにて記事を書くという形式です

http://gihyo.jp/news/info/2013/12/0101

このサイトには上記説明のほかに、
技術系アドベントカレンダーの一覧が記載されています。
 
 
ふむふむ。
私もようやく概念が最近分かりました。
そんな自分がほぼ トリ、の24日のアドベントを書くなんて。
びっくり。
勧められた当初はアドベントカレンダーという概念が分からなくて
なんとなく後ろの方の日付に登録しただけなのは秘密です。 

 

ここまでの経緯

自分がTwitterにて、転職する事をtweetしました。
 (このあたりの経緯は転職エントリを作る予定!)

という感じ。
 
そうなのです。


どうなのです?
 

「あんなに書いてもらったのに」

この本は、Ruby知識がゼロで、初めて選んだ参考書でした。

何もかも訳が分からなかったので、ブログに一つ一つ書いて確かめる日々が続きました。
http://sekai.hateblo.jp/archive/2013/8
この↑8月の目次をみただけで、雰囲気はつかんでいただけるかと思います。
1つでも開ければ、どんなに愚直に内容をレビューしているか分かると思います。

読み終えた後に偶然 作者の一人、寺田 玄太郎(hibariya)さんに会う機会があったのですが
周りの方に「せかいさんは馬鹿みたいにパーフェクトRubyの感想を書いている人」
と紹介してくれて、すごく嬉しかったです。
いいよねー。
馬鹿みたいに突き進めるのって。

そんな感じで、この本を頼りに暗闇を突き進んでいきました。
勉強を始めるにあたった経緯は、初日にまとめています。
【Ruby】パーフェクトRuby 学習感想文 ~はじめに - せかいや
 
他にも、Amazonのレビューも書きました

 
相当縁深い本です。
難しすぎて2キロ痩せたし

今回アドベントを書くにあたり改めて15章16章を読み返し、
初心に戻って学習記録を書きました。
【Ruby】パーフェクトRuby 学習感想文 ~第15章 改めてその1 - せかいや
【Ruby】パーフェクトRuby 学習感想文 ~第16章 改めてその1 - せかいや

  

全体を通して

やっぱりまだまだ改善の余地はある本だとおもいます。
(このブログでもいくつかメモしている通りです。typoも含めて)。
作者が大勢いるので雰囲気も分断されているし、
説明や注釈があっちゃこっちゃ行っている感もあります
(本で一番最初に出てきた時点では注釈がなく、
後から出てきた時点で注釈が記載される。nilとか)。
2版に期待したいです!
でも言語仕様の解説にとどまるO'Reilly本と比べると、
かなり実務的な所も含めて内容がてんこもりなので、やっぱり読んでよかったです。

振り返ってみて、ベストな読み方は、

初めてのRuby

初めてのRuby

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

プログラミング言語 Ruby

プログラミング言語 Ruby

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

この順かな。。

「初心者向け」であるべきか

パーフェクトシリーズって、
「その言語が初めてでも学べるシリーズ」として認知されていると思うのですが。

パーフェクトJava
パーフェクトJavaScript
パーフェクトPHP
パーフェクトRuby

を勉強した結果、必ずしもそうではないかな、と思いました。
「その言語が初めてでも学べる」レベルで整理されているのは、

かな。

でも、「パーフェクトJava」はこれが理解できる初心者って!?
というレベルでした。
このあたりは、ここあたりでまとめているかな。。
【Java】改めてJavaを振り返る。パーフェクトJava学習感想文 その1 - せかいや

なので、、「パーフェクトRuby」が必ずしも完全に初心者向けでなくても、
それはそれでありなのかなと思いました。
 
それぞれの詳しい感想は本の名前でブログ内検索すると見つけられます。


そんな感じです。
体当たりでこの本にぶつかっていった、とある凡人の記録です。

来月からはクックパッドのエンジニアになります。
クックパッドで働きたくてRubyの勉強を始めたので、本望です。

 

今後の目標

主作者のすがさんにあって、お礼を言う!


以上です。

【Ruby】パーフェクトRuby 学習感想文 ~第16章 改めてその1

それでは16章を改めて読み返してみよう。
(参考・経緯など)
パーフェクトRuby 学習感想文 ~はじめに
 

サンプルコードのtypo

リスト16.5内
誤 :els e
正 :else

サンプルコードを片手に読み進められるからすごい楽!助かる!
http://gihyo.jp/book/2013/978-4-7741-5879-2/support

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう を読んでから16章を読むと、理解できて嬉しい。
rackもSinatraも、特に怖がらずにつきあえそうだ。

でも、言語内DSLはやっぱり理解がきつい。
書いてある通りに実装を進めたらすいすい行くけど、いざ自分で"こういうことはできるのかな"と思ったときに、困ってしまう。
結局何のコンテキストで実行されているのか、とか分からないし。
基本的なメソッドもがんがんオーバーロードされてるし。
Railsマジックと言われているのもよくわかる。
このあたりは記憶してなんぼ、という感じでもある。

師匠が

言語内DSL、もーマジ全然意味不明っす。

ってRailsに苦しんでいる理由がよく分かった。
一緒に勉強しよう!

さてさて、、

p602 rackupの方法

この構成でrackup して画面にアクセスしてみましょう

というところは、実際は bundle exec rackup コマンドの実行なので、
その旨をすこし添えてもらえたら、嵌らなかったかな。

 

p612 誤植だと思う

誤 :# lib/application.rb
正 ;# lib/views/index.haml
 

p612 誤植だと思う

誤 ;# lib/views/index.haml
正 :# lib/application.rb

おしまい。

【Ruby】パーフェクトRuby 学習感想文 ~第15章 改めてその1

それでは15章を改めて読み返してみよう。
(参考・経緯など)
パーフェクトRuby 学習感想文 ~はじめに
 

サンプルコードがDLできる

作者のすがさんが、

あまり知られていないかもしれませんが、サンプルコードは以下からDLできます
http://gihyo.jp/book/2013/978-4-7741-5879-2/support

http://sugamasao.hatenablog.com/entry/2013/12/01/004407

と言っていますがいやいやいやいや!
この情報むちゃくちゃ大事ですよ!
すがさんのGitHubを探しにまで行った自分。。

発刊したてのときに技術評論社のHPをさがしても見つけられなかった。たしか。
これはぜひ本に一言添えていただきたい!お願いします。
15章、16章の理解度合いが格段に違います。

 

P552 誤植だと思う

誤 :find_tasks ではstatus_id にステータスを渡して
正 :find_tasks ではstatus_is にステータスを渡して

 

P556リスト15.9 誤植だと思う

誤 :DB.prepare$
正 :DB.prepare

 
サンプルコードがあると理解が格段に違う!
嬉しい!
前に読んだときはコードが間違えてる??って思った所も、
サンプルコードで全量みたら自分の誤りに気づいたり。よかった!

 
前に、p556を読んだときにはどうしてモジュール名が突然変わっているの?って混乱していたけど、これは

Module
  Class
    Module

という構成だったんだ。
ふむふむ。
モジュールの中にさらにモジュールを作る、、
本に載っていなかったので、この本から勉強をスタートした自分には分からなかった。

15章終わり。

【リーンスタートアップ】

■summary
study about lean startup

料理レシピサイトを運営するクックパッドは、「リーン・スタートアップ」を実践する企業として知られている。同社に入社する社員は、書籍「リーン・スタートアップ」を入社前に読むことが推奨されており、

http://itpro.nikkeibp.co.jp/article/COLUMN/20120712/408814/

ということで読んでました。
 #日経BPに書いてあるくらいだし、、

リーン・スタートアップ

リーン・スタートアップ

ふむふむ。

前にベンチャー畑の友達に、自分の新サービスのアイデアを持っていったときの話。

「XXXXみたいな機能を考えてるんだけれど、言語解析とか難しそうだなと思って
実際どうすれば実装できるのかはよく分からない」
という私に、

「そんなの、いくつかの品物にしぼって最初は人間がやれば良い。
1日5品づつデータがたまっていったら十分機能として活用できる、
自動化は後から考えれば良い話」
と言われて、なるほどなあと驚いたのですが、
そのことを思い出しました。

井上さんの本を読んだときも、
必ずしもアプリができている必要はなく、紙で説明しているチームも多かった
と書いてあったっけ。


この本にクックパッドの事例が書いてあるみたいだから、読んでみます。
Webサービス開発徹底攻略 (WEB+DB PRESS plus) 大型本

おしまい

【Ruby】まつもと直伝 プログラミングのオキテ 読書メモ

 
■topic
study about this page -> http://itpro.nikkeibp.co.jp/article/COLUMN/20070604/273453/?ST=oss&P=5

Mac慣れない。。SOS
 XoX


 

もう一つのDSLの実現方法はインタプリタを用意するものです。とはいえ、毎回アプリケーションごとに言語を文法から設計・実装するのも大変なので、定型の文法を採用して、ライブラリ・ルーチンを使って読み込みます。
 具体的には文法にXMLを使って、DOM(Document Object Model)などのXML処理ライブラリを使って文法解釈を行います。Javaアプリケーションの設定ファイルにXMLが採用される理由の一つがこれです。

ふむふむなるほど!

言語を使ってDSLを実現する
 例:Rubyを使ったRuby
 
インタプリタを使ってDSLを実現する
 例:XMLを使ったJavaXMLパーサーを使って文法を解釈)

という感じかな。
だからこそRubyは「言語内」DSLなのか。

【読書】【誤字リスト】ロンドン起業日記 ヨーロッパで絶賛、奮闘中

■topic summary
I read the book -> ロンドン起業日記 ヨーロッパで絶賛、奮闘中!

自分の参加しているRubyの勉強会達人出版会の方が来られており、
最近発行されたから、とお勧めされていたロンドン起業日記 ヨーロッパで絶賛、奮闘中!をよみました。

企業とか特に考えたことはないけど、お勧めされてるからには読んでみようかなと思って。

 
Web界隈って言うのは、ベンチャーと言うにもまだ早い、
いわゆるスタートアップと言われる「ビジネスの芽」を作る人、それに投資する人が何かをやってる所、、
正直言ってちょっとうさん臭さもあるような、すごい人たちでもあるような。
まあどのみち自分には関係のない話だろうと思っていたのですが、開けてびっくり。
平易な語り口や必ずしもうまくいっていない日々に、予想外の親近感を覚えながら読み切りました。

自分で起業してる人、私の周りにも何人かいるけど、
「なんかすごいことしてるなあ」程度の距離をおいていました。
でもこの本はいい話のネタになりそう。
実際作者の井上さんはお会いしたことがないのですが、
知り合いの起業している連中に置き換えて想像していましたw

投資家にプレゼンするためにプロダクトを作る様子や、それらが予想以上に”プロト”であることが新鮮でした。
ハッカソンっていう単語の意味も初めて知った。
工作大会みたいなんだね。
Railsに慣れたら参加してみようかな。


以下は気がついた誤字。
よりよくするために、ここに書いて作者の井上さんに連携しようと思います。

誤字一覧

その時もらった解答は
→その時もらった回答は


実際に友達の何人かからはは「それって
→実際に友達の何人かからは「それって


現在はラップトップスタンドとかキーボードの備品を交渉中
→現在はラップトップスタンドとかキーボードの備品を交渉中です


現実はきびしー
 →現実はきびしー。


「好きって」いってくれる人が
→「好き」っていってくれる人が


はいけないんでしょうね。がんばれ自分
→はいけないんでしょうね。がんばれ自分。


この戦略は以外と功をそうし、
→この戦略は意外と功を奏し、


そしていよいよ木曜日のデモ
→他のセクションの区切り具合からみるに、この文章から、別のセクション(17.4)にするべきでは


重用ししています。
→重要視しています


アプローチしずらかった。
→アプローチしづらかった。

以上です。

【Safari】【モバイル対応】モバイルだと、returnが使えない。

 
■topic summary
the code which work in PC but not in iPhone(safari).


 
自分のサイトで、
true時の実行カッコ内にretrunを記述することで、
trueのときはこれ以上処理を進ませない実装にしていた。

if(hurl!="" && $(hurl)[0]){$("#loadingWrap").remove();return}
hogehoge...

これだとPCでは動くんだけど、モバイル(iphonesafari)では動かない!

 
結局こうやって、returnをやめてelse節を使う(ネストを深くする)ことで解決。
モバイルでreturnを使えない理由は、良く分からない。。。

if(hurl!="" && $(hurl)[0]){$("#loadingWrap").remove()}else{
	hogehoge
}

不細工になったけど。

コード全量はこちらです