【Ruby】コーディング規約に違反したものを自動的に正しいものにする

RuboCop

Rubyのコードがコーディング規約にあっているかどうかチェックしてくれるツールとして有名なRuboCop。チェックだけなの?簡単なものなら修正してくれたらいいのに...と思っていたところ、そんなオプションが有ることを最近知りました。

Automatic Corrections

詳細は、RuboCopのWikiページを読んで欲しいのですが、-aオプションを付けるだけ。自動修正してくれるものは先ほどのWikiページの下の方にかかれています。結構たくさんありますね。

ただ、これは...

ただ、-aオプションでは全部の自動修正が行われます。例えば、文字列を"(二重引用符)から'(引用符)に変換だけしたいときどうすればいいんだろう...とツイートしたら、ありがたいことに教えていただきました。

やり方は-aのあとに、--onlyとつけて、変換する名前をつけるだけ。

今日も一つ勉強になりました。

【個人的メモ】公にする情報の取り扱い方

これはなにか

@bash0C7さんのブログエントリ「仕事で公にしていいことは公開された場所で議論をしていきたいが」を読んで色々と思ったことを書いたものです。全然まとまっていないので、個人的なメモ。

前提

そもそも、「公にしていいこと」とは何か。例えば所属員の給与とか査定情報とかは「公にしてはいけないこと」の代表かなと思う。「公にしていいこと」とは、「誰が現在、どのようなタスクを持っているか」とか、「こんな仕事の話があるんだけど...」とか。

人それぞれ

世の中、いろんな人がいるわけで「俺は今の仕事のことしか知りたくない」といった自分オンリーな人もいれば、「周りの人がどのようなタスクをこなしているのか」といった極力情報を公にすることを求める人もいます。

個人的には後者依りな考え方をする人だし、後者のほうがメリットが大きいと考えているんだけど、自分が興味ないことについて永遠と話聞かされても辛いよなとは思います。

メリットとデメリット

情報を公にするメリットで思い当たるのは、

  • 「え?俺、その情報知らない」と言ったような人に対する情報の伝え漏れが防げる
  • 「Aさんにはこのことを伝えるけど、Bさんには伝えない」と言った情報統制の必要がない
  • 情報を持っている人が権威者になってしまうことを防ぐ

の点だと思っています。

権威者ができると、どうしてもその人に向けての仕事をするようになるので、無用な権威者は作りたくないなという思いがあります。

一方でデメリットは、

  • 興味が無い人にとっては情報がノイズとして捉え、邪魔に思えてしまう

な点が思いつきました。

ノイズの許容量については人それぞれなので、「スルー力が足りないだけ」って言うのは集団で働く会社って組織の中ではあまり解になっていないです。もうちょっと良い方向の解決案がある気がします。

その解決方法は?

ノイズに対する許容量はトレーニングによって増やせると思っているので、一気に情報を流すんじゃなくて、徐々に流していくって形を取っています。今のところ、定期的に時間をとってみんなの話を聞くって場を開催。

本当は、もっとカジュアルにやりたんだけど、「うるさい」っていう人もいたり、脱線しまくって本論を忘れたりするし。

RubyWorld Conference 2014で喋ってきた

はじめに

f:id:miyohide:20141124212917j:plain

2014年11月13日(木)-14日(金)で開催されたRubyWorld Conference 2014に参加し、喋ってきました。発表者として参加するのは2年連続、カンファレンスに出るのは4年連続。年間イベントの一つとなっています。

喋る経緯

喋る事になったのは、上司の軽い「ゆー、喋っちゃいなよ」という軽い一言から。採択されたら旅費も出してくれるし、ちょうどいいかと思い応募資料を書きつつ、関係各位にOKを取り、応募資料を提出。ありがたいことに採択されました。

応募について

