SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
地獄の
RSpec
逃げちゃだめだ、逃げちゃだめだ・・・
       おおはら@Drecom Co., Ltd.
警告
このプレゼンを見てから7日以内にspecヲ
20コGreenにしないといけません。さもなくば
貴方のプロジェクトは炎上し、メンバーは
疲れ果て疾走し行方不明になる可能性
があります。
貴方のプロジェクト、大丈夫ですか・・・?
提供




DRECOM
                     R




With entertainment
自己紹介
おおはらつねのり
アプリケーションエンジニア
所属:広告事業本部
twitterアカウント:@ohrdev
経歴
Rails歴:2年半
札幌の会社からドリコムへ転職
元SIer(元IT亡者)
ソーシャルゲームはヤった事ない(シゴトハノゾク)
今日の
おはなし
テスト
RSpec
質問1
spec
何   緑
時

赤
    最
    初
気
。

    。
グリーン維
持は大変
質問2




グリーン維
持してる?
理想的な
プロジェクト
なら・・・
だが現実は
キビシイ・・・
現実
うちのシステ
ムでRSPEC導
入した時の話
組織(広告事業部)

              企画
         営業


                   開発
    受注



クライアント
               カスタマー
               サポート
サービス(poncan)
ソーシャルアプリ向けリワード広告サービス
http://www.slideshare.net/CyLab/poncan2

リワード広告とは:
ユーザーに広告を提供し、その成果に対して
一定の報酬(ポイント等)を支払うサービス
システム(poncan)
Rails2.3.8 + passenger
Ruby1.8.7
MySQL5
Memcached(acts_as_cached)
Resque/Redis
運用
止めれない(サーバー停止のメンテは基本なし)
Migrationは使用しない(できない)
→openark kit/oak-online-alter-table
(1日のリリース:2.1回)
(1日コミット数:22.3回)
(毎日リリース・毎週機能追加・拡張)
背景
テストコード(メンテされて)なかった
リリースまでに(チェックで)時間かかる
漏れや事故が多い
バグ              事故

                     漏れ

       poncan
                      安心感


     テストコード(のメンテ)不足
Specを書けよ
デコ助野郎!
RSpec




        開発メンバー
①導入前の状態
有効なRSpecほぼ無し
自動生成されたtestunitが少々
誰も動かしていない
当然メンテもしていない
②導入直後にやった事
メンテされていないテストコードは削除
  -流用できないコード多数
 -そもそも仕様が既に変わっている
自動生成されたコードも削除
テスト用データ
 -fixturesからFactoryGirlに移行
②失敗・教訓(導入直後)
とりあえず動くだけでは不十分
  -実行時間が長いと流さなくなる
自動で動かさないと忘れる
 -autotest使うようにした
テストデータを全てFactoryGirlで賄うのは面倒
 -マスタデータはfixtures
  -トランザクションデータはFactoryGirl
③しばらく経って(1週間位)やった事
Specを書く対象を絞った
 -まずはmodelから書いていく事にした
 -controllerは後回し
③失敗・教訓(しばらく経って)
ビジネスロジック部分をspecの対象にすべきだった
 -modelだけでは不十分で、(Fat)controller
 のロジック部分も対象にしないと無意味
万遍なくspecを書こうとして途方に暮れた
 -全部書く時間ない・モチベーション下がる
 -修正の入った箇所から充実させていった
④慣れてきた頃(1ヶ月位)にやった事
CIを導入した
  -手軽なBigTunaを採用
遅い処理の改善
 -テストダブル(モック・スタブ)に置き換え
 -migrationからschema.rb読み込みに変更
④失敗・教訓(慣れてきた頃)
CIの失敗通知が続いてREDに慣れてしまった
 -失敗だけでなく失敗数も通知するようにした
 -オールグリーンを目標に設定
 -だんだんREDが減っていくのを見てモチベ△
メンバー間のspecの書き方に統一性が無くなってきた
 -勉強会・共有会で書き方をある程度共有
 -THE RSPEC BOOK
⑤充実してきた頃(3ヶ月位)にやった事
カバレッジを指標にした
 -rake spec:rcov
テストデータの整理
 -モデル(テーブル)数80くらい
⑤失敗・教訓(充実してきた頃)
カバレッジは万能じゃない
 -「レガシーコード=テストの無いコード」なので意
 味はあるが・・・
 -Reekを取るようにした(お手軽/ReekViewer) 
 https://github.com/Shinya131/reekviewer
