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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

3回答

1896閲覧

地名情報を管理するのはJSONファイルとDBのどちらが良いか

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/04/07 23:40

ドロップダウンリストで都道府県とその配下の市区町村を選択できる機能を作っています。開発言語はPHPです。
これらの地名の情報はJSONファイルとDBのどちらで管理すると良いでしょうか。
また、メリットとデメリットをご教示いただけますでしょうか。

管理する地名数は
・都道府県が47
・市区町村が1741

JSONで管理するならこうなるとおもいます。(※あくまでもイメージです。)

JSON

1{ 2 都道府県: [ 3 {"pref_id": "01", "pref_name": "北海道"}, 4 ..... 5 {"pref_id": "47", "pref_name": "沖縄県"} 6 ] 7 8 北海道: [ 9 {"muni_id": "01", "muni_name": "札幌市"}, 10 {"muni_id": "02", "muni_name": "函館市"}, 11 ..... 12 ] 13 14 沖縄県: [ 15 {"muni_id": "01", "muni_name": "沖縄市"}, 16 {"muni_id": "02", "muni_name": "名護市"}, 17 ..... 18 ] 19}

DBで管理するならこんな感じです。
▽DB構造
・都道府県テーブル(構成カラム:都道府県ID、都道府県名)
・市区町村テーブル(構成カラム:市区町村ID、市区町村名、都道府県ID、市区町村親ID、有効フラグ)
※市区町村親IDは、市区町村の合併などの増減を考慮して、変更元のIDを設定します。

私の今のイメージですが、
JSONは、プロジェクトのディレクトリを辿って取得すればいいだけだと思うので、(なんかよくわからないけど)負荷が軽い気がする。
更新作業がしづらい(テキストで置換するような運用?)

DBは、DBに接続してSQL処理して、画面で表示できるような形に加工して、というような流れになるので、(なんかよくわからないけど)負荷が重い気がする。
更新作業がしやすい(SQLで容易にできる)

処理負荷と運用の観点から、どちらを採用するとどのようなメリット、デメリットがあるのでしょうか。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/04/08 00:51

ネットに公開されている API を利用するというのは選択肢には入らないのでしょうか?
退会済みユーザー

退会済みユーザー

2020/04/08 03:18

保守性を考慮すると、なるべく依存したくないので、選択肢から除外しました。
退会済みユーザー

退会済みユーザー

2020/04/08 03:58

都道府県はともかく、その中の市町村は統合などにより知らないうちに変わっていることもあります。その点を考えて、保守性はどちらが高いかを天秤にかけると話は違ってくるということもあるかもしれません。余計なお世話でしたら失礼しました。
退会済みユーザー

退会済みユーザー

2020/04/08 04:07

市区町村の増減および変更は、定期的に見直す方針として運用しようと考えています。 懸念しているのは、そのAPIが今後、情報の提供および更新の停止となったときに、改修する規模が大きくなることを想定して、保守性を考慮した次第です。 こちらこそ、ご意見くださりありがとうございます。
退会済みユーザー

退会済みユーザー

2020/04/08 04:21

> 懸念しているのは、そのAPIが今後、情報の提供および更新の停止となったときに 個人や企業の API そかですとその心配は多分にあると思いますが、国土交通省提供の API など長期のサポートが期待できそうなものもありますので、それも含めて検討されてはいかがでしょう。すでに検討済みで、その結果で決めたということでしたら、やはり余計なお世話だったようで、失礼しました。
guest

回答3

0

すでにほかでデータベースを使っているなら、DB管理がおすすめです。都道府県・市町村の順番はたいていコード順ですので、そのコードを管理したり、データ管理用のマスターにも利用できるなどのメリットもあります。

一方で、JSON形式も必要となります。「都道府県を選べばそれにあった市町村が出てくる」というような制御ではJavaScriptが必要となりますが、JavaScriptから扱いやすい形式はJSONです(データベースにあるなら、「データベースからJSONを生成する」という形でももちろん構いません)。

投稿2020/04/08 01:18

maisumakun

総合スコア146018

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

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

退会済みユーザー

退会済みユーザー

2020/04/08 04:12

>>「データベースからJSONを生成する」 DBから取得したデータをJSON形式に整形してから画面表示するのは、どのようなメリットがあるのでしょうか? DBから取得したデータをそのまま画面表示するのと何か差が出るのか気になります。 JSON形式に整形した方がJavaScriptとの相性がいいから可読性が上がるということでしょうか?
maisumakun

2020/04/08 04:29

> JSON形式に整形した方がJavaScriptとの相性がいいから可読性が上がるということでしょうか? JavaScriptから使いやすい、ということです。たとえばCSVでデータが来たとするとそれをJavaScript側でパースする作業が必要になりますが、JSONのパースはJavaScript標準で用意してあります。
guest

0

管理する項目を考えると、処理の負荷/運用の観点で、DB と File ベースでそれほど変わるものではありません。

投稿2020/04/08 00:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

1000件やそこらじゃどちらでも変わらないでしょうけど
メンテナンス性を考えるとスタティックなJSONよりは
動的処理ができるDBの方がやりやすい気がします

投稿2020/04/08 00:46

yambejp

総合スコア116724

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問