「Crafting Rails 4 Applications」をオンライン読書会で読み終わりました

はじめに

「Crafting Rails 4 Applications」という本を、先日読み終わりました。

f:id:miyohide:20151103212416j:plain

今回、この本を読み終わるために、オンライン読書会という手法を使わせていただきました。このエントリーでは、読み終わるためにやったことを記します。

本の紹介

「Crafting Rails 4 Applications」は便利なツールを作ることを通してRuby on Railsの内部構造を解説していくという1冊です。The Pragmatic Bookshelfにて発売されており、DRMフリーなPDFが購入できます。

pragprog.com

Ruby on Railsを勉強しはじめ、RailsTutorialを一通りこなした人が読むと良い本と紹介され、読んでみることに。洋書ということもあり、英語の面が気になりましたが、

  • サンプルとして公開されている部分を読むと、辞書片手に読めなくはないと思った
  • ソースコードとテストコードがそれぞれ丁寧に書かれているので、最低でも何かモノが作れる

という思いがあり、読み進めることにしました。

挫折しないために

それでも洋書は読み続けることは難しいです。和書でさえ積読にすることが多いのに、洋書を読み進めることができるんだろうかと不安になっていました。

ちょうどその頃、 @tatsuoSakuraiさんが「オンライン読書会で読み進めませんか?」というお誘いをいただき、それに乗っかってみることにしました。

オンライン読書会とは

我々がやったオンライン読書会は、月に2回それぞれ1時間の枠でWebチャットのLingrに集まり、本を読み進めるというものでした。

当初は本文を1文1文訳していましたが、さすがにそれだと進みが悪かったです。そこで、参加メンバーが固定化された時からは、ある程度予習していることを前提に、「ここはこういうことを書いていますよね?」という形で段落単位でざっくり読み進める形にしました。

また、ソースコードが出てきた時には写経をしました。写経には5分や10分程度の時間を取り、実際にソースコードを入力し、実行します。

写経は、本に書いているソースコードを自分で入力するということだけですが、実際にテストを動かしてみると失敗したり、異常終了したり。本に書いていないことが次々と起こります。理由はいろいろありますが、

  • 単なるタイポ
  • 本が書かれた時とはフレームワークやライブラリがバージョンアップし、仕様が変わった

が主な原因だったように思います。後者は特に原因追求が難しいので、最初は本に書かれているバージョンで写経すると良いかなと思います。 ただ、それだけでも写経は意味があるものと思っています。特に本に書いていない挙動を起こすと必然的に本を必死で読み返し、ソースコードの意味を理解しようとするので、写経の際にわざと間違えてみるというのも良い勉強方法では?と思ったりします。

予習

オンライン読書会の進め方が変わったことも有って、予習をちゃんとするようにしました。 自分がやったのは、読書会の前になると定期的に該当ページを印刷し、わからない単語は辞書で調べ、意味が通る日本語訳にするようにしておきました。こういうときにDRMフリーのPDFが買えるのはいいですね。

もちろん、全部きれいな日本語訳にできたわけではないですが、わからないところと印をつけておいて、読書会で聞くようにしました。

それにしても長かった

第1回の読書会が2013年8月19日、終了したのが2015年11月2日でしたので、かれこれ2年以上やりました。流石にひと月に2回、1回1時間という枠だと短い感じがします。オンラインという特性を活かして、もう少し頻繁にやっても良かったのかもしれません。

謝辞

それでも、2年以上続けられたのはオンライン読書会に参加してくれた人が居たからです。企画者である@tatsuoSakuraiさんやRuby on Railsの最新動向に詳しい@y_yagiさん、英語訳について適切な指摘をくれた@netwillnetさんには助けられました。ありがとうございました。

積読消化合宿というのをやりました

はじめに

9月4日(金)の夜から6日(日)にかけて、積読消化合宿というのをやりました。積読合宿とは、技術書なり小説なり、買ったことに満足して読み終わっていない本、いわゆる積読を消化することを目的に温泉旅館に篭って本を読むことです。

f:id:miyohide:20150906161546j:plain

場所

温泉で有名な熱海にしました。理由は色々とあるのですが、

  • 温泉があること
  • 金曜日の夜に移動しても十分早い時間に到着すること
  • 料理が美味しそうなところ

といった感じで適当にネットで引っかかった場所を選択して、泊まることにしました。今回は湯宿一番地さんにお世話になることにしました。

