Webアプリを作成して公開したい #1

初めての投稿になります。
記事は主に自己学習の備忘のために投稿していきます。

---
◆目的
　WEBアプリを作成して公開したい。

◆環境
 ・Tomcat9
 ・Java17（Sprong Boot）
 ・Maven
 ・SQL（どれを使うかは未定）
 ・Eclipse

◆考えていること
 ・ローカルだけでなくWEB公開したい
 ・仕事の業務に活用したいためセキュリティについても考慮したい
 ・ローカルと本番で環境毎にDBを変えて管理したい
 ・一旦は極力お金をかけずに運用したい（＝無料を目指したい）

---
身内から「こんなんつくれない？」と言われました。
仕事で4年ほど様々な機能の保守や開発を行っていきましたが
すでに環境が出来上がっている所に改修や追加開発を行ってきたため
インフラや基盤の知識はあまりありません。
スキルアップも兼ねてひとまずはミニマムでトライしたいと思います。
ミニマムのため、一旦は諸々無料の機能を活用していく方向で進めます。

おおまかな流れは以下なのかなと思っています。

１．ローカルでアプリケーションを作成する
２．Githubに開発したプログラムを上げる
３．デプロイする

色々不足もありそうです。
そもそも２から３の間に何が必要なのか全くわかっていません。
DBを環境毎にしたいのでサーバをどうするか問題などあるのかなと思います。

---
１．ローカルでアプリケーションを作成する
-
ひとまずデプロイを目指し、以下サイトでデモアプリを作成しました。
https://start.spring.io/

ProjectにMavenを選択し、
Project MetadataはArtifactに作成したいアプリ名を入れました。
groupとか入力したものがどこまでに影響あるかもわからないですね。
やっていく中で調べていきたいです。

追加した依存は以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3901612/4cbf5f04-81c8-1f1f-a630-4832349ce0cf.png)

足りなかったら後から追加します。
他は初期値のまま。GENERATEでダウンロードします。
zipファイルがダウンロードされました。

これをEclipseに取り込みます。
ワークスペースディレクトリの下に解凍したファイルを格納しました。
```
C:\pleiades\workspace
```

調べたところ
ファイル＞インポート＞一般＞既存のプロジェクトをワークスペースへ
からやるやり方ばかり出てきましたが、これでやってもプロジェクトが読み込まれませんでした。

ファイル＞ファイル・システムからプロジェクトを開く
で読み込めました。

デモアプリの取り込みについては以下の記事の箇所を参考にさせていただきました。

https://qiita.com/grundtein/items/a22f2995bdeee1916f29#spring-boot%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B


２．Githubに開発したプログラムを上げる
-
ひとまずGitのアカウント登録をしました。
あとこちらをインストールします。
https://git-scm.com/

ダブルクリックでインストーラーを起動しましたが
英語が読めないので一旦全部NEXTにしました。
ミニマムでやるので大丈夫でしょう（多分）
ダメだったら後ほど追記します。

ローカルでリポジトリを作成する手順はこちらに沿ってやりました。

https://qiita.com/grundtein/items/a22f2995bdeee1916f29#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

追加されたようです。
何もなかったリポジトリの欄にユーザ名でリポジトリが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3901612/f844a87b-9f36-81ec-b029-13d9b380e955.png)

公開になっていたので、設定画面の「Change repository visibility」から
非公開（プライベート）に変更しました。

続きはこちらを参考にしました。

https://qiita.com/daichiada/items/ae69da767a176d6714f1#-git-remote-add-origin-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E5%85%88%E3%81%AEurl-%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%A8%E7%B4%90%E4%BB%98%E3%81%91

この画面が
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3901612/8f1d54e7-d659-75f9-7b0c-110ea4a2f2cd.png)

こうなりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3901612/62da9814-3bb7-3e1b-f43f-877fdb6a33c9.png)

３．デプロイする
--
ここからが鬼門です。
公開したいのですが前準備がなにもありません。
調べつつ進めます。

色々調べてみると無料でできるものとしてHerokuを推している記事が多いのですが
2022年11月28日に無料サービスを終了してしまったようです。

動的サイトを作成すること、RDBの使用を考慮する必要があるため
以下のサイトを参考にfly.io、Railway.app、render.comあたりを使用しようと思います。
https://zenn.dev/chizu_puzzle/articles/c017e772c6faaa


【fly.io】
https://zenn.dev/rrraaa/articles/1c7c79d51786c7
無料だとおもったらデプロイしたら無料じゃなくなったらしい
無料枠のスペックオーバーが原因とのことです。

【Railway.app】
https://zenn.dev/gibjapan/articles/881d1e3a1241f1
なんだかいけそう...？

【render.com】
https://dev.classmethod.jp/articles/github-render-deploy/
こちらもなんだか使用できそうと思って進めてみましたが
Javaが使用できなさそうだったので断念しました。
もしかしたらできるのかもしれないですがやり方がわからなかったです。

簡単そうという単純な理由からRailway.appを使用してみたいと思います。
良し悪しを吟味するには知識が不足しているので
使ってみて過不足を確認していく感じになります。

続きは次回。