Edited at

medibaを支える技術(19年度版)


はじめに

mediba を支える技術(2016年度)

mediba を支える技術(2017年度)

mediba を支える技術(2018年度)

と3年間、@medi-sugimotoが書いてくれていましたが、今年はバトンタッチしました。

技術戦略部、auサービス開発部を兼任しております、@mdb-hijikataです。



事業組織 (2019年09月1日 現在)

18年度〜19年度上期では、事業/プロダクトを組織の基準とし、

エンジニア職/ビジネス職が一体となって事業/プロダクトの伸張に貢献していく組織体系

となっています。

Screen Shot 2018-12-18 at 14.40.08.png

(社内情シスや、海外事業やバックオフィス等、サービス開発に直接絡まない部分については省いています。)

去年までの 各事業部側でビジネスの責任を、システム本部側でシステムについての責任を負うスタンス とは違い、システム組織と事業組織を一緒にすることで、システム側にも事業に対するコミットメントを、事業側もシステムに対する責任をお互いに負いながら共に事業を進めていく事業体制に大きく変化しました。


コミュニケーションデザイン本部

自社運営サービスの運営、グロースを主に担う。


ポータル事業


ゲームパートナー事業


  • ゲームアプリ配信に関わるメディアをおもに扱う事業(スマホゲーム自体を作るというよりもプラットフォームに近いです)




auパートナー本部

KDDIからの受託、および協業サービスの運営、グロースを主に担う。


ポイント事業


auパートナー事業


技術戦略部

事業にコミットする各エンジニア職種のマネージャーが集い、採用や組織づくり、キャリアプランの策定を担います。

各事業の事業形態にあった技術選択ができるよう、アーキテクチャや言語、フレームワークの指定や各プロセスの承認機能は持たず、後押しと共有を加速させることを目的としています。


開発の進め方


チーム制

medibaでは、ほとんどのサービス・プロジェクトで組織を横断したチーム制での開発を行っています。

Screen Shot 2018-12-18 at 14.40.26.png

多くのチームで、アジャイル、スクラムでの開発を行っており2週間スプリントのチームが多いです。

開発プロセスにモブプログラミングプロセスを導入するなど、新たな手法への取り組みも進んでいます。


ツール

開発推進していく上で重要なツールとしては以下のものを利用しています。


  • タスク管理


    • JIRA, waffle.io, Backlog



  • ドキュメント管理


    • Github, SharePoint, Backlog, RedMine



  • コミニュケーションツール


    • Slack



スクリーンショット 2017-10-04 18.58.58.png


横断技術

使う技術・ツールの選定に関しては、サービス・プロジェクトごとで構成されるチームに基本的には委ねられています。

課題であった、各プロダクト間での採用技術の違いについては、だいぶ解決の方向に向かっているように思います。


開発言語


サーバーサイド



  • PHP



    • Laravel, Yii2



  • Golang

昨年との比較では、YiiからLaravel、PHPからGolangに比重が移ってきています。

Rubyは(ほぼ)なくなりました。


フロントエンド


  • Web


    • Vue.js & Nuxt.js


    • React + Redux, Backbone.js, Anguler.js

    • TypeScript

    • Sass



Vue.js & Nuxt.js, Typescriptには特に力を入れて取り組んでいます。


  • アプリ開発



    • Kotlin, Swift, Java, Objective-C

    • Cordova, Xamarin



Cordova, Xamarinはなんだかんだ辛いところもあるように思います。。。


利用サービス・利用ツール


CI周り


  • ソース管理


    • GitHub -> GitHub Enterprise



  • 構成管理



    • Docker, Amazon EC2


    • Ansible, Chef

    • Vue-Cli



  • CI/CD



    • TravisCI, jenkins



  • デプロイ



    • Capistrano, Fabric, CodeDeploy



  • タスクランナー


    • gulp



  • モジュールバンドラー


    • Webpack



  • 監視・アラート


    • Mackerel, datadog, twilio




セキュリティ・試験周り


  • アプリケーション脆弱性


    • OWASP ZAP



  • ミドル脆弱性


    • vuls



  • 性能試験



    • Gatling, Jmeter, ApacheBench



  • レスポンス速度


    • Sitespeed.io




情報共有の活性化


グランドデザインレビュー

開発開始前のアーキテクチャを中心としたレビュー会

全てのエンジニアがこの会に参加可能で、他システムのアーキテクチャをチェックする場としてだけではなく、ナレッジの共有の場としても活用されています。


レビュー項目


  • サービス概要、スケジュール、体制

  • 需要予測、訴求方法、運用体制

  • システム構成、利用技術

  • キャッシュ設計

  • データフロー

  • リプレイスリスク、ユーザー移行

  • 複雑な処理のシーケンス...etc
    image (2).jpg


仕様承認会、S-in判定会

開発着手前に、仕様がビジネス/システム観点で矛盾や不備、見落としがないか?

検証完了〜リリースまでの間に、残件や致命的な不具合の漏れがないか?

を確認するための承認/判定会を実施しています。


Developers' Community ( fire & gold )

火曜日と金曜日30分程度の短い時間、不定期で開催される社内勉強会です。

技術Tipsや研究・調査の発表、社外勉強会のフィードバック、技術相談、障害の共有。システム本部横断の取り組みについてレビューしたりする場となっています。

IMG_3858.jpg


mediba Creator x Engineer ブログ

2015/10/1からブログを公開し始めました。デザイン、フロントエンド、バックエンドの技術 を中心に投稿しております。

各部で持ち回り様々なネタを可能な限り公開していくことで、社外への貢献活動の一環として行っています。また、情報を外に発信し社内外のフィードバックを受けることで各自のスキルアップに繋げていくことを目的としています。

http://ceblog.mediba.jp/


さいごに

大きな変化の合った2018年度から、2019年度上期はその変化の目的を認識し、下期以降のさらなる推進、変革に向かっていくための期間でした。

medibaのMissionである「ヒトに“HAPPY”を」を実現、推進すべくその実現に向けたサービスの創出/成長、またそれに寄与するための自己/組織成長に向けて会社として組織だて、また各個人が向かっていける環境を整備し続けています。

個人、サービスの成長につながる会社組織や体制、ルールを作ることで、よりよい技術活用に繋げられるよう邁進していきたいと思います。