www.yuyado-ichibanchi.jp

f:id:miyohide:20150906161602j:plain

いわゆる開発合宿ですと、

  • 無線LANが整備されていること
  • 机と椅子があること

って言ったこともポイントになるのですが、各人思い思いの本を読むだけでしたらそういう点は考えなくてOK。普通に旅行気分で行きました。

今回、読もうと思っていた積読本は以下のものです。

Effective Ruby

Effective Ruby

  • 入門React

入門 React ―コンポーネントベースのWebフロントエンド開発

入門 React ―コンポーネントベースのWebフロントエンド開発

一昔前でしたら、本を持っていくというのはかさばるし、重いしで億劫だったのですが、昨今の電子書籍とガジェットの普及により、紙の本を持って行かなくても良かったのは楽でした。

代わりに電源については気を配らないといけないので、電源タップにAnkerのUSB充電器を持っていって電源難民にならないように対応しました。

結果

目標としていたもののうち、メルマガと『Effective Ruby』は読了。『入門React』は半分まで読むことが出来ました。

5名で行ったのですが、みんなが本を読んでいると「自分も読まなきゃ!」という思いが出てきてゆるい強制力のもと本を読むことが出来ました。Twitterやテレビなどに逃げることができないという環境が作り出せたので、たぶん、一人だと難しかったかなと思います。

また、ちょっと歩くと海に出ることができるので、読書に疲れたら散歩と称して気分転換。汗を温泉で洗い流してまた読書に戻るということで、ドンドン本を読むことが出来ました。

f:id:miyohide:20150906161551j:plain

感想

当初の目的である積読消化はだいたいクリアでき、気分もリフレッシュ出来たので大成功だったのかなと思います。毎週末やるってわけにはなかなか行きませんが、1年に1回はこういう風に本を読むという場を設けても良いのかなと感じました。

Atom Editorへの乗り換えを考えている その2

やっぱり機能拡張があると嬉しい

AtomにはPackageと呼ばれる機能拡張がたくさんあるみたいで、8月30日(日)時点で2,600件ほどあるみたい。いろいろと入れて便利にしようと、Packageを探す旅に。

とりあえず、色々と入れてみて試したものを記します。

atom-runner

編集中のプログラムをショートカットキーで実行できる。実行結果は画面が分割されて右に出てくる。

f:id:miyohide:20150830173826p:plain

file-icons

ファイルのアイコンを変更できます。視認性だいじ。

f:id:miyohide:20150830173905p:plain

file-types

拡張子とファイルの種類の関連付け。積極的に入れた覚えがないんだけど、なにかの依存関係で入ったのかな?

git-control

AtomにGitのGUI環境を提供してくれる。とりあえず入れてみた感じ。あんまり活用していない。エディタの部分で右クリックして「Toggle git-control」を選択すると出てくる。

f:id:miyohide:20150830174103p:plain

git-plus

Gitの操作をコマンドパレットから行うことができるPackage。Atomでは「cmd-shift-p」でコマンドパレットというものが呼び出され、現在開いている画面に関連した内容が列挙されます。

f:id:miyohide:20150830174341p:plain

そこで、「git」と打てば、Gitに関するコマンドが入力できるというのがこのPackage。

f:id:miyohide:20150830174453p:plain

language-javascript-jsx

Reactのコードを書くときにSyntax Highlightが欲しかったので。

linter

シンタックスチェックなんかを行ってくれるPackageの基盤となるもの。実際には、言語に合わせたPackageが必要。

linter-jshint

JavaScriptのLinter。JavaScriptのLinterって色々種類があるようだけど、特に思いはなかったのでJS Hintで。こんな風にエラーが出ます。

f:id:miyohide:20150830174726p:plain

linter-ruby

RubyのLinter。こんな風にエラーが出ます。

f:id:miyohide:20150830174554p:plain

open-recent

最近使ったファイルを開くってもの。

f:id:miyohide:20150830175421j:plain

tabs-to-spaces

タブとスペースとの相互変換。

まとめ

とりあえず、現状で入れているPackageを書いてみました。まだまだAtom一本で生活するってほどではないのでこれぐらいの数で済んでますが、依存度が高くなるとPackageが増えてくるかもしれません。

Atom Editorへの乗り換えを考えている

はじめに

