元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

RubyKaigi 2014 個人的メモ(1日目)

印象深かった点などを書き出して、忘れないようにしておく。

[EN] Controller Testing: You're Doing It Wrong

そもそもロジックのテストをコントローラのテストで行う状態がおかしい

http://rubykaigi.org/2014/presentation/S-JonathanMukai-Heidt

コントローラは宣言的に書く

  • コントローラのテストですべきこと
    • 認証回り
    • リソースの存在
    • Responder responseの形式

宣言的テスト

shared_examples_for

subject { get :action }
it { ... }

等を使って簡潔に書く。

[JA] Non-Linear Pattern Matching against Unfree Data Types in Ruby (Egison Pattern Matching in Ruby)

http://rubykaigi.org/2014/presentation/S-SatoshiEgi

実際にポーカーの役を判定するパターンマッチングなど面白い内容だった。パフォーマンスについて疑問視する声もあったが、それについてはややフワッとした回答の印象。

Egison

http://www.egison.org/

データ分解と分岐に主眼を置いた?パターンマッチング指向の新しいプログラミング言語

ポーカーや麻雀の役など複雑なパターンマッチングを読みやすい構文でに書ける。(というが、僕の頭にはパターンマッチング構文そのものが難解に思えたが)

egision gem

https://github.com/egison/egison-ruby

RubyでEgisonのパターンマッチングを行えるgem。

[JA] Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails

http://rubykaigi.org/2014/presentation/S-ToruKawamura

APIの変更でクライアントが壊れるのを防ぐ

  • 機械的に処理できること
  • クライアントとAPI疎結合にする

Model.to_json

  • 内部の仕様が露出する
  • 密結合で壊れやすい

これからすることをクライアントに選ばせる

  • できることを提示する

Hypermedia

たとえばHTML

  1. ワークフローを含む(リンク、フォーム)
  2. Microdata ・・・ クローラーに意味を伝える

実はHTMLもAPIとして使える・・・が冗長だったり、パースが面倒だったりででできればJSONでやりたい

そこで Hypermicrodata gem

https://github.com/tkawa/hypermicrodata

HTML -> JSON 変換を行う

利用手順

  1. リソース設計
  2. 状態遷移図
  3. データの種類を決定 https://schema.org/
  4. Microdataを使ってHTMLテンプレートを書く

WebアプリとWebAPIを分けて考えない

この考え方のメリット

  • DRY
  • リンク・フォームを忘れない
  • 制約

[JA] "Gem of this Week" - building culture and making gem

http://rubykaigi.org/2014/presentation/S-TakumiMiura

ドリコム社内でgemを作る文化を作った話。

Keep Agility

  • 技術的負債をコントロールする

共通化

やったこと

  1. 重複したコードの切り出し
  2. アナウンス、呼びかけ
  3. Gem作り文化
  4. 今週のgem
  5. private gem server公開支援ツール

アップデートの滞っているもの

https://gemnasium.com/

プライベートなGemもありGemfileの公開はできないので、それっぽいものを自作。

古いGemを使い続けているプロジェクトをランキングする(ワースト)ランキングが面白い。

2日目につづく。