Dinii(ダイニー)から学ぶ一流の技術選定のレビュー(これ知らないとエンジニアとしてキャリアが終わる)

# Diniiとは
76億円の資金調達をした飲食店のモバイルオーダーのサービスをやっている企業です。
この企業の技術選定から学べることが多いので、それを踏まえて動画のレビューをしていきます。

# レビュー対象の動画

https://www.youtube.com/watch?v=TH2yKqHGjrQ

# Diniiの記事

https://note.com/dinii/m/mf6424286cfa2

# なぜこの記事を書いたのか
***エンジニアとしてやるべきことは企業への価値提供***です。
ただコードを書いたり、好きだからプログラミングするのは趣味でやればいいですし、
自分で勝手に会社でも作ればいいと思います。

そしてエンジニアのミッションは
1.```技術を使って課題解決```
2.```事業を伸ばすために動くこと```

だと思います。プログラミングをすればOKではないです。

上の2つを実現するために何かヒントが得られるのではと思い、この記事を書きました。


# ビジネス視点のエンジニアを目指すべき(技術力だけは良くない)
プログラミング技術を上げたとこで、余程の技術力がない限り、生成AIには勝てません。
技術がそんなに好きならスタンフォード大学なり本場のアメリカで学べばいいと思います。

技術者として一人前になったからといって一流のエンジニアではないと思います。

価値提供をできるようにするために動くべきです。

自分もまだまだできていないので、どうすればいいのか一緒に考えていきましょう‼︎

# この企業が成長できた理由
動画の通りになってしまいますが以下の2点です。

1. ```ユーザーファーストの技術選定```
2. ```開発効率を徹底的に上げたこと```

です。よくダメな企業やエンジニアであるのが、「この技術が好きだから」とかです。
あとは「エンジニアが集まらないからGoなどの最新技術を導入しよう」などです。
これだとユーザーファーストでもないし、いいプロダクトはできませんし、事業も伸ばせません。

# モバイルオーダーサービスの課題
モバイルオーダーサービスといえばこんな感じです。

- ***スマホアプリをダウンロードさせる***
- ***Webサービスにアクセスして注文***

UberEatsを思い浮かべてみればわかりますね。
アプリをダウンロードして 、そこから注文するような感じです。

しかし、このようなサービスではこんな問題があります。
具体的には以下の3点です。

1.***ダウンロードいちいちめんどくさい***
ダウンロードは正直自分もめんどくさいですね💦
そんで通知がうっとうしかったりします。だから通知OFFにするので、お店からキャンペーンなどを伝えることができなかったりします。

2.***お客さん情報が得られない***
連絡手段もないですし、どういうお客さんが来てくれたのか、どこの誰がお店に来てくれるのか、リピーターにするための施策をお店が打てないという問題があります。

# Diniiの解決策

1.```LINEでQRコードを読んだらすぐ注文できる```
LINEのミニアプリを実装したみたいです。これは凄いと思いました。
LINEってSNSでユーザーが1番多いです。確か8000万人とかいたはずです。
生活の一部になっていますよね。使っていない人の方が珍しいですし、1番見られているツールです。
LINEビジネスも盛り上がっていますよね。(Lステップ、LMessageなど)
公式Lineに登録してもらえれば嫌でもユーザーの視界に入ったりします。
お店もキャンペーンなどを認知してもらいやすくなります。

2.```ユーザーを管理して、個別でファン化させることができる```
インフルエンサーとかでも公式LINEとかに登録させて自分の商品売ったりしている人いますよね。これをお店でもできます。そして1人1人のお客さんから何を注文したかでこのお客さんは何が好きなのかを把握した上でキャンペーンなどを出したりできるので、お客さんは自分の好きな物の特典が受け取れて、お店もリピーターに繋がって
WinWinになります。

3.```店員さんにタブレッドアプリを提供```
店員さん向けに提供してくれたら、店員さんも仕事しやすくなります。
PCより圧倒的に情報共有が簡単です。


## Diniiのサービスはどう広がっている？
***口コミで広がっています***。サービスを導入するお店もけっこう増えてきているみたいです。
***口コミで広がるって本当に使ってみて良くないと広がっていかない***です。
本当においしいお店や面白い映画なら誰か友人に話したくなりますよね？それと同じです。

これが```ユーザーファーストの技術選定```です。Goが好きとか、エンジニアが喜ぶからモダンな技術を使うとこではないです。***これができるから資金調達が70億もできる***んだと思います。

# Diniiの開発効率の最大化について
### モダンな構成SPAの現場をやったことある目線で
よくSPAでバックをRailsとかGoにして、フロントをNext.jsにして、たまにPythonが一部入っていてみたいな技術はよく使われていますが、これ***かなり効率悪い***です。

だって、SPA使える人探さないといけないし、バックとフロントのエンジニアをそれぞれ採用したり、バックとフロントで連携が取れなかったりで、***SPAの開発って意外と効率の悪さ***も感じました。それどころか***資金調達をうまくできなかった企業がエンジニアを集めるために「モダンな技術で開発できます」アピールをして使っているケース***もあります。(それじゃ資金調達なんかできないと思います)

### TypeScriptだけで開発をすることで最大化させる
Diniiはなんと***TypeScriptだけで開発***しています。これは***かなり採用コストを下げられます***。

システムはざっくりと言うと
- お客さんが注文するアプリ(React、Next.jsで可能)
- 現場の店員さんが注文管理するアプリ(ReactNativeはReact使えたら対応可能)
- お客さんの情報を分析するアプリ(フロントはWeb)

みたいです。これ***フロントエンド使える人いたら完結する構成***です。
***バックエンドはNest.js***を使っているので***これもTypeScriptで開発***ができます。
Node.jsの***Expressの進化版みたいなイメージ***です。

### 懸念点
***TypeScriptのライブラリが頻繁に変更***などがあります。
これがかなり開発を難しくしています。そんで***売上は1円にもならない***です。

### 懸念点の対処法
***リスクを避けた技術選定***をやっています。
***バックエンドをTypeScriptで開発しない工夫***です。

***データ取得***を```Hasura```と言うサービスを使っているみたいです。
***データ更新のみ実装だそう***です。つまり***データ取得の実装はしなくていいと言うこと***です。

# Hasura
***PostgreSQLサーバーからGraphQL APIを自動生成するプラットフォーム***です。

https://qiita.com/maaz118/items/9e198ea91ad8fc624491

以下はチュートリアルです。

https://hasura.io/learn/ja/graphql/hasura/introduction/

# Diniiから学ぶこと
一流の技術選定は以下の2点です。

1.```ユーザーファーストの技術選定```
2.```開発スピードを上げる工夫```

# 外貨を取るのがDiniiの目標
外食産業で海外展開して外貨を取っていくのが目標見たいです。
外貨取れたのはメルカリくらい見たいです。(実際に英語の求人票やテックブログなどあって海外基準です。)

https://www.youtube.com/watch?v=A4nNfdSovsY

# Diniiのテックブログ
よかったら読んでみてください。

https://zenn.dev/p/dinii