ある日何を思ったのか、Vim Pluginの更新をしようとneobundle updateをかけたらよくわからないエラーメッセージが出ちゃいまして。

そこでエラーメッセージを解決するのが正しい姿かと思うのですが、「おれはエディタのメンテをしたいんじゃない、単にコードを書きたいだけなんだ」という思いのもと、Vimからの脱却を考えるようになりました。

そこで目につけたのがAtom。周りでも乗り換えている人が多いので、自分も乗り換えてみることにしました。

なお、ここでは、Atom 1.0.7を使いました。

エディタに求めること

普段の生活を見直すと、エディタを使うシーンは色々ありました。

  • WindowsMacで動いて欲しい
    • 会社ではWindows、家ではMacを使っているので。
  • 設定が楽であること
    • なんちゃらrcとかのファイルをあまりメンテナンスしたくない。
    • とはいえ、複数のマシンで使ったりするので、設定は何らかの形で共有化したい
  • RubyやGo、JavaScriptのコードを書くこと
    • ある程度補完が効いて欲しい。do - endとか{を入れたら}が入力されるとか。
    • ショートカットキーを入れたら、スクリプトが実行されると嬉しい。
  • Markdownを書く
    • プレビューしたいなぁ
  • VMやサーバにあるファイルを編集する
    • これはVimかなぁ。

Atomでやったこと

  • [Atom] - [Preference]で[Settings]画面を出し、フォントとThemeを設定
    • [Font Family]の欄に直接「Ricty」と入力する。ここ、フォント設定パネルとか出してほしいなぁ。
    • Themeはhttps://atom.io/themesからよさ気なものを選択してインストール。
    • インストールは、[Install]で[themes]を選択してキーワードを打つと出てくる。インストールすごく楽。
    • Themeの適用は[Themes]から。
      • Macだとデフォルトでよさ気なんだけど、自分のWindows環境だと黒がだいぶ強め。入力欄が見にくい。
      • スタイルシートをいじるっていう手もあるけど、あまり手を掛けたくないので、Themeで頑張ることに。
      • いろいろと試して、[UI Theme]は「Atom Light」に、[Syntax Theme]は「Monokai」にしてみました。
      • たぶん、ちまちまと適当に変える予定。
  • 会社でのインターネット接続にはProxyという山があってですね...
    • .atom/.apmrcに「https-proxy = http://ユーザID:パスワード@ホスト:ポート番号」と書けばOK

今日はここまで

ここまでで私のブログを書く気力が尽きたので、続きはまた後日。

GitHubのContributionsを緑にすることで承認欲求を満たしかつ、ぱっと見すごく勉強している人のように見える勉強法

はじめに

先日、「技術書の読書ログとかどうしてます?」って話から飛躍して、題記のようなことを編み出したのでそのことのご紹介です。

やりかた

勉強のログをGitHubに上げることだけです。勉強のログは、README.mdにMarkdown形式で書けばよいでしょう。サンプルプログラムがあるものは、そのプログラムも写経しておいて一緒にpushしておきましょう。きっと役に立ちます。

結果

毎日続ければ、Contributions欄が緑にうめつくされます。業界用語で言えば、「草を生やす」って状態です。パッと見、すごい人として認識され(るかもしれない)ます。

f:id:miyohide:20150704210217p:plain

不安なこととか

  • コードを見られて恥ずかしい

多分、誰も見ません。

  • IssueとかPull Requestとかで罵倒されたりしないですかね?

大丈夫です、誰も見ませんし、誰もそんなコメント書きません。

まとめ

Contributions欄が緑に埋め尽くされるのは、ちょっといい感じです。承認欲求を確実に満たし、かつ、第三者からはすごい人として認識される(かもしれない)かもしれない方法は、最初の一歩を踏み出すにはお勧めです。

Growing Rails Applications In Practiceを読み終わった

はじめに

毎週土曜日の朝に有志でやっている横浜技術書朗読会。本日の読書会で「Growing Rails Applications In Practice」を読み終わりましたので、その感想エントリを記します。

leanpub.com

f:id:miyohide:20150321232846j:plain

本の特徴

この本は、

  • コード量が増えるにつれて、Railsアプリケーションのメンテナンスが辛くなるという話はよく聞くが、それをどうやって解決するかについて、著者の考えを記した一冊。
  • Rubyだけでなく、途中でCSSの話も出てくる。
  • 英文は比較的平易。
  • ページ数があまりなく、挫折しにくい。
  • コード片は記されていますが、写経して手元で動かすって感じではない。
  • 対象読者としては、2,3個ぐらいRailsアプリケーションを書いた人が読むと良いかと思います。

