開発チームのテンションがアガる "Debug icon kit" を公開しました

f:id:mizonit:20210406081601p:plain


こんにちは、株式会社mikanでデザインを担当している @3izorin です。

デザインチーム(といっても一人なので絶賛募集中です)のブログは初めてですね。

今回のブログは短いんですが、 debug版のアイコンを作った話を書いていきます。

  • きっかけは毎週のQAから
  • できたもの
  • こうかはばつぐんだ!
  • OSSとして公開しました
  • おわりに
続きを読む

mikanのデータ分析基盤の歴史

こんにちは、株式会社mikanでデータ分析を担当している @ij_spitz です。

データ分析チームのブログも2本目になりますが、今回は前回の記事で少しだけ頭出しをしていたデータ分析基盤の歴史について書いていきます。

↓前回の記事はこちら mikan-tech.hatenablog.jp

英単語アプリmikanは2014年10月にリリースされたプロダクトでデータ分析基盤も年月を経て変わってきました。

その頃と比べると現在はAWSGCPで分析系のサービスが充実しており、知見も豊富になってきているので、現行の基盤以外は正直参考になりません。 また自分たちでもそんなことをしてたのかと疑いたくなるような運用をしていたので、ツッコミを入れつつ、温かい目で見ていただけると幸いです。笑

第1世代: Redshift(2014年末 ~ 2019年始め)

mikanの初期の分析基盤はRedshiftをメインに置いたものでした。

この頃僕は特にmikanに関わっていたわけではないのですが、2014年末くらいからRedshiftを運用していたという話を聞き、他の企業に比べても早くデータ分析基盤を用意していていたんだなと感じました。

調べたところ、Redshiftが正式にリリースされたのが2013年2月、東京リージョンでリリースされたのが2013年6月だったようです。

www.atmarkit.co.jp

www.atmarkit.co.jp

ログを収集する部分はFlyDataというサービスを使っていました。この頃はKinesis Data Firehoseのようなマネージドのログ収集サービスがなかったので、各社自前でFluentdを立てたり、試行錯誤していた時代だと思います。

FlyDataは導入のサポートが手厚く、mikanが知見のない中で素早くデータ分析基盤を作ることができたのはFlyDataの功績が大きいです(その節はありがとうございました🙏)。

Redshiftをメインに置いていても、ビジュアライゼーションはどうするかなどの詳細の部分は時期によって変わっているので、時系列に沿って順に紹介してきます。

HTMLでのビジュアライズ(2014年末 ~ 2015年末)

Redshift → Python CGI → HTML

Redshiftを導入した初期はHTMLでデータを描画していました。弊社の代表が過去の画像を探し出してきてくれましたが、CSSは無く、HTMLっぽさは一切ありません...

f:id:ishitsukajun:20210224003104p:plain
HTMLでのビジュアライズ

ただしこの方法だと

  • URLにアクセスがある度にRedshiftを叩いてしまうので表示に時間が掛かる
  • 指標を追加するのにPythonとHTMLをいじる必要がある

などのデメリットがあり、今考えるととても良い方法には思えません。笑

独自でビューを作っているのでカスタマイズ性はありますが、そこまで複雑な指標を追っていたり、特別な使い方をしたいというわけではなかったので無駄にコストだけ掛かっていました。

Spreadsheetでのビジュアライズ(2015年末 ~ 2017年始め)

Redshift → Python Batch → Spreadsheet

Redshiftを運用し始めてから少し時が経ってからはHTMLを辞めて、Spreadsheetに書き込む運用になりました。HTML時代よりはだいぶマシになりましたが依然として

  • 指標を追加するにはPythonスクリプトをいじる必要がある
  • Spreadsheetが無限に長くなっていき、メンテナンス性に欠ける

などのデメリットがありました。

Redashでのビジュアライズ(2017年始め ~ 2019年始め)

Redshift → Redash

mikanでは2017年の始めくらいから現在もデータのビジュアライゼーションにRedashを使っています。僕が副業としてmikanに関わり始めたのもこの頃で、界隈でもRedashなどのBIツールが使われ出した時期だと思います。

