Slide 1

Slide 1 text

2024 1 Engineer’s Handbook

Slide 2

Slide 2 text

本資料について この資料はmikanの技術・開発組織文化・メンバー・働き方などを 1つのドキュメントにまとめたものです。 これだけでは語り尽くせないのは言わずもがな、 この資料を通じて、mikanの技術や組織を垣間見ていただき、 興味を持っていただくキッカケになれば幸いです。 mikan エンジニアリングチーム ソフトウェアエンジニアのみなさまへ

Slide 3

Slide 3 text

アジェンダ 1. 会社・プロダクト概要 2. 開発組織 3. 開発フロー 4. 開発組織文化 5. 技術スタック a. mikan b. mikan for School

Slide 4

Slide 4 text

アジェンダ 1. 会社・プロダクト概要 2. 開発組織 3. 開発フロー 4. 開発組織文化 5. 技術スタック a. mikan b. mikan for School

Slide 5

Slide 5 text

5 日本の学習環境に合わせた “楽しく効率よく学べる” 英語学習アプリ 国内最大級の英語アプリ「mikan」 事業内容  

Slide 6

Slide 6 text

6 日本の学習環境に合わせた “楽しく効率よく学べる” 英語学習SaaS 塾・学校向け SaaS「mikan for School」 事業内容  

Slide 7

Slide 7 text

アジェンダ 1. 会社・プロダクト概要 2. 開発組織 3. 開発フロー 4. 開発組織文化 5. 技術スタック a. mikan b. mikan for School

Slide 8

Slide 8 text

8 組織図   英語アプリmikan mikan for School 職能問わずほぼ全員がプロダクトに関わります。社員数20名超、業務委託メンバーを合わせると50名超の組織です。 事業拡大を背景に、今後も新しい仲間を積極的に迎え入れていきます。

Slide 9

Slide 9 text

9 iOS モバイルアプリをメイ ンに開発してきたエン ジニア。健康になりた い。がラーメンがやめ られない。 @satoshin21 長坂 悟志 バックエンド、インフ ラ、Webフロントエン ド、iOSと渡り歩き、理想 郷に辿り着きました。好 きなキーボードは Keyball39です。 @ukoasis 山科 佑貴 チョコミン党所属のモバ イルアプリエンジニア。 最近カエルを拾ったので2 日に1回くらい餌のコウロ ギを捕まえる生活を送っ ている。技術よりプロダ クトが好き。 佐分 晴記 @Sab_swiftlin 開発チーム  

Slide 10

Slide 10 text

10 Android @nixii_squid 生駒 和弥 @Gumio 山中 爽史 新卒からAndroid一 筋のエンジニア。自 称スプラトゥーン最 強、休日は大型バイ クでぶらり旅 Android/Backendエ ンジニア。最近久々 に楽しくKotlinを書 いています。趣味は 旅行。キーボードは NiZ ATOM66を愛用 しています。 backend @hoshitocat 星 遼平 Backendエンジニ ア。妻と犬の2人と 一匹暮らし。趣味 はアウトドア。 keyball44を愛用。 Backendエンジニ ア。以前はiOSアプ リとWebフロントエ ンドも書いていまし た。大阪からリモー トで働いています。 @kagagaga_ga 鏡 魁人 開発チーム  

Slide 11

Slide 11 text

11 基本的にソフトウェアエンジニアは フルリモート勤務で運営しています。 北は北海道、南は九州まで全国津々浦々。 四半期ごとに開催している全社総会は東京に集まり オフラインで実施しています。 その他の出社は各チームの裁量で適宜実施をします。 また、Sick Leave制度などの休暇制度を取り入れた独自の福利厚生「mikan安心キット」を作成し チームメンバーを尊重した制度を積極的に整えてきました。 育児をしながら勤務をしているメンバーも多く、日々活用されている制度です。 今後も社会情勢や環境の変化に臨機応変に対応し、 常にメンバーにとって最適な働き方を模索していきます。 ※本件は今後変更される可能性もあります。 働き方  

Slide 12

Slide 12 text

アジェンダ 1. 会社・プロダクト概要 2. 開発組織 3. 開発フロー 4. 開発組織文化 5. 技術スタック a. mikan b. mikan for School

Slide 13

Slide 13 text

13 企画から開発までの流れ backlog整理 優先度づけ 開発メンバー 経営・PM backlog アイテム 施策実行フロー キックオフ テックチーム全員で 課題への認識を統一 MVP整理 理想体験をベースにテック チーム全員でMVPを どう実現するかを決定 実装 テックチーム&デザイナーで 実装を進める 意見 all members 新規施策起票 新規施策の起票は全メンバーが行います。サービスを触る中での気づきや要望を誰でも起票可能。 起票された施策を整理し、優先度をつけて実装に入ります。 backlog整理フロー

Slide 14

Slide 14 text

backlog整理会 14 週に1回、ロードマップを軸としてバックログアイテムのプランニングを行います。 経営・PMを主体に進めますが、オープンに実施しており、どのポジションでもあっても参加・発言が可能。 バックログアイテムの優先順位が決まったら、細かい要件や仕様を詰めていき、実装フェーズに移ります。 MTGの様子。基本的にオンオフミックスで実施。 backlogはnotionで蓄積。いつでも誰でも閲覧可能。