という特徴があります。

感想

ここで示されているRailsアプリの改善例は、あくまで著者の考えを記しただけなので、それをそのまま踏襲するのも良いし、違う考え方があっても良いと思います。横浜技術書朗読会の中でも、経験豊富な @1syo さんや @satococoa さんのお考えがあり、この本をとっかかりに話題が膨らむことが多くありました。

ソースコードが写経の形になっていないので、手元で試すことが出来ないのはいわゆる初心者にはつらいかなと思います。自身で2,3個ぐらいのRailsアプリケーションを書いたことがあると、本文中に書かれている苦労話が同感でき、また改善案も全体を示さなくても分かることが多いと思いますので、それぐらいの技術力は求められるかなと思います。

第10章「On following fashions」からはソースコードは殆ど出ずに概念的なお話が中心となります。実際には、以降の章について詳細を書こうとするとそれぞれ1冊ずつ別の本になりそうですので、コンパクトに纏めるために今の形にしたのかもしれません。個人的には、読み飛ばしても良いように思います。

Podcastにリモート参戦した時の録音環境

はじめに

先日、RubyistclubというPodcastに出演させていただきました(しかも第1回目)。きっかけは、神奈川Ruby会議の振り返りの時に「もっとトークセッションの話を深堀りしたいよね」という一言から。

内容はPodcastのものを聞いていただくとして、ここでは私の録音環境について記します。

録音環境

Podcastの収録は、Skypeで司会の@chezouさんと話しつつ、自分の声は自分で録音するという形で行いました。

で、ここで問題になるのが「自分の声は自分で録音する」という方法です。Podcastへの出演はたぶんこれっきりだと思われるので、あまり高い機材を導入するのは躊躇しました。なにか今ある機材でどうにかできないかな?と試行錯誤した結果、次の構成に落ち着きました。

  • Skypeでの通話はiPhoneで行いました。
  • 録音はiPadで。Voice Recorder HDというアプリを使用し録音することにしました。

  • 音声はSONY製のワイヤレスヘッドセットBluetoothレシーバー(SBH20)を使って音を拾う形にしました。

以下、それぞれの詳細について。

工夫点と詳細

工夫したところの一つは、MacやパソコンでSkypeや録音をやっていないところです。これは、途中で冷却ファンが回ってその音がPodcastに入るのを防ぎたかったためです。1時間ほどの収録になると、ファンが回ってしまうことはどうしても避けられないため、そもそも冷却ファンがついていないiPhone/iPadを活用することにしました。

自分の音声の録音方法についてはちょっと悩みましたが、もともと持っていたSONY製のワイヤレスヘッドセットBluetoothレシーバー(SBH20)を使って音を取るようにしました。

これをピンマイクのように胸辺りに引っ掛けて置くことで、自然とマイクの位置が固定化されます。マイクに近づきすぎたり遠すぎたりすることなく、安定して雑音なしに音を拾うことが出来る環境がこれで整いました。

あとは、このBluetoothレシーバーで撮った音を録音するものが必要となります。これには、Voice Recorder HDというiOSアプリを使うことにしました。

このアプリを選んだ理由は以下の3点。

  • Bluetoothでの録音に対応していることが明記されていた
  • wavファイルとして音声ファイルを保存する
  • アプリの値段が200円(2015年3月1日時点)と安い

これを使って録音することにしました。

あとは、Skype通話をiPhoneで実施。念のため、通話内容をマイクが拾わないようにイヤフォンをiPhoneに付けて会話を聞き取るようにしました。


反省点

後で聞き直して気がついたのですが、ちょっと音が小さかったように思います。Voice Recorder HDには後で音を増幅させる機能が有償ですがありますので、それを活用しても良かったのかな?とも思います。

他には機器としては問題なかったように思います。手元にあるものだけを活用して、今回のPodcastの収録に費やした金額はアプリ代金の200円だけだったので、思った以上に安上がりにできました。

ただ、しゃべり自身はもう少し頑張りたいなと思います。受け答えが「そうですね」から常に始まっていたり、身内トークを間に挟んだのは改善の余地があるなと思ったりします。これは次回の機会があれば、改善したいですね。