WEB+DB PRESS vol.74 に RubyGems について書きました。

ということで、連載一年目の締めとなる記事は RubyGems でした。一度本誌で取り上げたテーマですが、今流行のバッジの貼り方など、より今どきな感じの作り方を紹介しているつもりです。

WEB+DB PRESS Vol.74

著者/訳者:井上 誠一郎 奥野 幹也 田中 慎司 西嶋 悠貴 伊藤 直也 登尾 徳誠 天野 祐介 後藤 秀宣 ヒノケン 近藤 宇智朗 近藤 嘉雪 渡邊 恵太 堤 智代 中島 聡 A-Listers はまちや2 川添 貴生

出版社:技術評論社( 2013-04-24 )

大型本 ( 184 ページ )


今回の号から伊藤直也さんと言う有名なエンジニアの方の連載が始まっており、第一回はRubyMotionに関する記事を掲載されています。特集以外の連載記事にRubyに関する話題が二つ載っていると言うわけです。ウェブアプリケーションや開発におけるRubyの存在感がこう、じわじわきてるんだなあと感慨深いものがあります。

連載の話に戻りますが、せっかく一周年と言うことで、ちょっとした記念企画をしています。これまで5回で取り上げたテーマ

  • Padrino
  • ActiveSupport
  • Pry
  • Rack
  • Ruby 2.0

に関するトラックバックを今回のgem特集の本文中に仕込んであります。探し物がお好きな方は、是非見つけてみてください(実は編集さんにも言わずに仕込んであります。と言いつつ、気付いてスルーしていたりして…)。

また、1ページ長めに誌面をいただいて、最後に僕が常々思っていることを少しだけ交えてみました。一部引用します。

少し話が大きくなってしまいましたが、1つの小さなRubyのgemを公開することが、もしかしたら巡り巡って自分自身や世界を変えることにつながっているのではないかと、筆者はこう思うわけです。恐れずに、ぜひ、何かを書いてみてください。

Enjoy Programming!

具体的にどんなことを言っているかは、是非、手に取ってご確認いただければ幸いです。

* * *

大きく提出を遅らせることも無く、無事に6回の連載を終えることができました。一定の反響をいただいているようで、ひとえに読者の皆様の応援と、査読者の皆様、編集者さんのおかげだと思います。と言うと紋切り型の感想になってしまいますが、そう言う思いでいっぱいと言うのが正直な感想です。

後ほどこのブログで簡単な振り返りをしたいところですが、まずは、査読者の皆様への謝辞を:

  • @tyabe さん(いまやPadrinoの日本語情報はtyabeさんが主導していると思います。ありがとうございました)
  • @ffu_ さん(ActiveSupportの回です。また飯食いましょう!)
  • @tkawa さん(Rackの回は、HTTPやRESTに造詣の深いtkawaさんに助けられました)
  • @kyanny さん(今回の査読をしていただきました。無事献本をすることができました。鋭い指摘、ありがたかったです)
  • @ainame さん(初回で切れ味の良い指摘をいただいて以来、無理矢理主任査読者のお願いをしたり、特集に巻き込んだりしてしまいましたが本当に助かりました。ありがとうございます。トラジ行こう)

そしてまさに二人三脚という表現がぴったり来る感じで、様々なアドバイスをいただいた担当のニタサカさんには感謝をしてもし切れません。1年間ありがとうございました!

次回以降の動きについても色々決まっていますが、追ってお知らせすることができると思います。まずは振り返りですかね…。

 

WEB+DB PRESS vol.73 に Ruby 2.0 について書きました。

一部の方への見本誌等はすでに届いているものと思いますが、標題の通り、連載の記事としてRuby 2.0について書きました。

WEB+DB PRESS Vol.73

著者/訳者:設樂 洋爾 白土 慧 奥野 幹也 佐藤 鉄平 後藤 秀宣 mala 中島 聡 堤 智代 森田 創 A-Listers はまちや2 大和田 純 松田 明 後藤 大輔 ひろせ まさあき 小林 篤 近藤 宇智朗 まかまか般若波羅蜜 Mr. O

出版社:技術評論社( 2013-02-23 )

大型本 ( 192 ページ )


まつもとさんも取り上げていた、

  • キーワード引数
  • Enumerator::Lazy
  • Module#prepend
  • Refinement

の4点を中心に取り上げています。サンプルコードはなるべくオリジナルを目指して頑張りました(特にprependのやつは編集さんに褒めてもらえた)。若干の「移行の手引き」的な内容もあります(と言っても気になった非互換性を取り上げただけですが)。

早速ですがサポート情報

Refinementの仕様に関して、記事の内容ではぼくの誤解が残ったままとなっております。まずは、この内容は、将来刊行予定の総集編では修正されること、また、WEB+DB PRESSサポートページのサンプルコードでは対応していて動作可能なことを周知したいと思います(02/22 リンク追加)。

