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

Let's write something good

メッセージプレビューあるある

2014-11-23
  • Share on Facebook
  • Tweet
  • Add to Pocket

メッセージ機能で実際にあったお話。

メッセージを送るのに、以下のように preview で内容のバリデーションをしつつ見た目の確認をし、create で保存、かつ、通知メールを出す、という処理があったとする。 (実際のコードは書けないので、かなり適当にサンプルコードは書いてる。。。)

class MessagesController < ApplicationController
  def new
    # 略
  end

  # メッセージのプレビュー
  def preview
    @message = Message.new
    @message.attributes = message_params

    return if @message.valid?

    render :new
  end

  # メッセージ作成
  def create
    @message = Message.new
    @message.attributes = message_params

    Message.transaction do
      @message.save!

      UserMailer.message_notification(@message.receiver)
    end
  end

  private

  def message_params
    # 略
  end
end

※実際の処理には、Message モデルの validation で利用可能文字の制限や文字列の長さ制限をしている。

普通の使い方をしていれば、preview -> create の間に validation エラーになるようなものは発生しない…はずだが…問題が起こることがある。 実際に下記のことが発生していた。

文字コードの誤判定

おそらくブラウザの文字コード誤判定か何かだと思うのだけど、UTF-8で書かれるべき文字列がSJISと思われる化けた文字で送信されていた。

※「と思われる」というのは再現できたけど、ユーザがそうしたかどうかわからないから。ログには化けた文字が送信されていることが記録されていた。

↑の理由により、利用可能文字制限にひっかかってsave! による例外発生で、システムエラーになっていた。

ブラウザの文字コード変換機能を利用するとたしかに再現できた。(見た目も化けるから普通おかしいと思って送信しないとは思うけど…)ので、preview しているとはいえ、validation にひっかかる値が混入する可能性がある。

対応

とりあえず、create のときも、validation でエラーになることを想定し、エラーの場合は編集画面に飛ばすということをしています。

class MessagesController < ApplicationController
  # 略

  # メッセージ作成
  def create
    @message = Message.new
    @message.attributes = message_params

    begin
      Message.transaction do
        @message.save!

        @message.sent_notification(@message.receiver)
      end
    # ここで save! で例外が発生したときは編集画面に戻す
    rescue ActiveRecord::RecordInvalid
      render :new
      return
    end
  end

  # 略
end

まとめ

preview で安心せずに、create でもバリデーションエラーに備える。

自己紹介LTと歓迎会

2014-09-27
  • Share on Facebook
  • Tweet
  • Add to Pocket

9/26 に支社でミーティングがあるので、そこで自己紹介LTをしてくれ、との依頼があって数週間… 昨日、ついにLTをする日が来た。。

上は公開版でちょっと内容差し替えて入るけど、まぁ、こんな感じのLTをしました emoji-white_large_square 特にネタは仕込んでありません。 emoji-vemoji-trollfaceemoji-v

杏仁豆腐は封印するつもりだったのですが、5分間自分のことを語れるだけのネタがない、みんな知ってる…ということで使うことにしました。 こういうことしか語ることができないというのは厳しいので、誇れる仕事を公に残したいと思ったりした。

その日に歓迎会を開いていただきました。ありがとうございました!!!!

たくさんの方に来ていただいたのですが、私のコンテンツ力不足により、いつも参加される人数より少なかったらしい…です… やはり、ぽっと出の a new hope でない新人のおっさんが社内のアイドルに勝てるわけがないということか。。。

地域の Ruby コミュニティの話とか、苗字の話とか、離れた現場のその後とかとか、いい話ができました。 いろんな人としゃべることができたし、ネタにされたし、「無量井」って名前をこんなに呼ばれた日はないのではないか?というくらい名前呼ばれた一日でした。

その後、二次会で一杯飲んで、例のほんま門に言って熱く語るお二人を見ながらたこ焼きを食べ、タクシーで帰ってきたのでした。 酒とタクシーに酔って家についたら即バタンキューでありました。。。

RubyKaigi2014とRubyHiroba2014に参加してました

2014-09-23
  • Share on Facebook
  • Tweet
  • Add to Pocket

RubyKaigi 2014

去年はスタッフっぽいことをしていたけど、今年は純粋に参加者として参加しました。