Slide 15

Slide 15 text

15 開発完了後1~2日でQAを実施し、問題がなければすぐにリリースします。最低でも週に一回はリリースを行っています。 大型機能リリースの場合は集まれる人はオンラインでサクッと集い、リリースの瞬間をむかえることもあります。 リリース頻度

Slide 16

Slide 16 text

16 リリース前の定常的な回帰QAについては、大部分を自動化し効率化しています。 現時点(2023/10)で回帰テストのおよそ75%をAutifyを使って自動化済みです。 自動テストの整備 利用しているAutifyサービスのキャプチャ

Slide 17

Slide 17 text

アジェンダ 1. 会社・プロダクト概要 2. 開発組織 3. 開発フロー 4. 開発組織文化 5. 技術スタック a. mikan b. mikan for School

Slide 18

Slide 18 text

18 開発メンバー含め、職能にかかわらずユーザーインタビューに出席し直接ユーザーの声を拾いにいくこともしばしば。 また、日々のストアレビュー評価やお問合せ内容は随時Slackに流れてくるので、それらの声も拾いつつ次の施策へ繋げています。 文化紹介 ユーザーインタビュー Androidエンジニアと取締役、それぞれ実施したインタビューの一コマ

Slide 19

Slide 19 text

19 施策が走っている際は、毎日朝会でダッシュボードを確認して施策の進捗を細かく確認します。 ダッシュボードも全メンバーがいつでも確認することが可能。 ポジションに閉じず疑問や意見がある際はSlackで積極的にコミュニケーションをとります。 文化紹介 データドリブンな意思決定

Slide 20

Slide 20 text

20 バックエンド、iOS/Android各チームで毎週振り返りを実施しています。 スプリントに関するKPTを考えて、改善サイクルを回しています。 文化紹介 振り返り

Slide 21

Slide 21 text

アジェンダ 1. 会社・プロダクト概要 2. 開発組織 3. 開発フロー 4. 開発組織文化 5. 技術スタック a. mikan b. mikan for School

Slide 22

Slide 22 text

22 iOSアプリ Swift iOS Androidアプリ Android Kotlin Java バックエンド Ruby on Rails TypeScript Go インフラ Firebase AWS Terraform GCP 分析 Redash Amazon Kinesis Amazon Athena BigQuery 開発全体構成 mikan

Slide 23

Slide 23 text

23 クライアントアプリ iOS ・UIKit → SwiftUI(移行中) ・MVC/MVVM → TCA(移行中) ・GraphQL ・SwiftGen ・Combine ・Swift Package Manager ・Multi Framework ・Deployment Target : iOS 15 ・Codemagic / GitHub Actions Android ・Compose(移行中) ・MVVM ・Jetpack(AAC, Dagger Hilt, Navigation) ・GraphQL / Firestore ・Coroutines ・OkHttp / Retrofit ・Kotlin (Kotlin率: 100%) ・Minimum SDK 28 ・Codemagic クライアントアプリ技術構成 mikan

Slide 24

Slide 24 text

24 バックエンド Language ・Go ・Typescript ・Ruby Architecture ・Clean Architecture ・MVC Framework ・一部Railsを使用  ・教材 &学習データ(移行中)  ・ランキング Others ・GitHub Actions ・Kustomize ・ko ・Terraform(infrastructure as code) Infrastructure ・AWS ・GCP Compute Engine GKE Cloud SQL …etc ・Firebase Firestore Cloud Functions バックエンド技術構成 mikan

Slide 25

Slide 25 text

25 mikanアプリ用の教材管理admin 認証 Firebase Authentication フロントエンド Next.js + React + TypeScript インフラ Firestore Cloud Functions デプロイ Firebase Hosting 社内システム(教材管理) mikan

Slide 26

Slide 26 text

26 開発全体構成 mikan for School 生徒向けWebアプリ React Language ・TypeScript Framework ・React Architecture ・Flux Backend ・Firebase Hosing ・GraphQL Package Manager ・pnpm Test ・Jest ・React Testing Library CI / CD ・GitHub Actions 先生向け管理画面 Ruby on Rails Language ・Ruby Framework ・Ruby on Rails Backend ・AWS ECS Cloud Services ・AWS (SES, SQS) ・Google Cloud Storage Test ・RSpec ・Factory Girl CI / CD ・GitHub Actions

Slide 27

Slide 27 text

インフラ構成図 27

Slide 28

Slide 28 text

28 CI/CD G suite ソースコード管理 データ分析 デザイン ドキュメント・タスク管理 チャット・雑談 オンラインミーティング ファイル・タスク管理 その他ツールなど

Slide 29

Slide 29 text

一緒にmikanを創りあげていきたいです。 少しでもご興味を持っていただけたらお気軽にご連絡ください。 ご連絡頂いた方には全員返信します。 カジュアル面談の際には、 より詳細な事業計画をお話しさせていただきます! ご連絡をお待ちしています! ご連絡はこちらから 29 https://mikan.link/careers ● iOSエンジニア ● Androidエンジニア ● バックエンドエンジニア ● デザイナー

Slide 30

Slide 30 text

We Are Hiring ! SNS等 拡散よろしくお願いします 30