なんか書いていこうぜー .com

Let's write something good

パンくずリストを出す gretel gem が使いやすくて感動した

2014-04-03
  • Share on Facebook
  • Tweet
  • Add to Pocket

今日仕事で gretel が使いやすかったのでメモ。

これまでの パンくずリスト(breadcrumbs) は、だいたい、controller の中で add_breadcrumb みたいなメソッド を呼び出してリストを作る感じなのですが、 gretel はちょっと違うのね。

Contoller を汚さずに、パンくずが作れる

gem を install します。ここは適宜、bundle とかにしてください。

$ gem install gretel

設定を記述するファイルを出力するコマンドを入力します。いわゆる、install コマンドです。

$ rails g gretel:install

このコマンドを打つと、config/breadcrumb.rb が作成されます。 ここに表示するパンくずの設定を書くのですが、

# Root crumb
crumb :root do
  link "Home", root_path
end

# Issue list
crumb :issues do
  link "All issues"
  parent :root
end

この記述で、 Home > All issues のパンくずの設定ができました。

view の layout と、パンくずを表示する画面にメソッドを書く必要があるのですが、パンくずの関係の設定はこのファイルに書くだけです。

これの何が嬉しいかというと、controller に書くタイプの下の例だと、update で更新に失敗したとき、edit で設定したパンくずの設定をもう一度書かないといけない。これが面倒で漏れやすいんですよ。

# 結構適当に書いてる
def edit
  add_breadcrumb 'Home', root_path   # ←ここ
  add_breadcrumb 'All Issues', nil   # ←ここ
end

def update
  @post = Post.find(params[:id])
  @post.attributes = post_params

  if @post.update
    redirect_to posts_path
  else
    add_breadcrumb 'Home', root_path # ←ここ
    add_breadcrumb 'All Issues', nil # ←ここ

    render action: :edit
  end
end

gretel は、この設定と後述する view 側の設定で、view単位でパンくずの設定が書けるのでこの点は気にせず、DRYに書けます。

view 側も簡潔に書ける

とりあえずパンくずを出力するには、app/views/layouts/application.html.erb

<%= breadcrumbs %>

のように書き、表示したい各view に 以下のように書けば、 Home > All Issues が出力されます。

<%= breadcrumb :issues %>
# 指定された :issues から parent の設定をたどって、 'Home > All Issues' が出力される

view 単位にパンくずが設定できるので、前述のようにupdateedit に同じ記述をする必要がなく、DRY にパンくずが書けます。しかも、指定した crumb から parent たどっていくだけなので、設定自体も非常に見やすい。

gretel を見ると、bootstrap や foundation5 に対応していたり、リストの形式を ol, ul にしたり、class の指定をしたりもできます。

私が仕事で使ったときは、別にパンくず用のデザインがあったので、そのデザインで出力されるように書きました。 Building the breadcrumbs manually のパートに書かれているやり方を使えば簡単に独自レイアウトにも対応できます。

とにかく、DRY にしかも簡単に書けるのがすばらしいので、パンくず実装するときは使ってみてください。

関西Ruby会議05のレポートをるびま45号に書きました。

2013-12-22
  • Share on Facebook
  • Tweet
  • Add to Pocket

先日の関西Ruby会議05でひとりレポート作成班をしていたので、その関係でレポートをるびまに寄稿しました。で、ちょっと褒められたので、自分なりに地域Ruby会議レポートを書くときに気をつけていたことを書き残しておこうかと思います。

もともとは、初めてレポートを作成した、前回の関西Ruby会議04のときに意識したことがベースになっています。基本は読み手が読み疲れしないようにするということを意識しています。

1セッションのレポート量はほどほどに

地域Ruby会議のレポートを書くとき、発表者のセッションは全部載せたいと思う。でも、そうなると長くなるので読み疲れが心配になる。

ということで、あまり1セッションに対して長い文章を書かないようにしています。ただし、少なすぎると記事の空白が気になってくる ので、空白とのバランスを考えて文章の量を調整します。これは解像度の違うPCとかスマートフォンで見ると実際の見え方が変わるので、複数マシンで確認するのがベストです。今回は、MBAとVAIO PROとスマートフォンで確認しました。

自分の意見・感想を入れる

レポートなので、そのセッションのあったことを書けばいいのですが、自分が書くのにセッションの内容のまとめだけだともったいないです。

スライドへのリンクがあるなら、スライドを見ればだいたい内容はわかると思うので、そこに載っていないことや自分がどう思ったかを書いたほうが読む方にも「こういう印象を与える発表だったんだな」とか「当日はこんな感じだったんだ」みたいなイメージをプラスできるんじゃないかな、と思っています。(まぁ、お前の意見はどうでもいい、と思われてるかもしれないけど……)

発表者の写真は入れる

これはまぁ、普通か。

当日の様子を入れる

発表の内容を知りたいと思う人が多いかもしれないですが、私は地域Ruby会議の雰囲気が好きだったりするので、当日の様子がわかる写真を入れるようにしています。

