何のためにバックエンドがあるのか？改めて、考えてみよう。

## 概要
※ 今回の記事は、特に、**初心者の方** および **初心者教育を担当する方や管理・採用する方** 向けの内容です。

### 背景
近年、コーディング領域においても生成 AI が非常に流行っており、そのレベルも **「エンジニアの作業支援」** に止まらず、**「未経験者や初学者が自然言語のみでソースコードを全て生成できるレベル」** になってきています。

その結果、**『エンジニアじゃなくてもプログラム（ソースコード）簡単に書けるじゃん！』** みたいな風潮にもなってきており、それ自体は個人的には良いことだと思うのですが、
一方で、いわゆる **"モダン（イマドキ）でオシャレで普通に使えそうな画面"** が生成されたら「（ほぼ）完成した」と思ってしまう人が今後は増えるのかも？…という **リスク** を感じました。

特に、日常生活でアプリの「画面（フロント）」以外に触れる機会が少ない「未経験者」「初学者・初心者」が、AI キッカケで **"アプリ開発"** に参入した際に、フロントの表面的な完成度だけで他の考慮を欠いてしまうことが増えないといいな…と思って、この記事を書いてみました。

### この記事の主旨
世の中の、Web を含む多くのアプリケーションは、当然ですが、画面（フロント）以外にも、技術的に多くの考慮がなされており、それによってユーザー体験を良くしたり、セキュリティをしっかりとするために日々改善が行われています。

当然、フロントエンド以外にも、バックエンドは勿論のこと、ネットワーク、セキュリティなど様々な面で技術的に支えられており、それぞれの領域に特化した〇〇エンジニアもいるわけですが、
今回は「フロントエンド（UI）」に焦点を当てやすい初心者を対象に想定しているため、そのわかりやすい対比として「バックエンド」という単語をタイトルに使用しました。

あくまで **「それっぽい UI だけ出来ても完成じゃないよ！」** という事を伝えるための表現であり、実際には様々な技術的な領域を含んで、フロントエンド以外の考慮の必要性も伝えたいという主旨があることを、ここで明言しておきます。

また、今回の背景が AI サービスがキッカケで、以降の説明も生成 AI を中心に記載してますが、別に AI に限らずに、「UI 以外の考慮の重要性」について言及しています。

## アプリが作れる生成 AI の実例
現在、一言に「アプリを作る」と言っても、たくさんの生成 AI が存在します。

例えば、エディタ上で「Python で ToDo リストを管理するアプリを作って」と指示すれば、`.py` ファイルを勝手に生成したり、Django フレームワークまで考慮したファイル構成を組んでソースコードを自動生成してくれたりも可能なサービスも存在します。

今回は、下記が説明に使いやすそうなので、　こちらを取り上げてみます。

