no plan株式会社の技術スペック
どうも〜!no plan株式会社のおかむーです。
このnoteでは弊社の技術スペックについて書かせていただきます。
(この記事は2020年2月時点でのことなので、時代の流れによっては異なることが予想されますので、そのつもりで見ていただければと思います)
no plan株式会社とは
元面白法人カヤック アプリエンジニア: おかむー(@okamu_ro)
元面白法人カヤック サーバーサイドエンジニア: せりせり(@_serununtius)
のエンジニア2名が起業した会社になります。Qiitaはこちら。
no plan株式会社がやってること
・技術コンサル
・サービス制作、運用
・巨大な陰謀
・暇な時に適当な自社アプリ
といった感じです。
弊社の技術スペック
基本的には技術スペックは統一しています。主に以下の5つの項目について書きます。
1: バックエンド
2: フロント
3: アプリ
4: デザイン
5: その他
1: バックエンド
基本的にはFirebaseしか使わない方針にしています。理由は
・Firebase Authenticationでログインや認証周りが楽に開発できる
・DBはFirestoreを使用することで設計さえ頑張ればスケールする
・DBをFirestoreにすれば、RDBのような管理コストが削減できる
・総合的に開発工数が少ない
・pub/sub周りもとても楽
・FCMもIn-App Messagesも使える
などなどなど
(異論反論はみとめます)
「厳密にトランザクションどうするんだ!」
「大規模案件だと耐えれないぞ!!」
「カスタムログイン面倒だろ!」
などあるかと思いますが、そんなFirestoreが耐えれないような特殊すぎる案件は、それに合った技術を選びますし全てに対してではないです。原則としてです。また今のサービスの流行に沿った作り方をすれば基本耐えられますし事足ります。なので結論として「RDBはやっていきません!」ということになります。
\\ no plan株式会社はサーバーレスの会社です//
ここで、非同期タスク、ジョブ、メールなどのキューイングどうするねん!問題も出るかと思いますが、外部サービスに委託したり、Cloud Functionsで事足りるかと思います。
2: フロントエンド
・Vue.js
・Nuxt.js
・Next.js
・React
このへんでやってます。
基本的には、サーバーの方針で上げたとおりDBにはFirestoreを使うので、SPAになります。GitHub ActionsでCI/CD環境を構築し、masterブランチにmergeされればデプロイされるという形になります。
3: iOS/Androidアプリ
ほぼすべてFlutterでやってます。
Apple Watch アプリやOSレベルのもっとコアなところを使うアプリなどの例外を除けば、基本的にはFlutterで事足りますし、工数削減になります。もし、ネイティブアプリになる場合は、Swift / Kotlinを採用します。Swiftを採用した場合は、Storyboardは使わずSwiftUIで進めています。また、ローカルDBまわりでは、CoreDataやRealmもほとんど使いません。Firestoreのオフラインモードでだいたい足ります。
アーキテクチャとしては、FlutterはCleanArchitecture、SwiftUIはMVVMが相性がしっくりきてます。
ベータ配信は、Firebase App Distributionがとても便利で、GitHub Actionsからfastlaneを使って配信しています。
4: デザイン
・AdobeXD
・Figma
をメインで使用していますが、クライアントがいればそれに合わせますFlutterで実装する場合は、デフォルトのアイコンシリーズもしくはSVGで書き出して使用します。
SwiftUIの場合は基本PDFで書き出します。ベクターデータをなるべく使う事によって、
・拡大したときの劣化
・縮小されたときのアンチエイリアス問題
を防ぐことができます。
また、簡単なペライチのサイト作成ではSTUDIOをつかってます。
STUDIOはめっちゃ便利で、LPが爆速で作れてしまいます!!
また、最近ではCTOも愛用のNotionでCMSを作成して公開するパターンも試しています。
5: その他
1Password
社員には1Passwordアカウントを会社から発行し、パスワード管理はこれを使ってもらうようにしています。
G Suite
メール、カレンダーともにGoogleで統一しています。
また各サービスで2段階認証を必須としております。
Notion
wikiや議事録 / 仕様書などのドキュメント周りで使用しています。
Trello
Githubのカンバンでも良いのですが、クライアントと共有することが多いので、Trelloベースを使用しています。
(追記2020/02/26) 最近、GitHubの料金プランが変更され、GitHub Projectsも多く使用するようにになりました!
まとめ
・no plan株式会社はサーバーレスです!
・Firebaseに乗っかっています!
・Flutterを推し進めています!
最後に
表参道/渋谷あたりの美味しいランチのお店を1つ教えて下さい!!!