プリンテイルのtwitterのアイコンステッカーキャンペーンにあたった

ppworksさんのブログ記事でプリンテイルのキャンペーンを知って、試しに応募してみた。

ppworks.hatenablog.jp

結果、

見事当たりましたw とりあえず自分のMacに貼ろうかと思います。もし勉強会などでお会いして欲しい!という稀有な方がいらっしゃいましたら差し上げます。

キャンペーンは2015/3/19までやってるみたいなので当たったお礼に宣伝いたします。

www.ptail.com

kawasaki.rb #21に参加してきました #kwskrb

2015/2/25に開催されたkawasaki.rb #21に参加してきました。kawasaki.rbへの参加は先月から続けてまだ2回目です。

Doorkeeper

Kawasaki.rb #021 - Kawasaki.rb | Doorkeeper

パーフェクトRuby読書会

今日は「3-5-9 擬似キーワード引数」、「3-5-10 キーワード引数」、「3-5-11 仮引数の順序」まで行いました。

キーワード引数の項で、物議を醸し出していたのは下記のようなコード。

def keywords(nil:)
  nil
end

puts keywords(nil: false) # => nil

と、キーワードにnilやtrueなどの予約語を使用することができる一方で、普通に参照しようとしても参照できないという現象が発生するということでした。このRubyの突き抜けた仕様は賛否両論ありそうですが、個人的にはRubyらしくて好きです。

ちなみに

とのことで、どうやら引数としてはちゃんと渡っているようですね。

セッション

Gem::Specification#filesの話 @xmisaoさん

発表の元となった記事はこちら

技あり! gemspec中でファイル一覧を取得する -- ぺけみさお

メジャーないくつかのGemのGem::Specification#filesの指定方法を比較するという興味深い内容でした。 今回紹介されただけでも、Dirによる指定やJeweler、gitコマンドを使った例など、様々な方法が挙げられました。

PumaでActiveRecordErrorが出てハマった話 @ryonextさん

発表の元となった記事はこちら

PumaでActiveRecordのErrorが出てハマった話 - 月曜日までに考えておきます

この発表を受けて、そういえば以前JRuby/PumaでRailsアプリケーションを構築した際に同じエラーに出くわして、Railsのコネクションプールごと潰した経験を思い出しました。

合わせて、下記のwillnetさんの記事も紹介されていました。

最近の Rack サーバ事情について - willnet.in

こちらの記事は、UnicornとPumaの特徴についてとても丁寧に解説されておりとても勉強になります。必見です。

神奈川Ruby会議のアンケート結果について @chezouさん

神奈川Ruby会議の参加者に対して実施していたアンケートの結果について発表がありました。

使用している言語で最も多かったのはやはりRubyで、次点でJavaJavaScriptがほぼ同じという結果でした。 (あと書いたRubyのコード行数とかforkしたGem数とかあったけど失念)

その流れで、kawasaki.rbでも使用していいるnbviewについての発表がありました。発表の元となった記事はこちら。

Docker上にnbviewerを立ててiruby+Nyaplotで描いたグラフを共有できるようにしてみた - once upon a time,

さいごに

kawasaki.rbの皆さまありがとうございました。次回もまた参加させていただきたいです。

Chefをやめてitamaeに乗り換えた