Redashを導入することによって、プログラムを書く必要がなくなり、圧倒的にデータへのアクセスが容易になりました。

またこの頃にRDB上のデータとログをJOINして分析したいなどのニーズも出てきたので、Data Pipelineを使用してPostgresql上のデータをRedshiftに持っていくなどの仕組みも構築していきました。

第2世代: Athena(2019年始め ~ )

Redashを使うようになってから、ある程度データへのアクセスは容易になりましたが、まだまだ課題はありました。以下がその一例です。

  • クエリが遅い
    • Redshiftのスキーマが列志向ではなく、RDBのようにJOINを前提とする形になっている(1つのユーザーのアクションログがactionsテーブルとparametersテーブルに分かれて保存されており、パラメータを取り出すには2つのテーブルをJOINする必要がある...)
  • Redshiftの運用コストが掛かる
    • 容量を空けるためにログをローテートする必要がある
  • 価格が高い

そんな中で2018年末に、ログの収集に使用していたFlyDataのサービス終了が決まり、Athenaをメインに据えた現状の構成に移行することを決めました。

Athenaをメインに置いた現行のデータ分析基盤(2019年始め ~ )

以下が現行の構成になります。AWSを使った基盤では一般的なもので特に変わった点はあまりないのですが、mikanでは少人数で開発を行っているということもあり、余計な開発コストや運用コストを掛けたくなかったため、できる限りマネージドサービスに乗っかる、構成をシンプルに保つということを意識しています。

f:id:ishitsukajun:20210222181922p:plain
現行のデータ分析基盤

現時点では現在の構成で大きな不満点はないので、大幅な基盤の構成の変更などは考えていません。しかしながら現状で大満足というわけでもなく、より一層データ分析をしやすくするために直近では以下のようなテーマに取り組んでいきたいと考えています。

  • 普段よく見るKPIを集計して保存しておくデータマートをRDBで用意
  • 集計をしやすくするためにAthena上に中間テーブルを構築
  • 速報値などのリアルタイムなデータ集計
  • FirestoreなどGCPサービスとのデータ連携

おわりに

長くなりましたが、以上がmikanのデータ分析基盤の歴史となります。公開するのをためらわれるような事例もありましたが(笑)、なんとかプロダクトをより良くしようと試行錯誤している様子が伝われば幸いです!

最後に弊社では一緒に働く仲間を募集中です。

この記事でご覧いただいたように、まだまだmikanはプロダクトを始めとして、開発環境、分析環境も改善していく余地がたくさんあるフェーズなので、少しでも興味をお持ちいただいた方はぜひご連絡ください!

mikan.link

mikanにおける不具合との向き合い方

f:id:mizonit:20210208232555p:plain

こんにちは。 株式会社mikanでiOSエンジニアなどをしている、飯田(@aviciida)といいます。 この記事は「モバイルアプリマーケティングアドベントカレンダー2020」の6日目の投稿です!

前回のTech Blogでは、「mikanがどんなテーマ・やり方で開発を進めているのか」をざっくり触れました。

テーマとしては大きく
ゴリゴリ改善回していく系(色んな改善を回して継続率・LTVをあげよう!)

開発基盤整える系(クライアントサイドのDBをFirestoreに統一しよう!)
があり、多くの開発リソースをそこに割いています。

しかし多くのユーザーさんに毎日使っていただいているmikanには、日々多くの問い合わせが寄せられ、不具合も報告されており、不具合修正の開発も必須になってきます。

この記事では、mikanでは不具合に関してどのように向き合っているか、また報告される不具合をどうCSチームと開発チームが連携して管理しているのか、という話を書こうと思います。


目次

  • 目次
  • 不具合との向き合い方
    • 1. 不具合の優先順位
    • 2. 常にユーザーの声に触れる
    • 3.「プロダクトチーム」として一丸となって向き合う
  • 不具合の管理方法を刷新した話
    • 1. 当時の課題
    • 2. 何をしたか
    • 3.「でも運用が大変なんでしょ?」
  • 今の課題: そもそも不具合を出さない体制に
  • 採用情報
  • 付録: mikanでのNotion活用術


