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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1602閲覧

WEBアプリの画像の仕組みを教えていただきたいです。

pappapa

総合スコア23

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/28 01:41

編集2019/06/28 01:48

#ざっくりとでもいいので教えていただきたいです。(Django)

前提:デプロイ予定で、利用者が好きに画像を変更できるようにする。

このteratailにも自分のアカウントの画像(アイコン)を変えられる機能があります。
それはどのように実装するのでしょうか。(DjangoでのWEBアプリの場合)

WEBアプリをデプロイし、利用者が写真を投稿できる機能(アイコンを変更できるみたいな)を考えております。

DBの容量やサーバーなどへの負荷を考えた場合の最善(に近い)方法を教えていただきたいです。
自分なりに次のパターンを考えました。
##1、フォーム(アップロードボタン)から画像を受け取りphpmyadminDBなどに格納し、随時呼び出す

##2、フォームから画像を受け取り、何らかのディレクトリ(teratail側のサーバーにある?)に保存してあり、パスで呼び出す。

##3、フォームから画像を受け取り、何らかのディレクトリ(teratail側のサーバーにある)に保存してあり、パスはphpmyadminDBなどに格納し、随時呼び出す

僕の考えたこの方法は、全て過去の画像がDBなり、ディレクトリなりに残ってしまうと思います。

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

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

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

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

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

m.ts10806

2019/06/28 01:42

phpmyadminはあくまでMySQL(またはMariaDB)を操作するためのツール(道具)です。DBそのものではありません。
pappapa

2019/06/28 01:46

それは驚きです。いつもphpmyadminに格納されるので、てっきりDBかと思っていました。
m.ts10806

2019/06/28 01:48

タイトルに「Django」としながら「PHP」がタグに入っているのはなぜでしょうか。
pappapa

2019/06/28 01:49

MySQLとphpMyAdminとPHPがセットと聞いたことがあったからです。
m.ts10806

2019/06/28 01:50

phpmyadminに格納されているわけではありません。 phpmyadminでDBに格納されているデータを参照しているだけです。 なので、別のツールからもホスト情報・アクセス情報がきちんとあればDB(MySQLまたはMariaDBに)アクセスできます。
m.ts10806

2019/06/28 01:51

>MySQLとphpMyAdminとPHP それはXAMPPまたはMAMPですね。 phpMyAdminもまたPHPで作られたツールです。 別にPHPから他のDB(PostgreSQL、Oracleなど)にもアクセスできます。
pappapa

2019/06/28 01:52

MySQLはプログラミング言語ではなく、データベースの名前ですか?
pappapa

2019/06/28 01:53

MAMP使っています。
pappapa

2019/06/28 01:58

では、2番が正解ですね!!!
m.ts10806

2019/06/28 02:12

いや、正解は「ない」ですよ。
guest

回答2

0

teratailに限って言えば、ブラウザで右クリック「画像だけを表示」などしてみれば保存されている場所がURLで分かります。

どこに保存するにしても、どこかでその画像分の容量を担保する必要があります。
それはteratailの画像のようにストレージであっても、DB直保存であってもどこでもです。

「全て過去の画像がDBなり、ディレクトリなりに残ってしまう」との懸念をされていますが、
「アクセスに応じて呼び出す必要がある」ので、必要な画像はそのまま残しておく必要があります。
「不要となっても残り続けてしまう」という懸念であれば、アイコンに限ればユーザーと紐づいているものなので、別の画像がアップロードされるとか、退会の際に削除することで対応は可能です。

ただ、投稿に使われる画像については、マークダウンの機能として利用されているということもあり、
基本的に投稿と画像は紐づいていないため、ずっと残っているものだと思います。
(画像名が分かれば編集で削除されてもアクセスは出来ます)
もしかしたら何かしら定期にバッチなど動かして参照されていない(投稿に利用されていない)画像の削除処理が動いているかもしれませんが、そこまでは分かりません。

結局のところ「画像を保存する場所をどこにしてどれくらいの容量準備するか」と「1つの画像の最大サイズをどれくらいに制限するか」になってくると思います。1枚の最大サイズを制限すればおおよそ何枚まで許容できるかの予測はたてられます。

あとは自分が決めた場所に決めたように保存して、呼び出す仕組みを作るだけです。

投稿2019/06/28 02:14

m.ts10806

総合スコア80850

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

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

pappapa

2019/06/28 02:30

>>別の画像がアップロードされるとか、退会の際に削除することで対応は可能です。 そこを懸念していたので、そのようなプログラムを組みたいと思います。 結局、保存先はどこにするのが1番ですか? 場合によりますか?
m.ts10806

2019/06/28 02:35

>結局、保存先はどこにするのが1番ですか? 回答をどこまで読んで理解されたのでしょうか。 「どこかで画像サイズ分を担保しなければならない」のなら基本的にどこに置いても大差はありません。 実現方法が複数ある以上「ベストプラクティス」というのはありません。 自身ができそうなやり方でやればいいだけの話と思います。
pappapa

2019/06/28 02:40

ありがとうございます。 可能な方法でやってみたいと思います。
m.ts10806

2019/06/28 02:47

ヒントになったようで何よりです。
guest

0

ベストアンサー

このteratailにも自分のアカウントの画像(アイコン)を変えられる機能があります。それはどのように実装するのでしょうか。(DjangoでのWEBアプリの場合)

Teratail の「自分のアカウントの画像」は、ブラウザに送信される html の img 要素の src 属性に画像の保存先の URL を指定して表示させています。

質問者さんのアカウントの画像の場合は以下のようになっています。「DjangoでのWEBアプリの場合」も基本(img 要素の src に画像の URL を設定)は同じだと思います。

イメージ説明

Web アプリによっては DB 他の任意の場所から画像を取得してくる HTTP ハンドラを作成して、それを src に指定するということも可能です。

投稿2019/06/28 02:14

編集2019/06/28 02:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

pappapa

2019/06/28 02:27

teratailの場合、僕のアイコンのタワーの画像はどこに保存されているのですか? 憶測でも教えていただきたいです。
退会済みユーザー

退会済みユーザー

2019/06/28 02:32

src 属性に設定されている url を見ると google 何とかとあるので、teratail が google のストレージを借りてそこに保存しているのではないかと思います。
pappapa

2019/06/28 02:41

ありがとうございます。 画像のことを少し理解できたような気がします。
退会済みユーザー

退会済みユーザー

2019/06/28 02:41

画像データをどこに保存しておいて、どのように管理すればいいかということが質問の趣旨であれば、それは質問者さん独自の事情によるものが大きいので、今提供されている情報では第三者はアドバイスできないですよ。
pappapa

2019/06/28 02:58

アプリが進んで、頭の中が整理でき、まだこのような悩みが続けば、また質問したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問