FactoryGirlがパンクした
 -factory.rbに全てぶっ込むのではなく、
  factoriesフォルダ以下にファイル分割配置
 -リレーション指定やりすぎると破綻(メンテ不能)に
⑥グリーンになって(5ヶ月位)にやった事
trunkとbranchに対してそれぞれCIを回した
 -管理・配信・配信(mixi特化)アプリごとに、そ
  れぞれ計6つのCIを回す
 -trunkとbranchの差分を全てチェック(苦行)
レッドからグリーンにするではなく、グリーンを維持する
  ように目標をシフト
⑥失敗・教訓(グリーンになって)
Trunkはグリーンだけど、branchはレッドという状況に
 -息の長いbranchだと未マージ・マージ漏れが
  発生しうる
 -特定のコードをbranchにマージする・しないで赤
  だったり緑だったりするケースがある
なるべくtrunkとbranchの差分を小さくするように意
  識
⑦そして今に至る・・・

          ビフォー
⑦そして今に至る・・・

アフター
結果どうなった?

リリース頻度が加速
 -漏れ・事故が少なくなった
 -即リリース・即bug発見・即修正・即リリース・・・
“ある程度”安心できる
trunkとbrunchの差分が減った
100%bug潰すのは無理だけど、即発見・修正はでき
  る
今後

Rails2.3.8から、Rails3.xにVerUp
 -Jenkins + rvm + rails3.x でCI回す
もうなにも怖くない(CIまわしてればある程度)
Seleniumで面もチェック
 -目確認は(最低限しか)したくない
引き続きGREEN維持
まとめ

RSpecちゃんとしたら、リリース頻度あがった
Specメンテ => CI導入 じゃなくて、
CI導入 => Specメンテ ってするとウマく回った
BUG潰し・予防よりもBUGの早期発見・早期修正に役
  立った
BUGは出る時は出る、Rspec/CIは万能じゃないの
  で注意
ドリコムメンバー募集

ドリコム広告事業本部では、テスト好きなメンバーを
  募集しています。
http://www.drecom.co.jp/recruit/

Weitere ähnliche Inhalte

Was ist angesagt?

Reinvent first-participation-report
Reinvent first-participation-reportReinvent first-participation-report
Reinvent first-participation-reportj3miyake
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20鉄次 尾形
 
from_beginner_to_engineer
from_beginner_to_engineerfrom_beginner_to_engineer
from_beginner_to_engineerYuka Tokuyama
 
RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)Takashi Minoda
 
私が見てきたあるセカイの物語 Part I & II
私が見てきたあるセカイの物語 Part I & II私が見てきたあるセカイの物語 Part I & II
私が見てきたあるセカイの物語 Part I & IIKoichi ITO
 
コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会Naotaka Jay HOTTA
 
俺のZabbixがこんなに可愛いわけがない~北海道巡業編~
俺のZabbixがこんなに可愛いわけがない~北海道巡業編~俺のZabbixがこんなに可愛いわけがない~北海道巡業編~
俺のZabbixがこんなに可愛いわけがない~北海道巡業編~Seiichiro Ishida
 
Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)Takashi Minoda
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
Fluentd,mongo db,rでお手軽ログ解析環境
Fluentd,mongo db,rでお手軽ログ解析環境Fluentd,mongo db,rでお手軽ログ解析環境
Fluentd,mongo db,rでお手軽ログ解析環境Michitaka Iida
 
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会ltJava one 2013 sf 報告会lt
Java one 2013 sf 報告会lttorutk
 
ガンダムから学ぶプログラマの心構え
ガンダムから学ぶプログラマの心構えガンダムから学ぶプログラマの心構え
ガンダムから学ぶプログラマの心構えYuuki Ooguro
 

Was ist angesagt? (13)

Reinvent first-participation-report
Reinvent first-participation-reportReinvent first-participation-report
Reinvent first-participation-report
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
Scala.js
Scala.jsScala.js
Scala.js
 
from_beginner_to_engineer
from_beginner_to_engineerfrom_beginner_to_engineer
from_beginner_to_engineer
 
RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)
 
私が見てきたあるセカイの物語 Part I & II
私が見てきたあるセカイの物語 Part I & II私が見てきたあるセカイの物語 Part I & II
私が見てきたあるセカイの物語 Part I & II
 
コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会コンテナー型仮想環境の情報交換会
コンテナー型仮想環境の情報交換会
 