俺はChefをやめるぞ(ry

Puhaar!を置いているサーバの管理をChefでやっていましたが、Rubyのバージョンを変えようとしたところ色々と辛みがあってこれを機にオーケストレーションツールを変えようと思いました。

参考にした記事

導入にあたって以下の記事を参考にしました。ありがとうございます。

itamae-kitchen/itamae · GitHub

Itamae + rbenvでCentOSにRuby環境を構築 - Qiita

何が辛かったの?

Chefは学習コストが高いと言われることで有名ですが、それは初期の導入時のコストだけが高いと思っていたけれど、久々にレシピをいじろうとしたところ何も思い出せなくなっていた。サーバの構成なんて滅多に変更するものでもないので、たまの修正の度に色々調べ直すのは割に合わないと思った。(とくにコミュニティのクックブックを使っているとなお辛い)

なぜitamae?

対抗馬としてはAnsibleもあったけど、itamaeを聞いた時に気になっていたし、何よりRuby DSLで書けるのが魅力的だったので実験も兼ねて今回導入してみることにしました。

itamaeどうなのよ

とりあえずRuby入れるところだけ移行してみましたが、導入はとてもスムーズでした。Gemはせいぜいitamaeと、テストも書きたければserverspec入れるだけで完結できるのでchef-soloとかberkshelfなどに悩まされずに済みます。

レシピの書き方についても、パッケージを入れたりファイルを転送したりは標準でできるので、特に困ったことはないです。(そもそもそんなに凝ったことをしていないけれど)

さいごに

Chefは機能も多くコミュニティも大きいのですが、サーバ1台管理したいだけの僕にはオーバースペックでした。itamaeはシンプルで学習コストも低いので、気になる方は検証してみてはいかがでしょうか。

同僚と2人でやってた「なるほどUnixプロセス―Rubyで学ぶUnixの基礎」ランチ読書会が無事に終わった #naruhounix

ランチ読書会シリーズ2本目。以前の記事でも書いていた「なるほどUnixプロセス―Rubyで学ぶUnixの基礎」が無事に終了しました。記念ついでに感想をまとめます。

なるほどUnixプロセス ― Rubyで学ぶUnixの基礎
Jesse Storimer, 島田浩二(翻訳), 角谷信太郎(翻訳)
達人出版会
発行日: 2013-04-25
対応フォーマット: EPUB, PDF, ZIP

これはUnixと共に歴史を歩めなかった者への救済

とか大袈裟に書いてみました。

達人出版会曰く...

『Working with Unix Processes』待望の完訳。並列処理やデーモン、プロセス生成、そしてシグナルといったUnixの基礎であるプロセスについてRubyで解説する、「今どきの」開発者に向けた新しいUnixプログラミングの手引きです。

とあり、たしかにRubyでコードは書けるけどUnixのことについてはよくわからん、って方向けの内容になっていました。この本を一通り読むと、「cron書くときは2>&1とか付けておけばいいんだよね」とか「Unicornって立ち上げるとなんかプロセスいっぱいあがるよね」とかもにょっとしてた知識の部分が明確になって幸せになれます。

Unixを学ぶこととはプロセスを学ぶことと見つけたり

とか大袈裟に書いてみました。

目次を見ていただけるとわかりますが、この本はほぼプロセスのことについて書かれています。そのUnixプロセスをカーネルのコマンドではなく、Rubyのコードを通して操作するサンプルコードが随所に差し込まれているので、実際にirbなどを通して簡単に動作を確認できることも魅力です。

それよりも、この本で一番面白いところは実は付録の部分だったりします。付録ではResqueやUnicornのコードについての解説があり、これらのGemがどのような形でプロセスを有効活用しているのかなど、より実践的な知識も学ぶことができます。(コードに対して1行ずつ丁寧に解説されているのもありがたかったです。)

おわり

職場とかで「最近の若いものはUnixも知らなくて...」とか言われる人にとってはいいんじゃないでしょうか。馴染みのある言語を使って解説してくれる書籍は学習の入り口としては最適なので、今後もこのような本に出会えるとありがたいです。

(今度は「Rubyで学ぶネットワークの基礎」とか出ないかなぁ...)

神奈川Ruby会議 01参加レポート #kana01

2015年1月17日に開催された神奈川Ruby会議 01に参加してきました。会場はNTTアドバンステクノロジさん提供です。

オフィシャルホームページ

当日のスライドや動画が更新されたようです。

神奈川Ruby会議01 - Home

DoorKeeper

神奈川Ruby会議 01 - Kawasaki.rb | Doorkeeper

Togetter

神奈川Ruby会議01まとめ #kana01 - Togetterまとめ

ペアプロ大会

お題はこちら。

遠い世界の数式

ペアプロは@tfunatoさんと一緒に行いました。実装方針の発想は@tfunatoさんに頂いて、無事に実装&テストを通すことができました。(テストケースは一部しか試せなかったけど...)

ペアプロ終了後に出題者である@Nabetaniさんの解説がありました。

遠い世界の数式 - 実装例

実装例が数行でシンプルに解かれているのがエレガントすぎます。さらっとこういうプログラムが書けるようなエンジニアになりたいですね。

神奈川Ruby会議ペアプロ回答もまとめていただいたので掲載いたします。

神奈川Ruby会議ペアプロ回答まとめ #kana01 - Togetterまとめ

Rubyist入門 2015年版

日本Rubyの会代表理事の高橋さん(@takahashim)による基調講演がありました。達人出版会さんにはよくお世話になっています。

Rubyistという言葉には単にRubyを使っている人、くらいの認識しかなかったのですが、Matzによるきちんとした定義があるのは初めて知りました。この定義で言えば僕はRubyistとしてはまだまだでしたね。励ましのお便りを書く所から始めようか。

なんとなく自分は初級と中級の間くらいに位置している気がします(一応プロダクトを作ってるし)。 なのでこれからはコミュニティとの関わりをもっと増やせていけたらと思っています。

神奈川県内Rubyコミュニティ紹介

Yokohama.rb のご紹介 (@miyohide)さん

  • 2010年10月〜 毎月開催
  • 2014年11月 第50回開催
  • のべ参加者 1000+(!)
  • 活動内容はRubyレシピブック第3版読書会、もくもく、突発的LTなど

DoorKeeper: Yokohama.rb | Doorkeeper

Kawasaki.rb を振り返る 有賀さん(@chezou)

DoorKeeper: Kawasaki.rb | Doorkeeper

Yokohama.rbは過去に1回しか参加したことありませんが、そのときは鍋谷さんがお題を出してペアプロ大会をするという形でした。懇親会も開催されているので、色々な方との会話もできました。

Kawasaki.rbはまだ行ったことがなく、ちょうどパーフェクトRubyを持っていないのでこれを機に参加しようかなーと思っています。

基調講演1「あるRubyistがCommitterになったその理由」 樽家さん (@taru)

普段のお仕事はメーカーをされているとのこと。なんというか、Rubyは普段からバリバリ業務で使っているような人たちだけで作られているわけではなくて、特定の得意分野を持っている人たちの助けもあって作られているということを実感しました。コミッターさんの話は初めて聞かせていただいたのでとても新鮮でした。

トークセッション「Rubyと俺達の生存戦略

このセッションでは、スピーカーの方たちがどのようなキャリアパスを歩んできたか、どのような形でRubyと触れ合ってきたかが語られていました。

個人的に衝撃的だったのは、WantedlyさんではエンジニアだけでなくデザイナやCEOでもRubyのコードを書いているとのことでした。(DBからデータが欲しい時など、エンジニアに頼らずに自分でARやSQLを使うなどしているとのこと)

基調講演2「リメイク版ロールプレイングゲーム ルビーサファイア」 関さん (@m_seki)

スライド http://www.druby.org/RolePlaying.pdf

関さんは「プログラマが知るべき97のこと」の著者の1人でもあります。今回はその本でかかれたエッセイ「ロールプレイングゲーム」のリメイク版ということでした。

基調講演早々にそのエッセイをKyoko(音声読み上げソフト)で読み上げるという新しい形のプレゼンがありました。それにしてもKyokoの読み上げはとても自然に聞こえました。

その後話は「プロの無職」についてとなりました。具体的なタスクは割り当てられず、勝手にコードレビューしたり、困っているメンバーを助けたり(助けるのはリーダーも漏れず)するロールらしいのですが、そういった遊撃隊のようなメンバーがチームに一人いて、なかなか手が回らない環境の整備や唐突にペアプロの相手をしたりしてくれた方がチームとしては円滑に回せるのかなと勝手に納得していました。

さいごに

今回開催していただいた神奈川Ruby会議実行委員の方々、会場提供していただいたNTTアドバンステクノロジさん、ペアプロしていただいた@tfunatoさんありがとうございました!とても貴重な体験ができたので、次回があれば是非参加させていただきたいです。

同僚と2人でやってた「Rubyによるデザインパターン」ランチ読書会が無事に終わった

昨年から「Rubyによるデザインパターン」の読書会をランチ取りながら同僚と2人で実施していて、晴れて完走してので記念に残しておきます。

Rubyによるデザインパターン」とは

Amazon曰く...

スクリプト言語Rubyの持つ力強さ・エレガントさ・シンプルさを、Gofをはじめ従来の代表的なデザインパターンと結合させ、少ないコードでより高度な効果的ソフトウェアを記述する方法を解説します。MetaprogrammingやRails-based Convention Over Configuration patternsなどといったRubyコミュニティから出てきた新しい革新的なパターンも紹介し、Rubyのプログラミング経験をより深く価値のあるものにしてくれる1冊です。

端的に言えば、従来からあるデザインパターンを単純にRubyで書くとどーなんの?さらにもっとRubyっぽく書くとどーなんの?をパターンごとに解説した本です。

同僚とは以前にJavaでのデザインパターン勉強会も行っており、1通りのデザインパターンについては理解した状態で本書に入りましたが、いきなりこの本から入ってしまっても大丈夫そうな印象でした。

従来のパターンだけでなく、DSLメタプログラミング、CoCについてもサンプルコードを通して解説していて、Rubyの魅力満載な1冊となっていました。

ランチ読書会について

互いに業務に余裕がある時に突発的に始める形で、昼食とりながら空いてる会議室の1つのモニター(電子書籍で行っています)を2人で使って一緒に黙読するという形で進めました。 各々でわからないことや気づいたことがあったらそのタイミングで疑問投げてみたり解説したりしているので、なんとなくペアプロしてる感じに似ています。

1日に進める粒度は章ごとが多いのですが、この本は1つの章がそれほど大きくないので調度良いペースで進められました。

次は...

なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会」が手に入ったのでこれを進めていこうかと思います。Ruby好き人間にとってはRubyを通して解説してくれる書籍はありがたいですね。

Rubyによるデザインパターン

Rubyによるデザインパターン

2014年振り返り

簡単に今年の振り返りと来年の豊富。

やったこと

  • 結婚式終えた
  • ネムーン行った
  • 個人サービスPuhaar! オープン
  • 業務の内訳としてはRails:70%、iOS:20%、Java:10%くらい?

個人的には多忙で濃厚な1年となった。 Puhaar!はまだ全然流行らないけど、新しい技術とか取り入れて今後も機能を増やしていくつもり。

行った勉強会

91%横浜道場です。本当にありがとうございました。 結婚式やらハネムーンやらの準備で土日が結構潰れて、Tech系で行けた勉強会はTDDBCだけだった。 来年からはRubyをメインにいろいろ参加できるといいなぁ。

来年やりたいこと

  • 英語上達したい(海外旅行とTDDBCの基調講演でメタメタにされた)
  • Tech系勉強会増やす
  • Puhaar!拡張するよー

それでは来年もよろしくお願いいたします。