具体的には、Ruby 2.0 のRefinementについて、以下の仕様(Refinementのモジュール/クラス内部スコープ) は 2.0 では入りませんが、2月23日発売予定号での記事の文言とサンプルコードは以下の仕様を前提としています

  • require "refinement"が必要である
  • Refinementの有効範囲について、「Module#refineが宣言されたModuleでは有効」である
  • Class#using により、当該クラス内部でのみRefinementを有効化できる

本誌 128 ページの左段と右段一番上のコードはそのままでは動作しないものとなっています。代替となるコードを以下に示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# main.rb
def assert_equal(a, b)
  puts "#{a} should be #{b}"
end
 
module InchAvailable
 refine Fixnum do
    def inch
      self * 2.54
    end
    alias inches inch
  end
end
 
require './sample_class'
 
begin
  p 3.inches
rescue => e
  puts "*** should raise error outside", e.class, e
end
 
puts "*** ok if defined inside, but used outside"
assert_equal SampleClass.get_price_from_inch(10), 254.0
 
using InchAvailable
puts "*** ok after main.using"
assert_equal 3.inches, 7.62
 
# sample_class.rb
using InchAvailable
puts "*** inside sample_class.rb"
class SampleClass
 
  assert_equal 3.inches,  7.62
 
  def self.get_price_from_inch(size)
    10 * size.inch
  end
end

Qiita にもミラーしてあります。また、RefinementsSpecの記述とサンプルもご確認ください。

なお、本誌 128 ページの右段中部、「特定の範囲で外部コマンド実行を禁止する」のコードは、require "refinement"の箇所以外そのまま利用できます(すなわち、トップレベルの関数的メソッドを Object のrefineで上書きすることが可能です)。

と言うことでこの点にのみご注意ください。他のコードは、Ruby 2.0.0-p0 on Mac OS X Lion にて動作確認してあります(02/25 updated!)。

他の件でも、「何これ?」等あればお気軽に @udzura や、繋がりがあればfacebookの方でお知らせいただければと(可能ならはてブのコメント以外を希望……)。可能な限りサポートしていく所存です。

あわせて Rails 4 特集も!

の通り、@a_matsudaさん、@idesakuさんによるRails4特集記事も掲載されていて、空前のメジャーバージョン期™にふさわしい号となった感じがします。ぼくも話を聞いた時から期待していた記事で、いち読者として早速読んでみたりしています。

それから、WEB†PRESSでのRuby連載で有名な@june29パイセンと@kei_sパイセンと同じ“号”(と書いてRailsと読む)に載ることができたのもぼくにとっては記念です。(余談ですが、しだらさんは某A社での前のチームでの上司と繋がりがあるそうなので、機会があればお会いしたかったりします……)

ということで

今号もよろしくお願いします!

Ruby 2.0 を調べていて思ったこととしては、本当にワクワクする要素が盛りだくさんなリリースなんだなあ、ということでした。

ぼく的に本当に気に入っているのは(やらかしてはしまいましたが)Refinementで、最初にRubyのコード

1
2
3
3.times do |i|
  puts "Hello!"
end

を見たとき以来のワクワクする感じがあります。

Ruby 2.0 は、1.9系で動作する多くのプロジェクトにおいては非常に少ない対応で動かせるはずですので、是非使ってみてください!

To Be Continued……

連載もいよいよ次回で第6回、果たして継続なるか……?? 乞うご期待!

 

Web+DB Press vol.72 にコードレビューについて書きました&簡易ふりかえり

そもそも6月からWeb+DB PressさんにRubyの連載をさせていただいていますが、今回、特集のコードレビューについても書く機会をいただきました。

WEB+DB PRESS Vol.72

著者/訳者:近藤 宇智朗 生井 智司 Dr.Kein tokuhirom 森田 創 中島 聡 堤 智代 A-Listers はまちや2 竹原 川添 貴生 久保 達彦 道井 俊介 飯田 祐基 中村 知成 規世 やよい 後藤 秀宣 天野 祐介 奥野 幹也

出版社:技術評論社( 2012-12-22 )

大型本 ( 208 ページ )


今回の特集は、 Aiming に2月に入ってから最も印象が強かった開発上の習慣、コードレビューについて、入社当時から今までに考えたこと、思ったこと、勉強したことなどをまとめさせていただく形で書きました。

今回、なんだかんだで苦労もあったので、せっかくなのでこの場を借りて振り返りをしてみます。

Read the rest of this entry »

 

Qiita 使ってます

プログラミングに関する小ネタとかは全部Qiitaに書いています。そうすると、こちらのブログに書くことが無くなるわけです(…)。

Qiita いいね

Github風マークダウン的な何かをサポートしているのでカジュアルに記事が書けます。あと、ストックとかで承認欲求がどんどん満たされて凄い。

Qiita に、Organization相当の機能があれば、たとえば会社の開発ブログの代わりにできるのでもっと良さそうに思いました。

 

shibuya.rb[:20121017] でgerritについて話した

発表 ↑ です。ヒカリエ相変わらず奇麗で良いですね。なんか来週も行くかと思いきや会場変更ですが(急でスミマセン……)……。

Read the rest of this entry »