RubyWorld Conferenceという場は半分以上がスーツな人なので、その人向けに話すことを前提にすると良いのかなと思っています。例えば、RubyGemsの詳細な使い方を説明してもあまり響かず、それよりかは「Rubyを使ってこんなシステムを作りました」という事例紹介のほうが響くような気がします。ただ、Rubyをつかうことは既に当たり前の状態になってきているので、そこからどうやって独自性を出すかがポイントになるような気がします。

で、発表募集要項を見ると開発事例以外にも教育とか研究とかの話題があります。ちょうど私が所属しているOSS推進フォーラムアプリケーション部会にて、ベンチマークをやっていてJRubyでやった例はあんまり無いかなぁと思ったのでそのネタで応募することにしました。

発表について

発表時間は25分、質疑応答は5分という枠なのですが、しゃべろうと思うと結構資料から話す内容は削る必要があります。発表においては、JRubyにおけるPassenger、Warbler、Pumaの3つを取り上げましたが、実際のところは、Javaアプリケーションを載せたベンチマークだったり、CRubyにおけるPumaのベンチマークも取りました。後、Ruby Benchmark Suiteの結果についても色々と語ることがあったのですが、時間の都合上カット。

それでも、本番は全然時間が足りず、28分ぐらい喋ってしまいました。後半はかなり早口で置いてきぼりにしたかなぁと思ったりしています。Pumaが早いってことが伝わったからいいのかな?ここらへんは再考の余地がありそうです。

実況ツイートについて

で、実況ツイート業で名前が売れた自分にとって、今回も自分の発表を自動実況ツイートしようとしたのですが、何故かうまく動かず。エラーも吐かずにツイートしてないってなんで〜と発表中に思いましたが、修正する時間なんて当然ないわけなので、とりあえず突き進みました。う〜む、残念だった。

苦しんだところ

JRubyに関してはあまり実績データがなく、この設定で大丈夫かいな?と思うところが多数ありました。今でも設定に自信はないのですが、まぁ動いているし(^_^;)

あと、JRubyの問題でメモリリークの問題があり、単調増加的にメモリ使用量が増えることが長い間存在していました。この問題はJRuby 1.7.15で解決したのですが、解決してなかったらJRubyのデメリットが強調されるので、大変助かりました。こういうのはやった人だけが分かる話。

資料の公開とデータの公開について

ありがたいことに、発表が終わってから色々とご指摘を頂きました。発表資料とかデータの公開についてはこの記事を書いている2014年11月24日時点で準備を進めていますので、今しばらくお待ち下さい(SIerの面倒くさいところの一つですm(_ _)m)。後は、RubyWorld Conferenceのページで公開されるかも。。。ここらへんはどうなるんだろうなぁ。
なお、メールとかでよろしければ、個別に送信しますので、Twitter(@miyohide)やメールなどでご連絡ください。

来年について

来年も喋ることができたらいいなぁと思っていますが、はてさて。なにせ松江にタダでいけるし。機会があれば。

Yokohama.rb #50を開催したって話だけだとつまらないので、紹介された本をまとめてみた(あとスライドも)

50回目のYokohama.rb

50回目のYokohama.rbを2014/11/8(土)に開催しました。

普段は20名も入ればいっぱいな神奈川地区センターの和室でやるのですが、今回は50回という記念すべき会ということもあって、 @1syo さんによる発案でLT大会をやることになりました。

自分を変えた一冊

LT大会のテーマは自分を変えた一冊。というわけで、このエントリーでは上がった本を記していきます。私が読んだ本については一言コメントを。

ソフトウェア開発者採用ガイド

ソフトウェア開発者採用ガイド

Webにあるゲリラ的雇用面接のすすめを読んでもいいかな。このJoel on Softwareは読み始めると時間があっという間に過ぎてしまう。

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタが分からないときに読んで目からうろこだったなぁ。

エキスパートCプログラミング―知られざるCの深層 (Ascii books)

エキスパートCプログラミング―知られざるCの深層 (Ascii books)

これは未読。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

アジャイルとは何かということを知った一冊。

ジョジョは読むべきかなぁ。未読。

普通の奴らの上を行け!