俺のZabbixがこんなに可愛いわけがない~北海道巡業編~
俺のZabbixがこんなに可愛いわけがない~北海道巡業編~俺のZabbixがこんなに可愛いわけがない~北海道巡業編~
俺のZabbixがこんなに可愛いわけがない~北海道巡業編~
 
Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
Fluentd,mongo db,rでお手軽ログ解析環境
Fluentd,mongo db,rでお手軽ログ解析環境Fluentd,mongo db,rでお手軽ログ解析環境
Fluentd,mongo db,rでお手軽ログ解析環境
 
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会ltJava one 2013 sf 報告会lt
Java one 2013 sf 報告会lt
 
ガンダムから学ぶプログラマの心構え
ガンダムから学ぶプログラマの心構えガンダムから学ぶプログラマの心構え
ガンダムから学ぶプログラマの心構え
 

Ähnlich wie 地獄Spec

Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Drecom Co., Ltd.
 
iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1codeal
 
Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-Hiroki Sakamoto
 
RSpecが遅いからはやくしてみた...................................
RSpecが遅いからはやくしてみた...................................RSpecが遅いからはやくしてみた...................................
RSpecが遅いからはやくしてみた...................................yutonoda2
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムGo Sueyoshi (a.k.a sue445)
 
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)Masataka Sato
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」Hiroyuki Ohnaka
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Minoru Maeda
 
RubyKaigi2011の雰囲気
RubyKaigi2011の雰囲気RubyKaigi2011の雰囲気
RubyKaigi2011の雰囲気Sea Mountain
 
Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?Terui Masashi
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ Takuya Mikami
 
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdfソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf耕二 阿部
 
第1回 Android勉強会
第1回 Android勉強会第1回 Android勉強会
第1回 Android勉強会fujikunn
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島Tomohiko Himura
 

Ähnlich wie 地獄Spec (20)

Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1
 
Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-
 
Tokyo r30 beginner
Tokyo r30 beginnerTokyo r30 beginner
Tokyo r30 beginner
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
RSpecが遅いからはやくしてみた...................................
RSpecが遅いからはやくしてみた...................................RSpecが遅いからはやくしてみた...................................
RSpecが遅いからはやくしてみた...................................
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
 
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
 
PreadNet
PreadNetPreadNet
PreadNet
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
RubyKaigi2011の雰囲気
RubyKaigi2011の雰囲気RubyKaigi2011の雰囲気
RubyKaigi2011の雰囲気
 
Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ
 
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdfソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
 
第1回 Android勉強会
第1回 Android勉強会第1回 Android勉強会
第1回 Android勉強会
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島
 

Mehr von Tsunenori Oohara

パンチラに関する考察
パンチラに関する考察パンチラに関する考察
パンチラに関する考察Tsunenori Oohara
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Tsunenori Oohara
 
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Tsunenori Oohara
 
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTRe:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTTsunenori Oohara
 
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発Tsunenori Oohara
 
running-elixir-in-production
running-elixir-in-productionrunning-elixir-in-production
running-elixir-in-productionTsunenori Oohara
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2Tsunenori Oohara
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Tsunenori Oohara
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)Tsunenori Oohara
 

Mehr von Tsunenori Oohara (20)

Elixirハンズオン2
Elixirハンズオン2Elixirハンズオン2
Elixirハンズオン2
 
meguro.rb LT
meguro.rb LTmeguro.rb LT
meguro.rb LT
 
Elixir解答
Elixir解答Elixir解答
Elixir解答
 
Elixir言語紹介
Elixir言語紹介Elixir言語紹介
Elixir言語紹介
 
パンチラに関する考察
パンチラに関する考察パンチラに関する考察
パンチラに関する考察
 
how-to-learn-elixir
how-to-learn-elixirhow-to-learn-elixir
how-to-learn-elixir
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
 
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
 
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LTRe:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
 
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
 
Tokyoex6 EEx
Tokyoex6 EExTokyoex6 EEx
Tokyoex6 EEx
 
running-elixir-in-production
running-elixir-in-productionrunning-elixir-in-production
running-elixir-in-production
 
hello waf, hello phoenix
hello waf, hello phoenixhello waf, hello phoenix
hello waf, hello phoenix
 
tokyo.ex3 LT
tokyo.ex3 LTtokyo.ex3 LT
tokyo.ex3 LT
 
running web app on elixir
running web app on elixirrunning web app on elixir
running web app on elixir
 
Elixir lang bootstrap
Elixir lang bootstrapElixir lang bootstrap
Elixir lang bootstrap
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
 
elixir in production
elixir in productionelixir in production
elixir in production
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
 

地獄Spec