### Create.xyz
**Create**（[create.xyz](https://create.xyz)）は、自然言語でプロンプトを入力すると、自動で Web サイトを制作してくれる AI サービスです。
画面のプロンプト入力エリアに、作成したいアプリの特徴などを英語や日本語などで指示し、「Generate」ボタンを押すと、コピー可能なソースコードを自動生成してくれ、画面のプレビューも確認できる面白い Web アプリケーションサービスです。

![create.xyz.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/787582/d5c3a3c1-096f-2452-525e-636388b932c3.png)

様々なサンプルもあり、ダッシュボード、サインアップ画面、料金プラン画面等の単純なものから「ファイルアップロード後に AI が内容を要約してくれる Web サービス」等まで、AI 活用するようなサービスまで幅広く生成できます。

操作する場合、下図の様に自然言語でプロンプトを指定すると、それにあった画面を生成してくれます。もちろん生成 AI ですので、プロンプトで明確に指示していない部分は、生成の度に表現（＝ ソースコード）が変わってしまいます。

![create_sample_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/787582/855a628d-2618-99e2-1286-aa69384c30a4.png)

無料アカウントを作成してログインすると、ソースコードを表示してコピーできるようになります。

![create_sample_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/787582/a544fe8a-f47c-b72b-69c2-d645ba3252be.png)

## AI で生成されたアプリはどう扱われるべきか（意見）
これから、一定の IT エンジニアであれば至極当然のことを述べていきますが、初学者向けに記載していますので「当たり前だろ」「知ってるわ」と思わず、どうかご容赦ください🙏

このような AI サービスを利用すると、**「オシャレなダッシュボードの UI。編集機能まで備わっており、生成時点でデータの新規作成、編集・更新、削除までできる画面になっている！」** というものも一発生成できます。
上記の様な例では、画面を描画するフロントエンド（＋ 最低限の動くサーバサイド処理）のソースコードが生成されます。

一見、今すぐ世の中に公開しても使えそうな画面です。実際に利用できるデータベースに接続し、独自ドメインを用意したらすぐに商用利用もできそうです。

では、通常ならば、この時点では何を気にすべきでしょうか？

### 生成されたアプリで考慮すべきこと
下記以外にもたくさんあると思いますが、代表的なことを簡潔に記載します。

- 実際にちゃんと動くのか **（テスト）**
- 「ちゃんと動く」の「ちゃんと」って何だろうか **（仕様）**
- 「問題なく」使用できるのか **（性能・セキュリティ）**

この中だと、特に気にすべきは **「性能」** と **「セキュリティ」** です。

#### なぜ「テスト」を気にするか
単純に、動かないと使用されないからです。
動かない場合、初めて訪れた人はアプリの "ユーザー" にすらならないでしょう。

#### なぜ「仕様」を気にするか
仕様に考慮漏れがあると、使いにくいからです。また、他製品との優位性がハッキリしていないと、わざわざそれを使う魅力を感じられないからです。

- 新規作成や編集画面は、別ページに遷移するのか？ダイアログで表示するのか？
- ある操作をしようと思ったら、わざわざ不要なステップを踏む導線になっていないか？
- 他の類似サービスにないユニークなポイントは何なのか？

これも、考慮がなされていなければ、初めて訪れた人や「使いづらい」と感じた人は、アプリの "ユーザー" にならないでしょう。

#### なぜ「性能」を気にするか
性能が "しょぼい" と、一見良さそうだと思っていたユーザーが離れるからです。
例えば、一定のアクセス量に達すると動作が重くなったり、突然「503（サービス停止中）」が画面に表示されたりするサービスはマズいですよね。

#### なぜ「セキュリティ」を気にするか
わかりやすくいうと、主に「情報漏洩とかしないか」「攻撃に対して対策しているか」です。
セキュリティの問題が出るまでは、一度ユーザーになってくれる方がいます。そして「普通」に使えると思っています。でも、セキュリティに問題があれば、その「普通」に使える日常がある日、突然、崩れるわけです。
そうなった時、問題の内容次第では、良くて **「ユーザー離れ」**、悪くて **「クレーム」**、最悪のケースは **「訴訟」「損害賠償」** です。

### フロントエンド（UI）を生成する AI の場合の注意点
現在の生成 AI は、主にフロントエンドのソースコードを吐き出すものが多いです。
つまり、「バックエンドが無い」または「あっても最低限」です。しっかり書かれてる場合もあるかもしれませんし、時間が経てばしっかりするでしょう。しかし、それでも **確認が不要** にはならないと思います（"確認" の仕方は様々ですが）。

#### バックエンドは重要な裏方さん
ここで、**タイトル回収 ①**です。**アプリは、フロントだけ動けばオッケーな訳ではありません。** ちゃんとバックエンドも考慮して用意しないとサービスとしては利用できません。

しかし、バックエンドの存在は普段、一般の消費者の目には見えません。皆さんがみているのはフロントエンドの美しい画面レイアウトと、そこに表示される「バックエンドで処理された結果」のみです。

どのように何をしているのかがわからないので、セキュリティ的にも重要な役割をになっているし、サービスの使いやすさや「普通に使える」を実現しているのは、フロントだけでなくバックエンドの存在（やそれ以外）も大きいのです。

だけど、綺麗なフロントエンドを吐き出す生成 AI の利用者が、IT に馴染みのない人や初学者だった場合、**このバックエンドの重要性は軽視されがち**（または知らない）なのです。

#### バリデーションは、バックエンドで。
例えば **バリデーション** などはバックエンドですべきです。

**バリデーション** とは、「必須入力の項目は入力されているか」「ありえない日付を設定していないか」「数字しか許さない項目に文字列を入れていないか」などをチェックすることです。

ログイン画面で入力するメールアドレスやパスワード、プロフィール画面の誕生日設定、クレジットカードの登録画面など、正しく安全に動くように配慮されていなければいけません。

これらは、実はフロントエンド（画面）上でもチェックできますが、あくまで利便性目的で、**実際には裏側（バックエンド）でも必要です。** なぜなら、フロントエンド（画面）はブラウザの標準搭載のツールで誰でも簡単に改変可能だからです。

つまり、本来許可しない値が入るようにできてしまうし、そのまま送信も可能だし、悪意があれば、クラッキングコードを送信することも可能です。

#### 世間には「サーバーレス」っていうのもあるが？
「サーバーレスアーキテクチャ」やそれを提供するサービスは、実際にサーバーが存在しないわけではなく、面倒なサーバー側をプラットフォーマーや他のサービスが巻き取ってくれているだけで、**実際にはサーバーサイドがちゃんと存在します**。

**「本当はセキュリティとか含めてあなたが考えなければならない部分を、お金払ってくれたら、私たちが全部やりますよ！」** っていうサービスなんです。

つまり、バックエンド側が必要で、重要な役割を持つことは変わりません。それに、一般消費者のユーザーからしたらアプリがサーバレスなのかなんて **関係ありません**。
つまり、業者がサーバ側をやってくれると言ったって、提供サービスに何か問題があれば、**結局、顧客対応は、運営者・提供者がしなければなりません**。

### バックエンドまで生成する AI の場合の注意点
ここで、**タイトル回収 ②**です。**バックエンドまで自動で生成されても、人間の誰かが仕様を理解し、対処できる状態でなければいけません。** さもなくば、これもサービスとしては利用できません。

つまり、これまでに述べた様なことを **「人間が最終確認する必要がある」** ということです。

万が一、サービスやアプリケーションにおいて、問題が起きたりクレームがあった時、問い合わせが来た時、「何が起きてるかわからない」のは提供者・運営者としては筋が通りません。つまり、確認する必要があり、確認できる知見を有した人が必要です。

**利用者が人間である限り、提供者には責任をとる存在が必要で、責任は人間にしか取れません。**

つまり、例えバックエンドまで網羅する自動化ができても、人間の存在は（すぐには）省略が難しく、無知な人間がアプリやサービスを作ることには一定のリスクがあります。

### 今回言及してないけど、他の心配もある
今回は、特に詳しく記載しませんが、生成 AI を利用した場合、他にも具体的な考慮が必要な課題はまだまだあります。

- 著作権などの **「権利」の問題**
- 犯罪など、悪意ある利用者に **「悪用」される問題**
- 悪意はないけど、無知が故に、作ったアプリが **「違法」な動作をしてしまう問題**

それに、毎年の様に、大企業やビックテックでも **情報漏洩** や **セキュリティ事故** を起こしているニュースが絶えません。情報セキュリティ教育機関がセキュリティ・インシデントを起こしたニュースもありました。世界一の一流企業だって **"やらかし"** があるのです。

「このサービスは、セキュリティも安心できるように設計されてるし、規約上も外部に漏れないことを担保されてるので…」とか言ったって、その当の大企業がたまにセキュリティ事故をする可能性も割とあるじゃんってことです。

「だから使えない」と言いたいのではなく、顧客と品質に対する姿勢の問題です。**「簡単アプリが作れても、ちゃんと考えないといけない事、結構あるよ」** って事です。

そして、今回本当に言いたかったのは、別に「バックエンド」や「セキュリティ」に焦点を当てたかった訳ではなくて、**簡単にモノが生み出せたとしても、考えるべきことはたくさんあって、安易に商用利用しない方が良い** ってことです（安易にチャレンジすることは良いと思います）。

## 今回記事を書くほどに不安になった理由
繰り返しになりますが、今回の記事はあくまで、生成 AI などをキッカケに、アプリ・プロダクトの開発やそれらを利用したサービスを提供を考える方の中で、**リテラシーがまだ無い方や初学者の方** を想定して書いています。

最近、AI の話題がとても沸騰しており、私自身も活用しているし、将来性も利便性も感じてはいます。
一方で、AI に対する期待度が行き過ぎているシーン、もはや **"煽り"** に近いシーンもあると感じることはあります。

この先に予想できるのが、**「IT エンジニアじゃなくてもアプリが作れるツール」** を使って、アプリ開発を始める未経験者や初学者が増えること。
それは良いが、その中で怖いのは、そのままリテラシーが無い方が、流行りに乗って **AI 生成プロダクトをビジネスに使う（商用利用）ケース** が急増することです。
まして、お金を稼いでしまった例がたくさん上がってくれば、その流れは加速する可能性もあるとお思いました。

確かに、時間が経てばより素晴らしい AI も誕生するでしょう。
しかし、ここでも初歩的に言及できるくらいのまだまだ未完成な状態なので、気軽に商用利用としてサービス提供者になってしまう前に、他に考慮すべきことはないかを一度考えてみる必要性はあると思います。

初心者や初学者がすべてて悪いという訳では全くなく、「技術的観点を軽視している人」や「技術的に成長姿勢や勉強意欲がない人」が、先端技術を濫用することを、「AI スゴい！」の過熱具合を見てちょっと危惧しちゃいました。

語弊があるかもしれないし、よろしくない表現かもしれませんが
要するに、**AI が怖いのではなく、「にわか」爆増が怖いのです。**

### Create.xyz のツッコミどころ
※ 執筆時現在の時点における所感です。

生成 AI のサービスにも、まだまだツッコミどころはあります。例えば、今回例に出したものにもあります。

Create.xyz は、おおよそのコンセプトややりたいことには賛同できます。技術的にも面白いです。

でも、実際に生成アプリが Web API の `Window.prompt()` を使った UI になっていたり、この Web サイトの運営への問い合わせ（Contact Us）が `mailto:` になってたりだとか、入り口のこの時点だけでも、単純に「セキュリティ面でも考慮意識が高くなさそうな運営だな」「これで作られているアプリはそのまま利用はできんな」と思ってしまいました。
会社概要も、わかりやすい情報がサイト内からすぐに見つけられないし、単純に技術者としては色々と不安点が多いです。

にもかかわらず、このサービスが「まじでスゲェ！」「エンジニアオワタ」みたいな盛り上がりを見せると、ちょっと焦点が局所的に狭まったりしていないかなと感じました。

「まだリリースしたばかりだから」と言われたらそれまでかもしれません。
しかし、現時点でわかっているだけでも初歩的なセキュリティホールがあるのに、それで何か商用リリースしてお金取ってしまう人が出てきたら大丈夫なのだろうか？…と、ちょっと不安になったので書いてみました。

#### ちなみに

ここで登場した `prompt()` や `mailto:` は何がリスクなのかは、ぜひご自身で調べてみてください。それこそ、生成 AI で聞いてみても良いと思います（その回答が本当なのかも確認してみてください）。

## まとめ
今回の記事で伝えたいことを改めて要約します。

**「AI で生成されたアプリは、そのまま使えないよ！（わかってると思うけど！）」** ということです。

まず、大前提としてアプリケーションは UI 以外にも考慮すべき点がたくさんあります。

生成 AI で簡単に **"それっぽいフロント（UI）"** 作れてしまうと、特に未経験者や初学者は、それで「ちゃんとしたアプリがほぼ出来た」と思い込んでしまい、考慮すべき点に注意がいかずにアプリをリリースしたり、チェックが不十分なまま次のフェーズにいってしまうかもしれません。

しかし、生成したアプリを「問題がないか」をチェックすることなくリリースすることはリスクがある行為であり、**"問題がないことを判断をするための知識"** は必要になります。
また、「何か問題が発生した場合に修正しなければいけないケース」「新しい機能を追加するケース」「既存の機能を変更・削除するケース」において、それらの変更が正しいことを判断する場合にも、判断ができるだけの知識が必要になります。

なぜなら、それがプロダクトの価値、ひいては事業主・企業への信用に影響するからです。

そもそも AI に限ったことではなく、**何かを他者に任せるならば、任せる側にも責任があり、任せる側がそれを管理し得る能力が必要である** と思います。

プロダクト開発について、改めて考えてみるきっかけになればと思い、本記事を執筆いたしました。
最後までご覧いただきありがとうございました🙏


## 【おまけ】何のためにビジネスがあるのか？改めて、考えてみよう。
そういえば、画像生成や動画生成系の AI も特に話題ですが、「これで動画投稿がめっちゃ楽になるぜ！」とか思っていても、それもどうなんだろうと感じました。

現時点レベルの AI では、（一部を除いて）耳や目が慣れると不自然さに気づくし、コンテンツとしても独自性が出しづらいので、YouTube などのプラットフォーム運営側がそれをずっと黙認するかは微妙だと思います。

例えば、あなたが YouTube や TikTok や Instagram の運営側だとします。
AI が生成するスピードは、非常に効率的なので、普及するほどに人間のアップロードの比じゃないくらいに大量に Web 上にコンテンツが投稿されます。

AI のツールや活用ノウハウが出回って、「これで稼げます」とか「簡単に量産できます」みたいな情報商材や教育・コンサル等を起因に、**内容や雰囲気が同じような AI 系のコンテンツ** が毎日何百万〜何億とアップロードされるのをみて、「そのままで良い」と思いますか？おそらく、このままじゃまずいと考えるのではないでしょうか？

今でも AI で出来たものかは割と気づくし、普及すれば更に気づきやすい人も増えるでしょう。
現に、YouTube なら、量産コンテンツで収益化していたチャンネルが「他と似たようなコンテンツの投稿」などの理由でチャンネル停止したりしているケースも既にあるはずです。

ビジネスの運営母体は人間なので、営利目的だし、利用者がテクニックで攻略しようとしても、運営側の都合が大前提にあり、運営が「これ良くねぇな」って思ったらルールも仕様も急に変わることを忘れてはいけません。