千住博の美術の授業 絵を描く悦び (光文社新書)

千住博の美術の授業 絵を描く悦び (光文社新書)

未読。

メタプログラミングRuby

メタプログラミングRuby

メタプログラミングの楽しさを知った一冊。洋書だと第2版が出てますね。買ったのに積読中orz

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

もう一冊Ruby系のレシピブックがあるけど、何か言語を身につけるときはレシピブックをひと通りやればいいかなと思ってます。

Lean Analytics: Use Data to Build a Better Startup Faster (Lean Series)

Lean Analytics: Use Data to Build a Better Startup Faster (Lean Series)

何かの機会で読んだ。訳書がほしい。

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

すみません、未読。

思考の整理学 (ちくま文庫)

思考の整理学 (ちくま文庫)

学生の頃に読んだ。丸善本店に行くと必ず平積みになっている名著。何回読み返しても良い。

プログラミング作法

プログラミング作法

読んだような気がする。あんまり覚えてない。

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

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

会社の研修でもらった。デザインパターンを知った一冊。

投資戦略の発想法―ゆっくり確実に金持ちになろう

投資戦略の発想法―ゆっくり確実に金持ちになろう

未読。タイトルだけで読みたくなる。

Rails3レシピブック 190の技

Rails3レシピブック 190の技

いつぞやのRubyKaigiでサインもらった。これでRailsを使えるようになった気がする。

映画で見た。本は未読。

マネジメント[エッセンシャル版] - 基本と原則

マネジメント[エッセンシャル版] - 基本と原則

1回読んだけど、さっぱりってな感じ。もしドラのほうが私にはあっているような。今読むと違った読み方ができるかな。

もしドラ。ストーリーに突っ込んでは負け。

Yコンビネーター シリコンバレー最強のスタートアップ養成スクール

Yコンビネーター シリコンバレー最強のスタートアップ養成スクール

積ん読中。

プログラミングRuby―達人プログラマーガイド

プログラミングRuby―達人プログラマーガイド

未読。C拡張のことが書いてあるらしい。

JavaWorldメモリアルDVD

JavaWorldメモリアルDVD

JavaWorldは昔、Java技術者だった頃よく読んだなぁ。

Ruby逆引きハンドブック

Ruby逆引きハンドブック

レシピブックは写経してこそ真価を発揮する。

XPエクストリーム・プログラミング入門―ソフトウェア開発の究極の手法

XPエクストリーム・プログラミング入門―ソフトウェア開発の究極の手法

XPエクストリーム・プログラミング入門―変化を受け入れる

XPエクストリーム・プログラミング入門―変化を受け入れる

  • 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2005/12
  • メディア: 単行本
  • 購入: 3人 クリック: 55回
  • この商品を含むブログ (67件) を見る

XP。最近のプログラミング手法のベースとなっている本だと思う。

新・C言語入門 シニア編 (C言語実用マスターシリーズ)

新・C言語入門 シニア編 (C言語実用マスターシリーズ)

K&Rが分からなくて大学生協C言語を勉強するときにはじめて読んだ本。個人的にはあまりしっくり来なかった。

スライドとか資料とか

@1syoさん

@tyabeさん

@chezouさん

@masa_iwasakiさんのブログ
Yokohama.rb 第50回LT 〜自分を変えた一冊〜 · sleep rand(1.year)

@joker1007さん

reveal.js - The HTML Presentation Framework

@muryoimplさん

まとめ

思いの外、IT系以外の本が出てきてびっくりしました。教養ってものになるのかな。

残念ながら絶版になった本もありますが、「この本は必ず読んでおけ!」ってな扱いではなくその本を読んでその人が何を感じ取ったかが重要だったかなと思います。

Togetter

いつものようにTogetterです。

『Everyday Rails RSpecによるRailsテスト入門』をひと通り読んだのでその感想をでも

はじめに

