質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1200閲覧

この場合はデータベースが必要なのか教えていただきたいです。

Ray4702

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/07/11 02:41

現在アーティストのプロフィールを作るシステムを作成しています。
そこで、そのシステムをネット上に公開し、不特定多数の人に使ってもらい、自身で作成したデータを自身のサーバーのみに保存してもらえるような仕組みにしたいです。
つまり、どこかのサーバーにデータを蓄積させる必要はありません。
単純に個人ユーザーの保存機能をつけたいです。

この場合は
①フロントサイドのみの構築
②フロントサイド+サーバーサイドも含めた構築
③フロントサイド+サーバーサイド+DBも含めた構築
どちらが適切でしょうか?

そして、システム構築までの簡単なステップを教えていただけると大変嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2021/07/11 04:04

> そのシステムをネット上に公開し、不特定多数の人に使ってもらい、自身で作成したデータを自身のサーバーのみに保存してもらえるような仕組みにしたいです。 この「自身」とは「不特定多数のユーザー」ですか?それとも「システム設置者」又は「システムを公開するあなた」ですか? 「公開」とはどのような形態なのでしょうか?(TwitterなのかマストドンなのかJekyllなのかチラ裏なのか・・・)
Ray4702

2021/07/11 04:11

>「自身」とは 不特定多数のユーザーです。 >「公開」とは あまり詳しくないのですが、githubでurlを発信しようと考えています。
m.ts10806

2021/07/11 06:33

>githubでurlを発信 Github自体はソースコードしか公開されませんし、 Githu Pageは確か静的ページのみだったような。 きちんとWebサーバー契約して環境構築するしかないです。
Ray4702

2021/07/11 06:54

個人がただ保存するだけのページでもwebサーバーを契約する必要があるのでしょうか、、?
m.ts10806

2021/07/11 07:09

いえ。だってWebサーバに乗せるんですよね。 「個人」って「不特定多数」ですよね。 Webサーバに乗せないと不特定多数がアクセスできませんよ。 自身のPCとか自宅にWebサーバ立てて運用するなら契約の必要はないですけど、自身でできるノウハウもスキルもないなら専門家に任せるしかありません。
BeatStar

2021/07/11 09:10

サーバはいわゆる「レンタルサーバ」もありますよ。候補としては。
guest

回答1

0

ベストアンサー

まず、前提が間違っています。

フロントエンドはHTMLとかのガワと、
JavaScriptのように『クライアントサイド』でやるものです。

JSで『入力値が〇〇なら〜』のような制御のみ。

フロントエンドではデータを保存することはできません。

せいぜいjsファイルやhtmlにベタ書きするぐらいです。

データの管理をするにはバックエンドとしてサーバを立て、PHPとかを介してDB操作するしかありません。

参考: ヒント1

キーワードは『リクエスト』と『レスポンス』。

もちろんRubyとかでもいいです。

単に『サーバを立てずに、単体で動く』なら、Webではなくて、
デスクトップアプリで、『ファイルの読み書き』で実現できそうです。

いずれにしても、フロントエンドだけで、
データ管理はできません。


[追記1]

(返信にて)

データベースを使用するということは理解できました。

私の認識が正しいかどうか判断していただきたいです。
アーティストのプロフィール情報をデータベースのテーブルに蓄積する必要がないため、
テーブルにマイグレーションするアクションはつけなくてもいいが、
個人で保存できるようなアクションのシステムは構築する必要がある。
このようなニュアンスでしょうか?

必ずDBを使うというより、フローを考えると『必要そうだな』ってことです。

たとえば、質問者さんがプロダクトの提供者(制作サイドとか)だとして考えてみますね。

提供者である質問者さんが全てのデータを知っていて、HTMLとかにベタ書きするなら、
つまり昔風のホームページみたいにするなら、DBは必要ありません。

単にHTMLなりPHPなりJavaScriptなりにベタ書きすればいいだけです。

たとえば問題集とかのような感じで、問題文と回答が完全固定のやつならベタ書きすればいい感じで。

でも実際には追加したり削除したり編集したりとかの『編集』をするはずです。

問題集的なものであれば、ユーザが追加するか、毎月更新されるとか。
そういう場合はデータを保持しておくことと編集ができることが求められます。

でもHTMLは単にテキストにメタ情報を付与するだけです。
『ここで改行』『ここからここまでをひと段落とする』とかのような感じの。
(イメージ的にはドラマとかを作る時の『台本』での「ここで○○にウインクする」とかのようなアレ)

JavaScriptはデータの編集や動的にサイトを見せるのはできますが、データ保存が出来ません。

ではこのteratailやAm*zonとかのようなWebアプリはどのようにデータを保持しているのでしょうか。

そこでバックエンドの登場です。

サーバを立ててPHPなりRubyなりを介してDBを操作してデータを保持したり取り出したりする。

それで、単に完全固定でベタ書きできる仕様ならDBはおろか、バックエンドすらいりません。
(『外部ライブラリを使う』とかみたいに、ある条件が付けば別だけど)

でもこのteratailとかみたいにユーザが入力したものを保持したり修正したりとかの管理をするならどうしてもDBが必要です。

なので『仕様に因る』ですね。

もし、ポ○モンの初期のやつみたい数がそこまで多くなくてベタ書きできそうならJavaScriptとかだけでもなんとかなりそうです。

