鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Hatena エンジニア Seminor #3

http://songmu.github.io/slides/hatenatech-3/#0

Dev と Ops

開発、運用エンジニアが協調している。
運用チームが開発チームのミーティングにも参加することがある

DC とAWS

AWSのサービスにLockINされてしまうのがつらい。

Docker

ログインして生活するものではない
アプリケーションごとにコンテナ化

バージョンの違うMYSQLを3台同時に動かせますか?

docker run -d mysql:5.5
docker run -d mysql:5.6
docker run -d mysql:5.7

Dockerで何ができるか

DCとクラウドで同じDocker imgが動く
DC←→クラウド サービスの盛衰で

それDockerでできるよ

アプリケーションデプロイ
構成管理ツール Chef,Puppet

すべての環境で同じDocker imageを使わないとメリット低い

Hatena

rpmパッケージを作るのが楽

Graphiteのような環境駆逐が面倒なもので

Docker自体を自前で運用するか?
オーケストレーションツール複数のサーバーにいれるもの)

AWS EC2コンテナ

専用サーバ

cockscomb

WWDCに行ってきた

モチベーション

iOS 62% Andoroid 37%
iOSの方がシェアがあり、後回しになりやすい

久しぶりのAndoroidアプリなので
Flagshipを作りたい。

Process
Pagerプロトタイピングをする
スマホのサイズの紙で。紙芝居をする→早い段階で評価する

ペーパープロトタイプですべての画面を洗い出す。
画面のつながりの矛盾をなくす

ハンバーガーボタンはユーザにとって最悪といわれている。
ハンバーガーボタンで混乱しない。

スクラム開発の手法を水曜から2週間。
火曜日にユーザビリティテストを行う。
水曜日にスプリント計画。

結構、きくのでおすすめ。

開発

AndoroidSdudioを使う。
Genymotionにお金をかけると、実機より早く感じるくらいのえむれーたー。

マテリアルデザイン
AppCompatを使う。
 ActionBarActiity

Fragment
FragmentTransaction
Fragmentmanager

Fragmentのはまりやばい
Fragmentの復元が暗黙的に行われてしまうので注意。
Ftagmentの入れ子でハマる
onActivityResult

commitを呼ぶタイミングが重要。IllegalStateExceptionで死ぬ。

見たまま編集
はてな記法
マークダウン

見たまま編集は
ContentEditableを使うとよい。Andorid4.4以降でないとつかえない。

見出し記法

リスト記法はてなはハイフン

協調は

手で確認したくないので、単体テストをかく。
テストを通るコードをかけばいい。

いつかはテストが通るコードにたどり着ける。

AccountManager(Andoroidアカウント管理)
アプリ間で使いまわせる

HTTPライブラリ

  • HttpURLConnection(SDK)
  • HttpClient(SDK)
  • Volley(google製)
  • Retrofit(Square製)

Retrofit

やばい。
インスタンスを毎回つくっても問題ないパフォーマンス

Hatenaのスマホエンジニア

スマート会をしている7名
8人目は君だ!!

マカレル

  • ランチがでる!
  • フリードリンク!

色々とってくれる
簡単アラーと通知
メトリックを追加できる!

全体的なお話

REST APIでMackerelへリクエストでサーバにためていく。ダッシュボードでみれる。
AgentはGoでかかれていて、オープンソースにしている。
Scalerサーバー側

AgentはGoで書いたのはなぜ
singleバイナリで
マルチプラットフォーム対応が用意
フットプリントが小さい。サーバの性能に影響しない

Angular.js

  • サーバ側でどこまで描写するか設計は難しい
  • ビルドツールにgulp

Mackerl

  • LVS
  • Nginx
  • Scala
  • Redis
  • Postgres
  • Graphite(時系列DB)

Scala

  • PlayFrame2
  • Slick

SlowTest

Specs2→ScalaTest
30→15分

PostgreSQL

  • JSON型が使える
  • JSONをキーにインデックスが張れる

Graphite

Python

  • Carbon
  • Whisper(TSDB)
  • WebApp(Django)

Graphiteから来たJSONレスポンスでグラフを書いている

Playでのバージョンアップでの苦労は

  • GitFlow
  • ステージングで検証しているんでくろうはしていない

mackerl

3拠点。在宅勤務もあり
しっかり決まりとして、在宅勤務をバックアップしている

コミュニケーションの機会を逃さない

  • ペアプロしまくる
  • チャットで発言しまくる

リモートという制約を理由する

  • 情報共有の仕組みを整える
  • チームをスケールできる

自律的にルールをきめる

  • 信頼を絶やさない
  • 自分でルールを決めだす(働く部屋を決める。時間を決める)

リモートアンチパターン

少数のエンジニアが勝手にリモートする
  • ノウハウが偏在してしまう。
エンジニアはリモートが得意?全然そんなことはない
  • 文筆業ではできるけど。
  • 情報共有をするのが難しい職種


音声環境を整えておく。

懇親会

最初緊張して話かけられなかったけど、話かけたら面白いお話が聞けて良かった。後半はスピーカーさんがテーブルにきて質問コーナーになりました。