こんにちは。
1ヶ月ちょっとくらいだけ暇になるので、Webアプリ作ってみようかなとか思ってます。
今年1年間で何か継続して取り組みたいな、と思ってます。
よければ相談させてください。アドバイスがいただけたら嬉しいです。
あなたは誰?
僕自身は、
- あまり今までアウトプットとかは無いし、
- 特別何かできる訳でも無ければ、
- Web、クラウドネイティブでもないです。
- オンプレに慣れた(?)一般業務アプリC#エンジニアくらいなのですが、
とりあえず試してみたいというか作って遊んでみたいと思ってます。
そこで私が考えた最強の構成を考えてみました。
何を作りたいの?
何を作るのかは考え中です。
今後、Webアプリを作った後にモバイル環境にも適用させたいなとか安易に思ってます。
ハードルとかは度外視して今後1年合間で進めてそれ以上かかれば継続してやってみようかな、
というつもりです。
環境:Mac + JetBrains Rider
私が考えた最強はコレ
※何の為にやりたいのか理由は現在考え中です
カテゴリ | 技術 | 選んだ理由 | 理由2 |
---|---|---|---|
フロントエンド | Flutter | 試してみたい | モダンなUI?ウィジェット利用とやらをしてみたさ |
バックエンド | C#(ASP.NET Core) | C#を使いながらがいいから | |
データベース | AWS RDS (PostgreSQL/MySQL) | 使ってみたいから | tbd |
バックエンドの実行環境 | AWS Lamda | 使ってみたいから | tbd |
フロントエンドのデプロイ | AWS Amplify | 使ってみたいから | tbd |
どうでしょうか、ちょっと欲張りすぎですか?
なんで最強なのでしょうか?私もわかりません。
ただ、マルチプラットフォームなアプリを作りたいのは確かです。
多分、無茶苦茶なこと書いててツッコミどころ満載なのかもしれませんね笑
今後の進め方
段階を経てまずは AWSは利用せずに Webアプリやそれらに関わる色々なお勉強
次に クラウド知識のインプット と並行して 実践でWebアプリと連携
でやってみようかな、と考え中です。
ご意見お待ちしてます。
全部やったことないので、お勉強含めてやるつもりです。
継続するための工夫とか、効率的な取り組みとかあれば、ご教示お願いします。
あとはこれも必要とか、あった方がいいとかあればなんでもお願いします。
よろしくお願いします。m(_ _)m
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答13件
#1
総合スコア10228
投稿2025/01/27 02:38
Web系は専門外で、特にAWSについてはほとんど知識はないですが、誰も回答しないですし、気になった点があるので言います。
何を作るのかは考え中です。
プログラミングはあくまで「ものを作るための手段」ですから、何を作りたいか明確にしたほうがよろしいかと思います。
極論ですが、「作りたいもの」や「(仕事などで)作るべきもの」が無いのであれば、プログラミングをする意味はありません。
そうでなくとも、例えば、ゲームだと「アクションゲーム」と「カードゲーム」は求められる技術が少し異なりますし、組み込み系のような別分野ではAWSはあまり必要ないことも考えられますし、Webブラウザで動作するものでもフロントエンドのみで完結できてしまう、など要件によっては違うことも考えられます。
もし、仕事でプログラミングしていて、その技術力を上げたいのであれば、上司などに相談するのも一つの手です。
少なくとも「今使っている技術」くらいは教えてくれると思いますし、ここで赤の他人に聞くよりも確実だと思います。
#3
総合スコア524
投稿2025/01/27 06:27
多分タイトルをマルチプラットフォームアプリとかにした方がいいと思います、
FlutterでSPAのような画面にして、C#(バックエンド)はAPI的な使用になると思います、
わたし的にはWebアプリと言われるとバックエンドでページを生成して返すようなものをイメージします、、、
モバイルアプリはネイティブアプリで細かい制御がしたい人向けのものだと思っています、
だから、モバイルアプリを作ってからWebアプリで同じように使えるようにした方が出戻りが少ないかもしれないです、
Flutterを使ったことがないのですが、スマホアプリは何となく思想上の制約が多い感覚がありますので、Webアプリをそのまま移行するのが難しく感じるかもしれないです、
Flutterがそこら辺を上手いことまとめあげてくれるなら気にしなくてよさそうではありますが。
何を作るかですが、
単にページを返したりサーバーと通信してみたりするぐらいしか1ヶ月ではできないと思います、
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#4
総合スコア7601
投稿2025/01/27 10:26
「プロダクトを作るために技術を選んでいるか」or「技術を試すためにプロダクトを作っているか」
で僕はどちらかというと、後者になるので今後作るプロダクトはそれぞれ別々になるかもしれないです。
そういうスタンスであれば好きにやればなんでもいいのではないでしょうか。
何を作りたいかはもちろんですが、もっと根本的には何がしたいかです。
最終的にこれらをうまく使ってなんか作りたいなという意気込みは感じますが、いきなり複雑なものを作るのではなくてまずは1つ1つの理解を深めることを優先しましょう。
現状だと絵に描いた餅でしかないので、解像度を上げた状態でまたもう一度考えてみるとまた色々変わるかもしれませんね。
やってみて「やっぱこっちのほうがいいな」と思うことは普通にあるはずなので。
構成について
マルチプラットフォームなアプリであることはバックエンドは関係なく、Flutterを使えばまあできるのではないでしょうか。
ここは別にそうしたいならそうすればいい、ぐらいですが、作りたいものがWebアプリなのにFlutterを使うのはWEBだけじゃなくモバイルアプリも作りたいのかなという気持ちを感じます。
Amplifyは、まあ使いたければ使えば…というくらいです(個人的にはあんまりおすすめしない)
そこで私が考えた最強の構成を考えてみました。
なんで最強なのでしょうか?私もわかりません。
正直、最強の構成なんてものはありません。実現したいことが先にあって、その後に構成が来るものです。
個人で試したいというのが動機なら別にどうであってもいいのですが、バックエンドをLambdaで作りつつRDSを使うみたいな構成はちょっと特殊なノウハウが必要なので、学習コスト的にはバックエンドは普通にEC2やECSで作ったほうがいいんじゃないでしょうか。
全体的には手を広げすぎな印象が否めないので、まずは一つずつやってみましょう、と思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#5
総合スコア86160
投稿2025/01/27 12:58
目的を明確にした方が良いです。
・完成品としてのウェブアプリを作ったことがないので作って動かしたい。クラウドネイティブかどうかも拘らない
・挙げているような技術を学び身につけるのが目的で、ウェブアプリを作るのは手段
と書きかけて一晩放置してたのですが、#2にて、
「プロダクトを作るために技術を選んでいるか」or「技術を試すためにプロダクトを作っているか」
で僕はどちらかというと、後者になるので今後作るプロダクトはそれぞれ別々になるかもしれないです。
ということであれば、私の書いたのでも2つ目ですね。
そうなると考えるべきは、どの技術を試す(学ぶ)のかということにと思います。
表の「選んだ理由」が「使ってみたいから」というのは他人に対しての説明としては意味を為しません。
まあ別に選んだ理由を書かないとアドバイスがもらえないということはないと思うので書かなくてもいいと思いますが、自分の中で「使ってみたいと思う。何故ならば~~~」の部分が無いのであれば、そこも言語化しておいた方が良いでしょうね。
一般的にはシステム構築の際にどの技術を使うかは設計の中で考えます。
(中には「この面白い技術を使って何か出来ないか?」が起点で作ったシステムもあるとは思いますが)
個人が仕事と関係なく学ぶ場合、どの技術を学ぶかについては、「何のために学ぶのか?」次第かと思います。
・これこれこういうウェブアプリを作ってみたいが、調べてみると、その場合はこの技術が使われていることが多そうだ ⇒ 「どちらかというと、後者」ということなので、これは関係ないですね
・この技術の紹介記事を見てこれこれこう言う点が面白そうだと思った ⇒ それは学ぶ理由として十分です
・などなど
上に書いた「使ってみたいと思う。何故ならば~~~」の部分ですね。
段階を経てまずは AWSは利用せずに Webアプリやそれらに関わる色々なお勉強
次に クラウド知識のインプット と並行して 実践でWebアプリと連携
その方針は良いと思います。動く物全体を作ってみたことないのであれば、まず作ってみる。
あと、自宅Mac上で作って家庭内のみでアクセスするならいいですが、AWSなどインターネットからアクセスできる場所に置くなら、そこに手をを付ける前に、セキュリティーの知識が必要ですが、そのあたりは大丈夫でしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#6
#3 utm. さん、ご回答ありがとうございます!
タイトル名修正します;;
モバイルアプリはネイティブアプリで細かい制御がしたい人向けのものだと思っています、
だから、モバイルアプリを作ってからWebアプリで同じように使えるようにした方が出戻りが少ないかもしれないです、
このケース、私は担当外でしたが、同じ事が弊社で起きてました、、入る順はWebアプリを後回しにした方が柔軟に対応できそうなイメージですね!
API作ったりで簡単なのはできましたが、次の目標は?となるとやっぱり何か目的を作るべきなんだと思いました・・・
#4 yu_1985 さん、ご回答ありがとうございます!
いきなり複雑なものを作るのではなくてまずは1つ1つの理解を深めることを優先しましょう。
ありがとうございます、そうですよね。何事も基礎の積み重ねと私の師匠も言ってました。
現状だと絵に描いた餅でしかないので、解像度を上げた状態でまたもう一度考えてみるとまた色々変わるかもしれませんね。
ハイ、、、そう思います!
有識者としてのご意見・ご指摘誠に助かります!
下手につまづいてしまうのも勿体無いので、まずEC2試してみようかなぁと思いました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#7
#5 otn さん 一晩温めて下さってたんですか!
ご回答ありがとうございます!
「選んだ理由」が「使ってみたいから」というのは他人に対しての説明としては意味を為しません。
教えを乞う姿勢としてあるまじき表現、誠に反省しております;;恐縮です・・・
個人が仕事と関係なく学ぶ場合、どの技術を学ぶかについては、「何のために学ぶのか?」次第かと思います。
今の所、何の為に学ぶのか、何故やろうとしているのか言語化できませんでした。
ここはこれから掘り下げて考えていこうと思います!
AWSなどインターネットからアクセスできる場所に置くなら、
そこに手をを付ける前に、セキュリティーの知識が必要ですが、そのあたりは大丈夫でしょうか?
ここは公開前に避けれない道があるとは思ってましたが、やっぱりそうなんですね;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#8
総合スコア2286
投稿2025/01/28 02:13
自分は Web から離れて久しいので内容そのものはコメントできませんが、効率的に学ぶという観点でコメントさせてもらいます。
最近自分は AI を活用して学びを得ています。例えば Web アプリのバックエンドとして Python や Node.js を利用したものを開発したりしていますが、まずは AI に書いてもらうことで動くものをまず作り、そこから内容を深堀りして自分なりにまとめていく、という形で学んでいます。
また去年末あたりから Cline などのコーディング特化の AI エージェントも登場してきているので、かなりの部分を AI に書いてもらって、あとからそれを理解するというのがやりやすくなっています。(動くところまでエージェントが自発的に色々環境構築含めやってくれるので)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#9
総合スコア24
投稿2025/01/28 03:34
最近はflutterでネイティブ/Webアプリつくっています。
触ったことがないなら、flutterのサンプルソースでも拾ってきて、いじりながらDB通信せずローカルだけで完結させるところからやってみたらどうでしょうか。flutterの導入のドキュメントは親切ですし、初めてならシミュレータで動かすだけでもテンション上がりますよ。
マルチプラットフォームをリリースするところまで絶対やりたいなら、iOSのアプリ申請と、GooglePlayの申請は避けて通れず、結構面倒です。(Webはflutter×firebase使えばホスティングはかなり簡単です)
iOSはdeveloper登録だけで金もかかります。
まぁこのへんも、目的次第で本当にマルチプラットフォームで公開までやる?というのもありますかね・・。
バックエンドとの通信に重きを置くならもちろんやっても良いと思いますが、どこを学びたいかで絞らないと、1人で作るのは大変かも。
それとネイティブアプリよりもWebメインにしたいなら、jsの有名フレームワーク等を使ったほうが無難です。flutter webは、アプリインストールしなくても大体動くオマケ機能的な感じが否めないというのが個人的な所感です。スマホのwebの挙動は特に入力周りがちょいちょいおかしいですし、SEOもそのうち効くかもしれませんが、まだまだです。
でも、flutterは書いてて楽しい言語だなと久々に感じたので、そういう意味ではオススメではあります💡
練習というのなら、ベンチマークになるアプリを探して、その機能を分解して絶対に必要な機能だけにして最小リリースまで頑張る→ リリース後にアップデートしながら同じ機能に近づけていく、のような感じで目標にするといいですよ。
どうせなら自分にとって役に立つものとか面白いものをつくって、自分で使えるといいかもしれませんね。
例えば私ならChatGPTのplusプランの月額が高いので、APIから叩くだけのチャットアプリを自分用に作りたいと思ってます笑
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#11
総合スコア86160
投稿2025/01/28 15:58
AIをどう使うかも技術を学ぶ目的次第ですね。
・自分の頭で考えずとも目的が達成できれば良いので、AIに代わってやってもらえば良い。タイパが重要
・自分の頭で考えて出来るようになりたいので、AIは使わない
・自分の頭で考えて出来るようになりたいのだが、参考書や、公式サイトを見ても理解しきれないので、学習の補助教材としてAIにも教えてもらう
・・その他色々
目的・目標は人それぞれなので、優劣を付ける物では無いです。
「Aのような人になりたいので、Xも必要、Yも必要」「Bのような人になりたいので、Xは必要だが、Yは分からなくても問題ない」とか色々です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#12
#9 Lampiiさん
実際に開発されてる方のご意見、大変助かります。
ありがとうございます!
ローカルからのスタート、ありですね!これなら僕もハードル低くてとっつき易いです。
目的次第で本当にマルチプラットフォームで公開までやる?というの
そうですね、ここに関しては本気度がかなり変わって来ますね・・
費用面で課題感が増えてしまったら、1部お見送りかもしれないです。
flutterは書いてて楽しい言語だなと久々に感じたので、
ReactかFlutterで正直迷ったんですが、ここは本当にただ興味本位で決めました;
ベンチマークのアプリ探すのいいですね。
自分だけアイデアだけではなかなか具体的にイメージ付かない所も多かったので色々と候補を探してみます!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。