でもその場合は後から追加するとかだけでも相当面倒です。

たとえば配列で保持しているとしたら、C言語とかみたいに配列の要素数を指定する言語であれば
要素数も書き換えないといけないし、
追加する場所(末尾なのか先端なのか、中央なのかそれ以外なのか……)とかによっては、
ロジックの整合性を取らないといけないので……

JavaScriptとかみたいに、動的に要素数が変わるタイプの言語であれば要素数の書き換えはそこまで必要じゃないですが、ロジックの整合性を取らないといけないし。
(仕様や組み方による)

どうしても『持ち運びができる』等のように単体でやるという条件で、データを追加したりとかの編集とかが必要と言うのなら、Webよりもデスクトップアプリの方が無難です。

持ち運びはするが、データが完全固定ならJavaScriptとかでベタ書きすれば十分です。

なので定義によりますね。

このteratailやWikipediaとかのような感じで1人が編集すれば他の人が見ているものも編集される……というのならどうしてもサーバを立てて、バックエンドで操作……しかありません。
(一応デスクトップでもできるが……)


[追記2]

実際に一度コードができれば変更する予定はありません。

そして、ユーザーには単純に必要項目と画像をinput要素で記入してもらい、保存機能として個人のフォルダにpdfとして保存できるようなシステムを作ることが理想です。
なのでjsのみで構築可能ということでしょうか?
何度も質問してしまい申し訳ございません。。。

質問の追加自体は問題ありませんよ。
まったく別の内容だと困りますが。(JavaScriptのネタなのにGoの実装レベルの質問を追加でするとかは困りますが)

一応関係あるというか、かなり関係しているので。

えーっと、『必要項目』とはなんでしょうか。
たとえば『どのデータを抽出したいか』とかであればJavaScriptでもできます。
でも、『編集したいデータ』とかのようなものはちょっときついですね。
(場合によってはできないし)

PDFとして出力……ですか。

これは単純なJavaScriptでは出来ませんね。

もしかしたら外部ライブラリとして、存在するかもしれません。

なんとなくJavaScriptでは出来なさそうと思ったので、とりあえずjQueryとして考えて調べてみました。

キーワード:『jQuery PDF 出力』

そうすると、ここ がヒットしました。

あー、一応JavaScriptでもできますね。

ただし、外部ライブラリとして『pdfmake』ってのが必要らしいですが。

使い方はご自分で調べてください。

このPDF出力がネックで、それさえできればクライアントサイドでも可能です。


[追記3]

ヒント: 過去回答

投稿2021/07/11 03:33

編集2021/07/11 23:55
BeatStar

総合スコア4962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ray4702

2021/07/11 03:51

ご回答ありがとうございます! データベースを使用するということは理解できました。 私の認識が正しいかどうか判断していただきたいです。 アーティストのプロフィール情報をデータベースのテーブルに蓄積する必要がないため、 テーブルにマイグレーションするアクションはつけなくてもいいが、 個人で保存できるようなアクションのシステムは構築する必要がある。 このようなニュアンスでしょうか? ご返信よろしくお願いいたします。
Ray4702

2021/07/11 08:51

様々な観点からのご回答ありがとうございます! >データが完全固定ならJavaScriptとかでベタ書きすれば十分 実際に一度コードができれば変更する予定はありません。 そして、ユーザーには単純に必要項目と画像をinput要素で記入してもらい、保存機能として個人のフォルダにpdfとして保存できるようなシステムを作ることが理想です。 なのでjsのみで構築可能ということでしょうか? 何度も質問してしまい申し訳ございません。。。
Ray4702

2021/07/11 09:18

ご回答ありがとうございます! 必要項目としては、 ・アーティスト名 ・キャッチコピー などinput textで入力するものです。(あとはアーティスト写真などの画像をinput fileで入力するのみ) なので編集するといった複雑な入力は無いということでよろしいでしょうか? わざわざキーワードまで調べていただきありがとうございます!! 是非参考にさせていただきます!
BeatStar

2021/07/11 09:36

具体的なものがイメージできないため、確実な事は言えませんが、 『データの保存』(保存して次回も使うとか、teratailとかみたいに他のクライアントとかにも反映させるとか)が必要ならDBやバックエンドがどうしても必要ですが、 そういうものじゃなくて、『その場限り』のデータ修正とか単に入力値をPDFにするとかであればフロントエンドでも可能です。 鍵になるのは『データの保存が必要かどうか』『(データを修正した場合)他のクライアントからも反映されていると見えるのかどうか』ですね。 単に入力値をPDFにするだけであればデスクトップアプリケーション(C#とかでやるやつ)でも可能ですし。 簡単に言えば『仕様に因る』ですね。やっぱり。 後、プログラミングするなら『検索力』も身につけましょう。 今回のように前提が違う場合はまともなものにヒットしないかもしれませんが、 通常は『JavaScript PDF 出力』とかそういうので調べたりしてやっています。
Ray4702

2021/07/11 22:48

ご回答ありがとうございます! 保存は必要ありません。 一度で情報を入力してもらい、PDFにしていただければと思っております。 データをサーバーに保存して途中で編集するという複雑な仕組みは一旦作らない予定です。 まずは『JavaScript PDF 出力』を軸に調べてみます。 何度もご意見ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問