Flatt Engineering Blog

We are software engineers working in Flatt. We share our product updates and tech tips.

Android版PinQulアプリをリリースしました

はじめまして、株式会社FlattでAndroidエンジニアをしている前原理来です。 3年ほどAndroidアプリ開発をしています。

2018/04/07, 「PinQul」 Android版アプリをリリースしました。🎉🎉

PinQulとは

株式会社Flattが展開するライブコマースサービスです。 ご存知の方も多いかとは思いますが、ライブ配信と決済を組み合わせて認知行動と購買行動を直結させたライブコマースは、「淘宝(タオバオ)」や「蘑菇街(モグジェ)」に代表されるように中国で大きな興りを見せました。

それを受けて日本でも様々なプレイヤーがこの領域に参入してきたのが昨年2017年でした。今年に入ってもプレイヤーの参入は相次いでおり(一方、すでに3つほど撤退を決めた事業者も存在しますが)次世代ECとしてホットな領域です。

PinQulはBtoCの若い女性向けのライブコマースプラットフォームです。

メルカリチャンネル等が競合として挙げられることもありますが、BtoCとCtoCでは本質的に違うのでそういうわけでもありません。またPinQulと同じBtoCでもだいぶ方針の違うプレイヤーであったりするので一口にライブコマースと言う切り口で見てしまうのは危険です。

プライベートブランド制作や大手アパレルとのアライアンス等、Tech Crunchさんの記事で取材いただいておりますので興味のある方は是非ご一読ください。

「ユーザーと近い世代の方がいいものを作れる」東大発・Flattがライブコマースアプリ「PinQul」公開 https://jp.techcrunch.com/2017/10/05/pinqul/

30分で40着以上売れることも――ライブコマース「PinQul」がプライベートブランドを開始 https://jp.techcrunch.com/2017/12/19/pinqul-pb/

ライブコマースはECの有力なチャネルとなるか、PinQulとTOKYO BASEがPB商品の共同販売へ https://jp.techcrunch.com/2018/02/16/pinqul-tokyobase/

2017/10 にiOS版アプリが先行リリースされてからiOSアプリでしか利用する手段がありませんでした。
そこで僕がAndroid版アプリを作るということになりました。

開発期間

2017/10 中旬頃から開発を開始しました。
リリースは2018/04 なので約6ヶ月でリリースまで漕ぎ着けた形になります。
f:id:Flatt:20180407174822p:plain

開発リソース

Androidエンジニアは僕一人で、リリースまで一人で作りあげました 😤
自分が学部3年生ということもあり、学業と並行した開発でした。
平日は週5で授業があり、授業の合間、空き時間を見つけてコミットして、土日もガッツリやるという生活を送っていました。
そんなまったりペースの開発でしたが会社のメンバーは暖かく応援してくれました。

技術的な特徴

ソースコードは100% Kotlin

近年Android界隈ではKotlinが盛り上がっています。Javaより簡潔に書けて、イマドキな言語仕様も入っていて素敵な言語だと思っています。今から新規Androidアプリ開発するならKotlinや、ということでKotlin採用しました。
自分はKotlinを書き慣れているので、あと当時は僕一人でリリースまで持っていく予定だったので学習コスト等は考えず採用しました。

設計

自分は以前Fluxで動画再生アプリを作った経験があります。最初は、機能自体も大枠似ているし、その通り作ってもよいのではとも考えました。
しかし複雑に組んだ(レイヤー分けされた?)設計だと保守管理は楽にはなりそうですが開発速度が落ちると考えました。
そこで以下の点に絞って設計を考えました。

  • 今はリリース優先であり、開発速度は犠牲にできない
  • 自分のエンジニア思想的にコードは動けばいいということではないのである程度きれいな設計が欲しい
  • 後からJoinしてくる人に設計で負担をかけたくない

結果採用したのは、CleanArchitectureっぽいやつ(Gatewayはなく、UseCaseはある、等)です。

(参考にした記事) MVP(MVVM)とクリーンアーキテクチャに関する理解 - Qiita

https://github.com/android10/Sample-Data/blob/master/Android-CleanArchitecture/clean_architecture_layers_details.png?raw=true

ライブラリ選定

RxJava2を使っています。
通信周りはOkhttp,Retrofitです。
Picassoを使っているのですが、後から複雑なことがやりたくなったりしてきて少し大変だったのでGlideだったら良かったかなーと思っています。
layoutは基本的にConstraint layoutです。
Android Architecture Componentsとか、Daggerとか入れたかったんですが今回は見送りました。
今後余裕が出てきたら使っていきたいです。
あとは薄くUI周りのライブラリを使っていたり、Forkして改造して使ったりしています。

これからの目標

ようやくiOS版とAndroid版が揃いました。
ここからアプリのユーザーを増やして、使いやすくして、サービスを伸ばすためのスタートラインに立てました。
ユーザーファーストで考えながら、前述したライブラリ等の技術的チャレンジも行っていければと思っています。

採用

Flattでは新サービスを一緒に開発してくれるiOSAndroidエンジニアを募集しています。

www.wantedly.com

www.wantedly.com