今年は日本人が英語で発表するだけでなく、英語圏の人が日本語で発表するというセッションがあってびっくりしました。 また、去年からリスニング力が落ちているらしく、英語の発表を聴きながらメモとか無理だったし、そもそも聴き取り自体が難しかった…orz

体力落ちてるのか、去年と同じ3日間の参加なのに去年より疲れた気がします。今年はかなり内容が濃かった気がするし、ぶっ続けで聴いてることが多かったから、まぁ当然といえば当然。(去年はぶっつづけかつメモしてたんだけどなぁ…) 寄る年波には勝て(ゲフンゲフン

今回の Keynote 陣が豪華過ぎて… tmm1 氏は ruby-trunk-changes で名前はいくらかみたことあったけど、あんなブットンダもの作っていたとは…日本に住んでいたら確実に「変態」認定されてる。

あの規模で、あの Speakers が揃ってってのが、数年前まであの値段でやってたとか今思えば狂気の沙汰よね…

いろんな話聴けたし、いろんな人に会えたし、今年もばっちり RubyKaigi を楽しんだ!!!

RubyHiroba 2014

さて、去年に引き続き、今年も参加してきた RubyHiroba。 今回は事前に LTthon の申し込みとかしてなかったんだけど、パイセン からの突き上げが厳しかったので、前日深夜に急遽用意して話してきました。 (急遽3分になったので、ペースわからずくっちゃべって、噛み噛みでした…)

特に最近、るびまの記事ストックがない感じなのと、地域 Ruby コミュニティのアピールの場って何があるだろうか? と RubyKaigi 2日目に hokkai7go さんと飯を食べていたときに思ったので、それを LT にしてみた感じ。

スライドには書けてないけど、以下の想いがあってですね。。

  1. 地域 Ruby コミュニティ(特に関東地方以外) にもっとフォーカスあたっていいのでは?
  2. 地域 Ruby 会議の新しいもの(いわゆる “01” ) がもっと出てきていいのでは?(コミュニティはいっぱいあるだろうし)
  3. 地域 Ruby 会議が大きい規模のものでなければならない、という固定概念を撤廃したい

1 は、RUBY KAJARuby Prize でフォーカスがあたっているけど、いわゆる「賞」でだけというのは非常に寂しいし、彼ら彼女らの活躍している場がわかったほうがより伝わると思う。

2 は、私の観測範囲では、最近の Ruby コミュニティは地域に限らず細分化されてきていて、数が増えてきている気がします。だから、新しい地域 Ruby 会議、新しい風が吹いてもおかしくないと思っています。「地域 Ruby 会議」は、コミュニティが開催する上ではハードルが低いので、もっとやってほしいという私の願いも入っています。

3 は、地域 Ruby 会議は大きくある必要はない。基本的に開催地域の Rubyist が集まってなんかすればいいんですよ。なんかこう、ただ聴くんじゃなくて、集まってなんかする感じだったらいいんですよ。100人とか集める必要ないし、集まる場所で開催する必要もないし。なんでも大きくしたいとか、するべきとかいうのは疲れるし、次回開催のハードルをあげるだけ。

でも 地域(もう「地域」でないのかもしれないけど) Ruby 会議 するのは確かにパワーがいるので、コミュニティアピール出来る場として るびま を活用してみませんか? というのを提案してみたつもりです。

本当はもっと人数のいる、特に関東以外から来ている人たちがいる場面で言ったほうがよかったのかもしれないけど、事前登録もしてないし、だいぶ後半の遠方の方々は帰り始める時間だったので、詰めが甘い感じだったけど、思ったことは言ったつもり。(ラード案件…)

なんかできることがあるかなぁと思いつつ、遠方のコミュニティにリーチして協力できるよい方法が浮かんでないのでした。

** ※ 「関東以外」 と言っているのは、明らかに関東の Rubyist はイベントごとを開催する練度が高く、相談相手が周りに多いことからそう言っています。 **

** ※ そもそも自分の地域 Ruby 会議スキル的なものは高くないことをここに示しておきます。ただ好きなだけ **

9月より永和システムマネジメントで働き始めてました。

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

いわゆる転職エントリーというやつです。

「で、お前誰よ?」と言われることがわかっていたので敢えて書いていなかったのですが、 複数人の方から問い合わせがあったのと、パイセンからの突き上げが激しいので遂に書いています。

標題のとおり、9月1日から 株式会社永和システムマネジメント で働き始めました。

なので、8月の終わりから大阪から東京に引っ越して生活をしています。

非常に悩んだのですが、誕生日にありがたくもいただいた杏仁豆腐(残72個/現71個)と、クコの実(約1kg)は一緒に東京に連れてきました。今も私の部屋で寝てるよ。

土地にも仕事にも不慣れなところがあり、いろいろとご迷惑をおかけしております。 東京の人口におっさんが一人増えましたが、生あたたかい目で見守っていただければと思います。

よろしくお願いします。m( _ _ )m

XP祭り2014に参加してきた

2014-09-07
  • Share on Facebook
  • Tweet
  • Add to Pocket

XP祭りに同僚が参加するというので、XP祭りなるものに参加したことがなかったので、良い機会と思い参加してみた。

第一印象は、もっとこう”堅い”感じのものを想像していたのだけれども、そういうものではなく、本当に現場で遭遇した問題や日頃やっていることの発表が多かった、思ったより柔らかかった、というものでした。

XPを再興する(関将俊さん)

咳さんの発表は以前 RubyKaigi だったかな?で聴いたことがあったので、マイペースな感じの発表で質問に臆せずバッサバッサ斬っていくのが心地よかったw

自動テストは checking であって testing ではない というのは、そうだよなぁと思いながら、testing なテスト(?)のためには何ができるんだろうって考えると、やはり手で動かしてテストするしかないよなぁ…… となったときに、テスト項目の一覧は Google Docs なのかな? Excel は諸々の理由で敬遠したい。。

DevLOVE Pubの技術書定期刊行技術(小芝敏明さんとPublisherの皆様)

電子書籍の同人誌を出版するためにやっていることの発表でした。

複数人で記事を書いて誰かが間に合わなくても刊行ができるようにしたり、刊行するたびに行ってきた工夫や自動化作業があったり。 あくまで趣味だから、趣味の範囲でゆる〜い感じで出版が苦にならないようにする、毎回何かしら改善して執筆により注力できるように環境を整えていく工夫を聞くことができました。

最近、この「苦にならないように」っていうのが自分の中ではキーワードになっていて、仕事でもないのに苦しんでまでやる意義を見出すのって結構ツライと思っていて、そんな状況になっているところをどうしたらいいかなぁと考えつつも、結論が出てない感じですねぇ……

ペアプロを勘違いしていませんか?(林尚之さん)

林さんがこれまでやってきたペアプロの中で出会った誤解や、林さんの思うベスト・プラクティスの話。

新規参画者や新人のためにペアプロするというのはOKだけど、そのためのペアプロっていう認識は払拭したいところですよね。 あと、コスト高と現場にいないレベルの上司に思われるのが厳しいよね、というのはあるあるですよね。 発表にも数値的なメリットの紹介があったのですが、それでもペアプロ文化のないところへの導入のハードルを上げる最も大きな要因で理解してもらいにくいところですよね……

キーボードとマウスを2つ接続してやるっていうのはいいですね!

俺の価値創造契約(木下史彦さん)

4年前に発表して話題になった「価値創造契約」のその後のお話。

なぜうまくいっていないか?という点の分析事例はあまり聴く機会がないため、たいへん参考になる発表でした。

木下さんの 俺の価値創造契約 や、俺の事業部 は、最近入ったものとしては経緯等知ることができてほほぅ〜という感じでした。(ちょっと訊きにくいしね)

実は木下さんの発表を聴くのは初めてだったので、よい経験になりました。

なぜアジャイル開発はうまくいかないのか(倉貫さん)

う〜ん、これはちょっと合わなかった。。 なんだかタイトルと内容がちょっと私の中では一致しなくて。。トーク自体は面白く進んでいたと思います。

LTとクロージング

LTにもいろいろ勉強になる発表があって、いろいろコミュニティでもやってるんだなぁとか、POと開発者の信頼関係って大事だよね、とかいろんなお話を聴けました。

勉強することもあり、更にお土産までもらって、本当に参加してよかったと思えるお祭りでした。ありがとうございました。