「楽しい」とか「勉強になる」とか「こんなやり方もあるのね」みたいなものが読む人にも伝えられれば、別の地域で開催する人たちのヒントにもなるかなぁ、なんて。

がんばって文章を作らない

あまりに完璧を求めるがために、会議当日に楽しめないくらい必死にレポートするとか、記事にあれこれ全部入れるとか、はしません。

文章は深い内容を伝えるにはいいですが、雰囲気みたいなものは画像である程度伝えられると思います。写真があるなら写真を貼って、無駄に文章の量を多くしないようにします。発表者の方のスライドがあれば、発表内容もだいたいそちらをみれば伝わるはず。やはり文章考えたり、推敲したり、誤字脱字直すのが一番しんどいですからね。ただそのためには、

  • 発表者のスライドをGETする。会議開催前にお願いしておくといいかも。
    • 事前に話をしておけば、公開されないものでもファイルだけもらうということはできると思います。
  • 写真を撮る人をレポート班として組み込んでおく。
    • エンジニアの写真愛好家率は割と高いと思うので、そういう人に頼む。
    • 発表者の写真は必ず撮るようにお願いしておく。

というのが必要になるので、これは運営のときに準備しておくとよいと思います。

複数人でレポート作成班を構成するとき(想像)

セッション別に担当をわけてメンバーがパートの分を書いて結合すると思うんですが、最終的には誰かがバランスを取らないといけないと思います。

今回は私ひとりで作成したのでこれには該当しないのですが、前回は複数人で作って私が最後全体を見て手直しをしました(るびま編集とのやりとり担当が私だったので)。セッションのレポートはメンバーの個性みたいなものが出るのがよいと思っていて、でも全体のバランスを崩しすぎるものアレだな、というのでこの方法を採りました。 これが良い方法かと言われれば疑問はあるのですが、誰か一人のスタイルを真似るよりはメンバーの個性が出たほうが面白い記事になるんじゃないかなぁと思っています。

モチベーション維持!

これが一番むずかしいのですが、会議の開催からレポート提出・公開までの間が空いてしまうのと、会議が終わった達成感から、レポート作成から逃避したくなるんですよね。。

前回作成時にこれに悩んだので、今回はそうしないようにすぐにレポートを作ろう!と思っていましたが、締め切りが遠いのでエンジンがかかりませんでした…… でも、締め切り前に頑張るんですよね。一応、会議終了一週間で当日とっていたメモの整理をしていたのが助かりました。記憶が新鮮なうちに何か手を打つとよいと思います。もちろん、記事ができていると一番いいんですよ!




とまぁ、これくらいが意識していることです。

2連続でレポート書いたので、次回は別の人に席を譲ろうかなと思っています。レポート書いてるびまに投稿すると、るびま編集の中身がみえるし、編集者がどんなこと考えているかも知れるので、いい経験になると思うんです。私がるびま編集に参加するきっかけは、前回のレポート提出なんですよ。

レポートは怖くない。けど、自分のエンジンがかからないのが一番怖い。経験者は語る……

地域Ruby会議をやってみたいと思うとき

2013-12-09
  • Share on Facebook
  • Tweet
  • Add to Pocket

「地域Ruby会議やりたい」ってなったときに「ちょっとどうすればいいのかな……」とか「こんな規模でやっていいのか?」ってなりませんか?

先日やった関西Ruby会議05は、開催メンバーは割と訓練されたRubyistだったのでまぁそれなりにどうすればいいとか知っているわけなんですが、立ち上げたばかりの地域Rubyist集団とかコミュニティってこういうの困ったりしないのかな?というのを RWC 終わった後に日本Rubyの会理事のしまださんとちょっとお話したのでした。

相談の場

  • 地域Ruby会議用のML
  • 過去に開催したことある人に相談
  • 地域Ruby会議に参加して主催者に訊く

そのRWC終わりのときに、そういう人たちを拾える場ってあるかな?どうすれば拾えるかな?って話をしたのですが、今のところはこちらのページにあるように地域Ruby会議のMLに投げてもらうとか、どこかの地域Ruby会議を開催した人になんかしらのメッセージを送るとかしかないみたいという話をしました。

開放された駆け込み寺的なところは、地域Ruby会議のMLしかないですが、開催が決まってからでなくて相談レベルでもMLに投げてしまってもいいと思うんですよね。折角そういうMLがあるので使うべき。寂れてなくなっていくよりは全然いいと思います。費用的なところも併せて。

また、マサカリ担いで新規に会議を開拓した人はいても開催に際して「こうでなくてはいけない」とかマサカリ投げてくる人はいないと思うので、安心して投げていいと思います。

私は関西Ruby会議05やる前に、福岡Ruby会議、大江戸Ruby会議と岡山Ruby会議に参加して主催者の方や参加者の方に相談してみたり、たまたま遭遇した角谷さんに相談したりとかもしました。これはお金かかっちゃうんですけど、やはり生の声を訊くのは一番グッとくるってのはあります。