続きを読む

mikanの開発項目の決め方とリリースまでのフロー

f:id:mizonit:20210208232453p:plain

はじめまして。株式会社mikanの @aviciida です。

主に 英単語アプリmikan の iOS開発をやっています。

詳しい自己紹介は 最近 noteにまとめたので お時間が許せば是非ご覧ください。

  • はじめに
  • 開発Issue の決まり方は?🤔
    • 1. クオーターのテーマから決めるもの
      • 改善サイクル回す系
      • 開発基盤整える系
  • 2. 突発的に発生するもの
  • リリースされるまでの流れは?🤔
  • おわりに


はじめに

実は今回が初めてのTechブログです。

前回の記事が過去最高に読まれたこともあり、少し緊張しています。

mikan-tech.hatenablog.jp


さて、今回の記事では 面談でよくエンジニアの方に聞かれる質問を書いていきます。 内容としてはテック寄りのテーマではないのですが、mikan社のプロダクトチームに興味がある方は是非ご覧ください。

採用候補者の方に よりそえるよう、Q&A方式で書いていきたいと思います。


今回は 下記の2つにお答えしていきます。

「開発Issue の決まり方は?🤔」

「リリースまでの流れは?🤔」


続きを読む

英単語アプリmikanのデータ分析チームがやっていること

f:id:mizonit:20210208232403p:plain

はじめまして、株式会社mikanでデータ分析を担当している石塚 (@ij_spitz) です。

データ分析チームがブログを書くのは今回が初めてなので、まずはこの記事でチームが取り組んでいる業務について紹介していきたいと思います。

内容的には広く浅くになってしまいますが、紹介する個々の業務については近々詳細な記事を出していく予定なので今後とも見ていただけると嬉しいです。

目次

  • 目次
  • データ分析チームのミッション
  • データを意思決定に活用する
    • 施策におけるデータの意思決定への活用
      • 1. 施策提案
      • 2. 現状把握のための分析
      • 3. KPI・ログ設計
      • 4. 効果測定
      • 5. 改善 & 施策提案に戻る
    • その他の事例
  • データを活用しやすくする
    • 分析の共有方法
    • 分析結果の蓄積
    • SQL学習の支援
    • 分析基盤の構築・運用
  • おわりに


続きを読む

英単語アプリmikanでは今後Firestoreを使っていくことにしました😸

f:id:mizonit:20210208232221p:plain

お久しぶりです。株式会社mikanでソフトウェアエンジニアをしている @hoshitocat です。

先月末に更新しようと思ったのですが、更新が遅くなってしまいました。 4半期の終わりだったために、やることが多くブログの更新まで手が回りませんでした。 見積もりが甘かったです、、、

前回はFirebaseのプロジェクト移行したよという話をしました。 これのおかげで、長らく続いていたFirebaseのプロジェクトの2重管理が必要なくなり、とても幸せになりました。

mikan-tech.hatenablog.jp

さて、タイトル通りではありますが、英単語アプリmikanでは今後Firestoreを使っていくことにしました✌🏻

という話をしたいと思います。

Firestoreを使うか迷っているけどどうしようと思っている方の参考になればと思っております。

  • はじめに
  • Firestoreを選択した理由
    • オフライン対応
  • Firestoreを使ってみて良かったこと
  • Firestoreを使っていての懸念点
  • まとめ
  • 最後に


続きを読む

Firebaseのプロジェクト移行完了しました😄🎉

f:id:mizonit:20210208232146p:plain

こんにちは。ソフトウェアエンジニアの @hoshitocat です。

  今回は、前回に引き続きFirebaseのプロジェクトを移行するという話です。

そして、先日ついに移行が完了しました。

実際何からやっていって、これからどうしていくのか?など書いていこうと思います。

  • 弊社のFirebaseを使い始めたきっかけ
  • なぜFirebaseのプロジェクトを移行したの?
  • なぜFirestoreを使うことにしたの?
  • やったこと
    • Firestoreに入っているデータの移行
  • これからどうしていくか
  • まとめ
  • 最後に


続きを読む