Everyday Rails RSpecによるRailsテスト入門』という電子書籍をひと通り読み終わりました。ページ数は約150枚(PDFにて)程度ですので、ぱらぱら〜とひととおり見るのでしたら数日で読み終わることでしょう。


Everyday Rails… Aaron Sumner 著 et al. [Leanpub PDF/iPad/Kindle]

今回は、週1回2時間ほどのペースで写経しつつ読み進めたのでだいたい半年ぐらいかかりました。

総括

Railsアプリのテスト入門書として最適かなと思います。値段も20$程度ですし、バージョンアップ対応も随時実施されています。こういう技術書においてバージョンアップ対応というのは大変ありがたく、「同じようにプログラムを写経したのに動かない!」という問題が避けるというメリットがあります。

対象読者について

1.イントロダクションの『対象となる読者』にも書かれているように、Railsアプリは1〜2個程度書いたことがあるんだけど、テストは書いたことがないという人向けです。テストへの取り組み方に対して著者自身の考えを明記している(1.イントロダクションの「私が考えるテストの原則」)があり、それへの反対意見があることも承知のうえで書かれていることが印象に残りました。

写経について

本書の写経は他の本と比べると特徴的です。ゼロから構築するのではなく、すでにあるアプリケーションに対してコード(今回はテストコード)を追加するという形になります。この形は結構新鮮で、テストを書くことに本の目的を絞った取り組みとして素晴らしいアイディアかと思います。

ただ、一度はアプリケーション自身を動かしてみると良いと思います。本書内でも記述はあるのですが、実際にブラウザで操作してみることで、どのようなアプリケーションなのかを実感するためです。いきなりテストを書くというのはちょっとイメージしづらいかなぁと。

本書のGitHubのページにテストコードが書かれていますが、写経自身については自らの手でやったほうが良いです。テストが書けるようになるためにはある程度量をこなさないと行けないと(私は)考えています。折角の機会なので、経験を積むという意味でやってみると良いかなと。

なお、私は自分のタイミングでコミットすべく、「01_untested」ブランチをexportして、git initしました。こんな感じです。

mkdir ~/rspec_rails_4_export
git clone https://github.com/everydayrails/rspec_rails_4.git
cd rspec_rails_4
git checkout -b untested origin/01_untested
git archive untested | tar -x -C ~/rspec_rails_4_export
cd ~/rspec_rails_4_export
git init

内容について

「3.モデルスペック」から「5.コントローラスペックの基礎」ぐらいまではサクサクと読み進められますが、それ以降は内容が省略されすぎていたり、逆に細かすぎる印象を受けました。
例えば「7.コントローラスペックのクリーンアップ」の「contacts_controller_spec.rb」のアウトラインを見せる部分は必要?と感じました。一方で、DatabaseCleanerの説明にはより詳しいものがほしいなと思いました(鍵マークとしてリンク先があるのですが、本文中で語って欲しかった)。

日本語版について

翻訳はこなれていますので、かなり読みやすいかと思います。1点、説明が長文に及んでいる部分において、行間が詰まっている感じがしました。適宜、1行ぐらい空行があってもよいかなと感じたりします。

サポートについて

翻訳者の伊藤淳一さんが、Twitterをさーちされているのか本書のことを話題に出すとmentionを頂くことが多々ありました。これに甘えてはいけないなぁと思いながら、ちょっぴり期待してた麺もあります(^_^;)

また、繰り返しになりますが、バージョンアップ対応も地味に嬉しいサポートです。これがあるお陰で周りや初学者にも安心してオススメできます。

さて次は...

本書の末尾に書いてありましたが、「Rails 4 Test prescriptions: Build a Healthy Codebase」にチャレンジしてみようかなと思います。積ん読の消化が必要ですが。

ひょっとするとブラックフライデーサイバーマンデー?)でセールがあるかも。それがあるまではちょっと買うのを控えようかな。

TOEIC400点から700点に上がったのでその勉強方法を記す

はじめに

先日会社で受験したTOEIC IP試験で700点をGetしました。まぐれかもしれませんが、結構頑張ったことなので、エントリとしてあげておきます。

