Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Challenge for statup's cto from big company nagaaki hoshi

"Challenges of CTO that comes from a big company"

  • Be the first to comment

  • Be the first to like this

Challenge for statup's cto from big company nagaaki hoshi

  1. 1. Challenge for Startup's CTO from Big company 2017 October 28 https:/yourmystar.jp/
  2. 2. 自己紹介 星 永亮 (ほし ながあき) • 2010年4月 楽天株式会社入社 • 2013年 Webアプリケーションエンジニア • 2014年 DBA • 2015年 テクニカルディレクター • 2017年3月〜 ユアマイスター株式会社入社
  3. 3. 楽天カード時代 • プログラミングほぼ未経験で入社→半年の開発研修 • フロントがPHP、バックエンドがJavaのC向けWebアプリ • メジャーバージョンアップに際して、DBAにコンバート • MySQLからOracleへのDB移行がハイライト • 複数事業入り混じった案件で、PL&エンジニアで社内MVP • サービス運用担当者の時期には、先輩に教わりながら、いろん なツールを使って遊んでた
  4. 4. 新サービス開発室時代 • プログラミングすることはなくなった • プロダクトマネージメントがメイン • 予算策定、人材調達、開発リソース調整、要件の策定・・・ • 事業担当者が自分を含めて2名(Project 6) • 社長室直下 • ”幕の内弁当恐怖症” • 要件詰め込みすぎ • 手段が目的化
  5. 5. ユアマイスター株式会社とは 創業1年のスタートアップです。日本一「応援される」会社を目指してます。 会社名 ユアマイスター株式会社(Your mystar, Inc) 本社事務所 東京都渋谷区桜丘町3-2 第3野口ビル201号室 設立 2016年8月8日 資本金 1億500万円 株主 星野貴之 他 代表者 代表取締役社長 星野貴之 従業員数 社員13名 インターン25名
  6. 6. Maintenance House Cleaning Repair Cleaning Remake Exchange 大切なものを、もっと大切に
  7. 7. ハッピートライアングル Partner User Yourmystar お客さんがそもそも喜ばないことはやらない。 お客さんが喜んでもパートナーさんが苦しいならやらない。 お客さんもパートナーさんも喜んでも僕たちが幸せにならないことはやらない。 3つの点、すべてがハッピーであることが最低条件
  8. 8. 運営サービス サービスEC総合プラットフォーム「あなたのマイスター」と 大切なものをもっと大切にしたくなるメディア「RELIVERS(リライバーズ)」の運営を行っています。 大切なものをもっと大切にしたくなるメディアサービスEC総合プラットフォーム https://yourmystar.jp/ https://yourmystar.jp/relivers/
  9. 9. サービスEC総合プラットフォーム サービス登録サービス検索 サービス予約 メッセージやりとりメッセージやりとり サービス提供 支払い レビュー投稿 or サービス完了報告 ①さがす ②予約する ③サービス実施 ④サービス後サ ポート サービス予約確定 プロお客様
  10. 10. 今あなたのチームには何人いますか?
  11. 11. ユアマイスター入社時、僕らは 社員エンジニア数 0
  12. 12. どんな状況だったか 2016年8月の創業当時から、関わってます。 2ヶ月でリリースという短納期だったため、CakePHPを採用しました。リリース後も 、ユアマイスターさんのエンジニアが入るまで、しっかり機能開発と運用します!(半常駐)業務委託 エンジニア マーケティング 担当社員 もともとマーケティングが本業ですが、社内にエンジニアがいないので開発案件 の管理をやってます。 フロントのHTMLやCSSなら書けるので、画面系は自分でも実装しちゃいます。 学生エンジニア インターン プログラミングが大好きで、遅くまで没頭することもしばしばあります。 自分もいつか起業したいと思ってるので、それまではユアマイスターのサービス 開発、頑張ります。
  13. 13. まずい。
  14. 14. もちろん、CTOなんてやったことなかっ たので何をすればいいか考えた。
  15. 15. 採用? 開発? 組織マネージメント? 技術選定? プロダクトマネージメント? チームビルディング? 技術力育成? ブランディング? 技術的負債の返済?
  16. 16. まだ十分にメンバーはいないから、 開発をする上での無駄は増える前に 解決しておこう。 当時の結論
  17. 17. 僕がバリバリコーディングするより エンジニアたちが働きやすい環境を まずは
  18. 18. 技術スタック(2017年3月) Amazon EC2 Amazon S3 インフラ アプリケーション デザイン ローカル開発 検索 CI ミドルウェア コミュニケーション 解析 Web接客外部連携 SEOコード管理 監視 CMS
  19. 19. 技術スタック(現在) Amazon EC2 Amazon S3 インフラ アプリケーション ElastiCache デザイン ローカル開発 検索 CI Amazon RDS ミドルウェア コミュニケーション 解析 Web接客外部連携 SEOコード管理 監視 CMS
  20. 20. AWSやElasticsearchでの性能改善 ストーリーは巷に溢れてる。
  21. 21. ちっちゃなチームで、最速の開発をする ためにした工夫のお話をしよう。
  22. 22. 当時はどんな流れでやっていたかとい うと、
  23. 23. 当時の開発フロー Amazon EC2 develop branch master branch local branch 本番 STG Pull Request local branch Pull Request Push 手動リリース developからブランチ作成 手動リリース
  24. 24. 各工程に改善点を発見 Amazon EC2 develop branch master branch local branch 本番 STG Pull Request local branch Pull Request Push 手動リリース developからブランチ作成 手動リリース 課題 その1 課題 その2 課題 その4 課題 その3
  25. 25. 開発スピードアップのための課題 その1 検証環境にdeployするたびに、いちいちサーバーにログインし、 GitHubからソースコードを最新化していて属人化、対応時間がチリツモ。 1日何回デプロイすればいいの!!
  26. 26. 解決策 CIツール入れて人間は楽しよう。 PHP Unitでテストも書いてるんだから、 それも回しておこう。 (本当は順番逆ですが)
  27. 27. Circle CI CIツールです。Jenkinsのように、自前でサーバにインストールする必要がないので、 登録するだけで気軽に使えます。GitHubのアカウント連携するだけで即効です。
  28. 28. circle.yml YAML形式でビルド前、ビルド中、ビルド後の動きを事細かに定義できる。 ブランチによって挙動を変えられるのも嬉しい。 machine: timezone: Asia/Tokyo hosts: server11111: 111.111.111.111 dependencies: override: - composer install --no-interaction post: - #DB作成、ユーザー作成、権限付与を行う - bin/cake migrations migrate test: override: - mkdir -p $CIRCLE_TEST_REPORTS/phpunit - vendor/bin/phpunit --configuration phpunit.xml.dist --log-junit $CIRCLE_TEST_REPORTS/phpunit/junit.xml deployment: staging: branch: develop commands: - ssh hoge@server11111 /home/hoge/bin/deploy.sh <circle.ymlのイメージ>
  29. 29. 開発フロー途中経過 Amazon EC2 develop branch master branch local branch unit test deploy 本番 STG Pull Request local branch Pull Request Push Deploy 手動リリース developからブランチ作成 Trigger
  30. 30. 開発スピードアップのための課題 その2 検証環境用ブランチへのPull Requestのつもりで、誤ってmasterにPull Requestを作成。 そして、気づかずにそのままmergeからの、本番障害。
  31. 31. 解決策 プルリクエストを作る手順を自動化する 。エンジニアがするのはSlackにブランチ 名を呟くだけ。 にしたい。
  32. 32. zapier コードを書かなくても、選んで組み合わせるだけで、 複数のコミュニケーションツールを組み合わせることができるサービス。 参考: https://zapier.com/app/explore
  33. 33. zapier 設定は5分くらいで終わり、あっという間にミスがない運用ルールを構築できる。 Slack × GitHub 以外にもたくさん選択肢がある。
  34. 34. 開発フロー途中経過 Amazon EC2 develop branch master branch local branch unit test deploy 本番 STG Pull Request local branch Pull Request Push Deploy 手動リリース developからブランチ作成 Trigger
  35. 35. 開発スピードアップのための課題 その3 4名のインターンを受け入れていたが、知識やスキルはバラバラ。 インターン1人ひとりのソースコードレビューの負荷がめちゃくちゃ重い。 • 少人数のチームでは、インターンに形式的な研修を提供するのは難しい • コードレビューの中にも、視力検査レベルのものも含まれている悲しみ • 必要最低限のPHPのコード規約を守るレベルにしてからレビューに出して欲しい
  36. 36. 解決策 静的コード解析を入れよう。 しかも、ローカルが重くなるのは嫌だか ら、サーバーサイドでやってくれる何か をPull Request単位とかで。
  37. 37. Side CI 参考: https://sideci.com/ja
  38. 38. Side CIによる静的コード解析 PHPはCodesniferとPHPMDを適用している。 Pull Requestに指摘行にコメントしてくれるので、レビュー前にコード品質を上げられる。
  39. 39. 開発フロー途中経過 Amazon EC2 develop branch master branch local branch unit test deploy 本番 STG Pull Request local branch Pull Request Push Trigger Deploy 手動リリース developからブランチ作成 lint Trigger
  40. 40. 開発スピードアップのための課題 その4 インターンがハマっててもなかなかコミュニケーションが取れずに、 必要以上に調査や試行錯誤に時間をかけてしまう。 石川(社員) 高梨(インターン) 自分の開発に集中してるうちに、インターン がハマってることに気づけない! 社員のみんなが忙しそうにしていて、いちい ち質問するのは気が引ける! (ググればわかりそうなレベルだし・・・)
  41. 41. 解決策 #timesチャンネルを作り、 ググったキーワードを都度 Slackに書き残してみよう。
  42. 42. 試しにやってみたら、劇的に声をかけやすくなった。 jQueryの数字の処理でハマってる 画面をスクロールさせようとしてる 横に並べて表示しようとしてる
  43. 43. 現在の開発フロー Amazon EC2 develop branch master branch local branch unit test deploy 本番 STG Pull Request local branch Pull Request Push Trigger Deploy まだ・・・ 手動リリース developからブランチ作成 lint Trigger deploy
  44. 44. 少しずつの改善を積み重ね、 得られたもの。
  45. 45. 人間がすべき仕事に少しずつ 注力できるようになることで、
  46. 46. 一人当たりのスピード。 チームとしてのスピード。
  47. 47. 会社の成長速度に追い越されぬよう 開発が引っ張れる体制を目指して。
  48. 48. 質疑応答

×