エンドツーエンドテスト書いた話
遅刻したので途中から…。
シナリオは日本語でかいてる
ステージング・本番環境に向けてやるからDBを都合よく操作できない
Tips
- デバッグ用のステップを入れる
- スクリーンショットやHTMLをすぐに確認できるようにしとく
- 特定の領域を操作
- ヘッダーの中にある○○とか
- ステップを再利用してる
- リセットできない副作用のあるテスト
- 毎回実行しないようにする
- 画面上の操作でデータを初期化
- WYSIWYGエディタをどうしてるか
- Javascriptで入力したらラグがあるのでちょっと止めるようにしてる
所感
- よかった点
- うまく作れると気持ちいい
- 最初は1日1ケースとかだった
- つらかった点
- 似たようなセレクタで1コ取れると思ったら10コ取れたりとか
質問
- すでにできないことがある
- Flash使ってるところはムリ
- 抽象度の高いフレームワーク使ってるとリファクタリングとか追いついてこないけどこれの対策は?
- 特にないけど、日本語で書けるというメリットで防止できるんじゃないか
- 中がグチャグチャになるのはしょうがない
- 語彙を揃えるというのが重要
MogileFSバックエンドにPrivate S3作った話
各サービスがそれぞれ違った仕組みで独自に構築してた
IaaS上で再構築するのは非効率
OpenStack SwiftがS3互換はメリットだけど開発コストの相殺は十分だった
MogileFSは十分安定してた
S3でよくね?
オンプレの方が明らかにコスト的に優位
Baytと呼びます。
アーキテクチャとしてはわりとシンプル
全社的に使うには心許ない部分
使われてくると負荷とか増えてくるので、メトリクス充実化・可視化していった
- Munin (特別製の使ってて黒いw)
- Kibana
- BigQuery
mogilefsdがスケールしない…
プロセスが増えていかない
700プロセス辺りから親プロセスが応答しなくなる
頭打ちと言うよりも不全状態
→ 親に気合いを入れた
プロセスの優先度を最強にした
過剰なやる気状態でサーバーが落ちるようになったw
MHAがフェイルオーバーしてくれるけどデッドロック自体よくない…
使ってなかったインデックスが5.5になって使われるようになったことが原因だった。
いらないのでドロップ。
実URLへのreproxy処理
実体を返す所だけどここでは違う
X-Reproxy-URI
Gatewayが実体にアクセスしてる
- 普通にプロキシ
- レスポンス返ってきたらゴニョゴニョしてまたプロキシ
複数URIにリトライとかしてくれたりネットワーク負荷かけずにできるから便利。
マルチバイトエンコードしてパス保存するからけっこうカラムサイズが必要になる。255→512
- nginx-luaじゃなくてmrubyにしたのは?
- 開発者がいるから
- 直してくれる
後半
S3互換APIを作った話
Slide
Railsで。
S3と同じインターフェースを作る=設計しない
OSSクライアントを利用可能
さくらのオブジェクトストレージAPIもS3互換だから参考にした。
APIチューニング
rails/all → rails-apiにしてダイエットした
XMLの生成が遅い → ox早い
LT H2OとPHP
H2O
kazuhoさん作
apache,nginxよりも簡単にPHP使える
問題は秘伝のたれが少ない
サービススクリプトとかもいい感じのがない
Nginxのfastcgiの設定闇が深い。
WAFとかの動作にも影響が発生する可能性もある。
Apacheはハンドラの設定をミスるとセキュリティ的な問題が発生するかもしれない。
そこら辺からコピペしたらやばかったりする。
Mozillaがいけてる設定を公開してくれてる。
いい感じのを出すサービスがある。
歴史あるWebサービスに2年半携わって起きたこと
入社時
- Trac使ってた
- レビューしてない
- SVN、クライアントはgit-svn
- PHP 5.3
- Webistrano
- 素のSQL。ORマッパーなし。
- テストなし
- パッケージ管理もなし
- 開発環境はMaglica。簡単にサーバーができるやつ。
GHE使うようになった
- 全社的に導入された
- 今はこれが当たり前!
- レビューするようになった
- プルリクプルリク
- PHP → PSRを意識するようになった
PHP-CS-Fixerの自己
- Javascript含むPHP
- Javascriptの
else if
がelseif
に… - 差分表示にスペースとか含めないようにしてたから気付かない
- エラー
レビューするようになった
- 共通認識生まれた
- レビューしてる中でもっと大きい視点で話をするようになった。
テストの導入
- E2Eテスト RSpec+Capybara
- 正常系だけでもあると非常に便利
- ユニットテストPHPUnit
Composer
- ライブラリ探してバージョン管理に追加してた
- composer.json書いてバージョン管理
- 導入簡単
- PHP5.3.2以上はやった方が良い
- デプロイ時にcomposer installする
- venderディレクトリはバージョン管理に入れない
- 社内用Composerライブラリ作った
ローカル開発環境ができた
- Vagrant + Puppet
- デザイナにこれ動かないんですけどって言われても puppet apply してくださいで済む
Wheneverでcronの変更を自動化した
MySQLバージョンアップ
第1回ペパボテックカンファレンス参照。
ORM導入
- Eloquent ORM
- LaravelについてくるORM
- 既存を修正するとき、新しく作るときに置き換える方針でやった
- SQLには戻れない
画像サーバをFTPからBaytにした
- PHPのFlysystemっていうファイルやりとりを抽象化してるライブラリがあったけど
- PHP5.4から対応だったので5.3に対応させた
まとめ
- 粛々とコツコツがんばろう
尋常じゃない速度でドックフードを食べる方法
ドッグフーディングな話
Sqale
自社製品を使ってよくしていくこと
メンテナンス=爆発
今夜、インターネットの片隅で。 〜ウェブサービス開発ちょっといい話〜
鹿くんさんがいいキャラクターだった
「最高のカートにしてくれ」
購入完了までに6画面ある
買う人っていっぱいいるんだから、その人に応じて最適な画面を出せばいい。
一枚の画像で表現するのは難しいので動画を作ってみた。
→ コンセプトを理解してもらえて、見積もりとか色々できた。
ProtとかInvisionでプロトタイピングツールがあるからチームのみんなでやればよかった。
詩を書いた
哲学駆動開発
エモすぎて具体性がなくてイマイチだった
属人性をなくすために開発しよう!
カート画面のためのCSSフレームワークを作った。
そしてスタイルガイド作った。
エンジニアが勝手にできるようになったから仕事がなくなったw
ユーザーテストやった
動画を会議室でみんなで見た。
それをふせんにしてホワイトボードにはりつけた
これらを直したい部分を洗い出して検討した
動画は自分で編集した
ポエムもプロトタイプの一環。
デザイナに限らずこういう話していくのが大事。
LTふたつめ
銅鑼パーソン総選挙
エンジニアの考えた企画はエンジニアが面白いものなので悪ふざけが過ぎると倫理の話になってしまう…
OSXアプリ開発の話
デスクトップアプリの開発
Cocoaプログラミング
関西弁で書かれてるCocoaプログラミングの本がある
Electron未来ある
仮想通貨自動トレード記Part1
Bitcoinの売買をするYAPCとは関係のない話w
前回も話してた人w
山師…
将来の夢はサンドイッチ屋さんらしいです
LT 3回目
スピリチュアル枠
YAPC::Asia Tokyoでベストトークをとる方法
トークしなきゃダメって事はない。
トークしなくてもすごい人はいっぱいいる。
プロポーザルを通す。
プロポーザル・イズ・ラブレター
周りの人にこういう話しようと思うんだけど、みたいなことを言いましょう
普段から何か活動してないと何か活動しましょう
タイトルが9割
タイトル必死
SEO対策的なもの
シェアやブクマで見切れないタイトル
内容には予習のためのリンクとかが必要
過去事例で特殊な自社にしかないような事例はイマイチ
色々話してたけど、ベストトーク取ろうとしなくても非常に為になる話だった。
自分がしゃべりたいものを自信を持って話すことが前提!!
流行り物をしゃべってはいけないってことじゃない。