3年前にTOEICを受けた時は400点だったので、3年で300点あげました。進みは遅いので、即効性のあるものではありません。「来月までに何点上げないといけない」という人には向かないかなと。

単語

単語を知らないとヒアリングもリーディングも点数は取れないので、まずは単語力をあげることが必要と考えました。私がやっているのはiKnowです。

一日1時間程度問題をこなし、例文を音読します。大体移動時間でやるので、音読というよりかは声にならない感じで口を動かすって感じになります。

単語は1回やっておしまいというわけではなく、繰り返しやります。学習プログレスのリセット機能を利用して、終わったコースを何度も解き直しています。

文法

文法は、Forestが有名かと思いますが、英語を何年も離れていた人がこれを読むのはかなり辛いです。

総合英語Forest 7th Edition

総合英語Forest 7th Edition

TOEICの文法は中学校でならったものぐらいしかでないと言われていますので、まずは足場を固めるようにしましょう。私は、「新TOEICテスト中学英文法で600点!」を読みました。

新TOEICテスト中学英文法で600点!

新TOEICテスト中学英文法で600点!

TOEIC対策

TOEICは形式が決まったペーパー試験ですので、ルールがたくさんあります。問題がどのように出題されるか、どの文章が読まれてどの文章が読まれないか、時間配分などさまざまです。古い本で書かれているテクニックが現在は使えないもの(リスニング中にリーティングの問題を読んだり回答をしたりすること)などがあります。

私は、実際の試験を受けてみて、自分の立ち位置を知るようにしました。大体3回ぐらい受験すると慣れるかなと思います。

試験問題もある程度定番化されています。そのため、TOEIC対策本をやると定番化された問題パターンとその回答パターンを身につけることができるかと思います。

本は様々なものがありますが、「究極のゼミ」シリーズが私にはマッチしました。これを何回も繰り返して解いています。

TOEIC(R)テスト 究極のゼミ Part 3 & 4 (CD・DL特典付) (TOEICテスト 究極シリーズ)

TOEIC(R)テスト 究極のゼミ Part 3 & 4 (CD・DL特典付) (TOEICテスト 究極シリーズ)

4冊あるので、2周目に入るころには問題と答えを覚えているというのはあまりありません。

Podcast

ESL Podcastを聞いています。遅めのペース->各文の解説->ノーマルスピードの順で英語を読み上げてくれて、20分ぐらいの番組。本文が公開されているものを中心に聞きながら音読をやっています。時間があったら和訳も。

意味がわからないまま聞き流すことは時間の無駄なので、本文が公開されていないEnglish Cafeは聞いていません。

NHK教材

今年4月から始めたのですが、「攻略!英語リスニング」をやっています。教材はAmazonKindle化されていて、CDもiTunesでオーディオブックとして販売されているので、いつでも始めることができます。

ただ、この電子書籍iTunesで販売されているオーディオブックはちょっと使いにくいです。ページ送りが重かったり、特定トラックの呼び出しができなかったり・・・。ちょっと試してみて、我慢できなければ本やCDを買うという運用をするとよいでしょう。

この教材のいいところは長めの英文とシャドーイングやリピート&クックアップという訓練ができるということ。もちろん、一人でもできるのですが、音声教材から「では、やってみましょう。」と言われるとサボらずにやれる気がします。

ロギング

勉強をしたということをログに残してSNSに公開しています。使っているツールStudyplusTwitterとかと連動して、記録を公開すると勉強していないことのプレッシャをかけることができます。

全体的に

いろいろな教材をやっていますが、全体的にやっているのは音読です。リスニングとリーディングだけのTOEIC試験に発音は問われないので、音読は無駄ではないかと思っていましたが、「攻略!英語リスニング」で言われている「口に出せる英語は聞き取れる」を心情に実践しています。

移動中など、声に出せない状況もたくさんありますが、そのときでもなんとなく口を動かすと意味があるような気がします。