規模?二人集まりゃそりゃ会議

地域Ruby会議は、先日の関西Ruby会議で角谷さんもおっしゃってましたが、「地域Ruby会議は好き勝手にやったらいいもの」なので、人数とか規模とかどうでもいいんですよね。 どうしても規模が大きいものや、著名なRubyistが集う地域会議が話題になってしまうので(仕方ないんだけど)、そういうものだって考えてしまいがちなんですけど、どうでもいいんですよ。九州Ruby会議02とかTokyuRuby会議とかみたいに自由でいいと思うんです。(つまり、いい前例がある!)

九州Ruby会議02は、バーでビール飲んでて発表者の話ほとんど聴いてないだろwってものもあったし(けど、みんなめちゃ交流してたw)、バーなんでそんなにキャパもなかったし。そういう変わった点に話題になる地域Ruby会議があってもいいと思うんですよね。そろそろ、Tokyu, うなぎ(あれはrbでしたっけ?)を超えるもの待望論が出てきてもおかしくないw

人が集まらない、ということはないと思います。やるって言ったら、割と人が集まってきます。(関西のときも、中身決まる前に結構な参加応募がありました) 土着のRubyistのみでできるならばそれが地域Ruby会議っぽさがあっていいと思うんですけど、他地域の人呼んじゃってもいいと思います。私らも他地域から強力な人呼んでますからね。 私みたいな地域Ruby会議に参加するのが趣味みたいな人や、他地域の地域Ruby会議に興味持ってる人もいると思うのです。

極力小さい規模でやりたいというなら、宣伝しないってのもありだと思います。地域のコミュニティにだけ情報流すとか。 無理に大きくして運営側の負担を大きくすると、暗黒面にとらわれて「良い」と思えるものも良く感じられなくなっちゃいます。自分達が運営していて楽しいとか、負担に感じ無い程度でやるのがいいです。やたら理想が積み重なって大きくやりたいとかなるかもしれませんが、小さくやって広げていくのがいいと思います。年に一回とかいう縛りもないですし、小さく何回もやる、それなりの規模を年に一回やる、やりたいときにやる、なんでもありです。

総じて

  • 相談はMLとか、やったことある人に直接とか、地域Ruby会議に行ってとか。
  • やりたくなったら、やれる範囲でやりましょう。負担が苦しくなったらやめるべき。楽しめる範囲で。
  • 規模も↑と同じ。

なんかネタなくなると、地域Ruby会議とかいうおっさんになってる感…(いや、レポート書くと高まってくるんですよ、なんかが)

2013年の振り返りをやらないとなぁ

2013-12-05
  • Share on Facebook
  • Tweet
  • Add to Pocket

今年はいろいろとあったので、振り返りをしないといけない。

転職して一年経ったし、RubyKaigi にも行ったし、地域 Ruby 会議にも行ったし、関西 Ruby 会議 05 もやったし、RWC にも行ったし、親に消費税上がる前に嫁を(ry とか言われたし。 割と今年はノープランな感じだったしなー。

Ruby 関西の活動復帰呼びかけから始まり、大江戸 Ruby 会議と九州 Ruby 会議に参加して、関西 Ruby 会議の準備のミーティングしつつ、復活した RubyKaigi2013 にレポート班の一員として参加して、RubyHiroba でLTして、岡山 Ruby 会議でLTして、関西 Ruby 会議して、RWC に参加した感じか。 Ruby勉強会で地域 Ruby 会議の参加レポートとかいうのもやったな。あと、大江戸 Ruby 会議の翌日のるびま編集会議に参加して、るびまにちゃんと参加するようになった。

仕事では、JRuby と Excel 出力の闇に飲まれたり、業務要件訊きながら受注管理システム作ったりお客さんによくしてもらったり、名古屋行ったり東京行ったり松江行ったり大阪移動したりしたか。相変わらず、Rails 2系触ったりとかもしてるし。

こんな感じの材料をもとに振り返りしよう。

書きだしてみると、割といろんなとこ行って、なんだかんだ行動しない感じの性格の割にいろんなことやっとるねー。やったことないことも結構やってる。 あとはプライベートのコード書きに成果がついてくればいい感じだね。嫁/彼女の話以外…

www.ruby-lang.orgにPRした

2013-12-02
  • Share on Facebook
  • Tweet
  • Add to Pocket

昨日かな?RSSに流れてきた、Ruby 2.1.0-preview2 リリース を見たら、“preview2” のリリースだけど、 “preview1” と書かれている部分があって、外にいる間 3 回くらいみたけどそのままだったので、久しぶりに Pull Request してみた。

今は、Heroku で表示確認してから Pull Request できるのね。www.ruby-lang.org にある手順にそのまま従って確認できた。 Pull Request 出したら、すぐに取り込まれてた。

1文字だけしか変えてない (1 の文字を 2 に変えただけw) しょぼい Pull Request であった。。