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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

Q&A

解決済

2回答

1742閲覧

SQLとJavaScriptの命名規則についての質問

r.s_09

総合スコア17

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

1グッド

2クリップ

投稿2022/03/24 01:59

前提

Node.jsを使用したAPIサーバを作っています。
クライアントのJavaScriptでAPIサーバを叩き、データを取得するようにしています。

JavaScriptではキャメルケースで変数の命名などをすると思います。

{ userId: "hogehoge" }

データベースではpostgreSQLを使用しているのですが、
postgreSQLのカラム名はスネークケースが推奨されていると学びました。
そのため、データベースの値をそのまま利用した場合、スネークケースをNode.jsで扱うことになってしまいます。

質問

ここで質問がいくつかあります。

1.この場合、Node.jsでスネーク→キャメルケースに変換をするのか
2.Pythonなどのサーバサイドではスネークケースが慣習だと思います。その場合、データベースの内容を取得したらそのままクライアントに返せばいいと思いますが、この場合、APIを叩くクライアントサイドでキャメルケースに変換をするのが適切でしょうか?

スネークケースからキャメルケースへの変換方法は調べてわかったのですが、
実例を調べられなかったので質問させていただきました。

実際の開発でどのようにしているのか聞けたら幸いです。

miyabi-sun👍を押しています

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

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

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

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

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

r.s_09

2022/03/24 04:14

ありがとうございます。調べてもでてこなかったので非常に助かります。 API側でデータベースから取得したスネークケースのデータをキャメルケースに変換し、クライアントへ返したいと思います。
guest

回答2

0

ベストアンサー

JavaScriptではキャメルケースで変数の命名などをすると思います。

重箱の隅ですが
この前提がどうなのか?に関して白黒付けなきゃスタートラインに立てないので触れます。

参考記事: JavaScriptのコーディング スタイル

このサイトではいくつかの有名なコーディング規約の紹介と共に
本記事の執筆者さんもこれが良くね?みたいなコーディング規約を公開してくれています。

普通の変数名はlower camel caseにしなさい。これはまぁそうですね。
クラスのプロパティ名もlower camel caseにしなさい。これもまぁそうですね。
では、本件のターゲットとなる汎用オブジェクトに使うキー名に関して調べてみましょう。

  • 上記の参考記事→1個目のリンクのコーディング規約と同じ例
  • Felix’s Node.js Style Guide(和訳)'is generally': 'pretty',という例が存在、キーのクオートは必要がなければ不要。
  • Airbnb JavaScript スタイルガイド | javascript-style-guide'data-blah': 5,という例が存在、無効な識別子の場合のみプロパティを引用符で括ること。
  • Google→特に言及なしだが、一応キャメルケースで例を記載していた

直接切り込んでいる記事・ドキュメントはありませんでしたが、
例から読み取れる内容として、汎用オブジェクトに使うキー名は「キャメルケースで統一させる必要はない」と暗に言ってるわけですね。
そうでなきゃ、わざわざそんなキー名にする必要がないので。


んで、結局振り出しに戻ったわけですが

何を基準として選ばなければならないか?に関していうと、
「そのAPIサーバは誰が使うのか?」が一番重要なファクターとなります。

例えばNode.jsやJavaScriptが利用するならば、
プロパティ名はキャメルケースであるのが既存の命名ルールと衝突しないので一番ラクなわけです。
なのでcamelcase-keysみたいなライブラリを使って変換してしまうのも良いでしょう。

JavaScriptを特別意識しないのであれば、
OSやプログラミング言語によっては大文字・小文字を区別しないので、
そのままスネークケースを用いるのが良いと思います。

実際の開発でどのようにしているのか聞けたら幸いです

私の勤めている会社はClojureを採用しているので、
JSON吐き出す時はlisp-caseですし、Booleanな値はキー名の末尾が?になります。
風変わりですが、社内APIなのでClojureが嬉しいキー名にしとけば間違いないですね。

これも一つのユーザー視点に立った実装と呼べるなと感じたので紹介しました。

投稿2022/03/24 08:50

編集2022/03/24 09:10
miyabi-sun

総合スコア21409

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

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

r.s_09

2022/03/24 11:22

回答ありがとうございます。非常に参考になりました。 クライアントに合わせて柔軟に対応したいと思います。 貴重なお時間を割いていただきありがとうございました。
guest

0

個人の感想ですけど「javascriptではスネークケースを使いたくない」理由が
「キャメルケースが慣習だから」くらいの程度なら
「javascriptでスネークケースを使えばいい」と思います。

少なくとも変換プログラムを書いてまで解決すべき問題ではないかと。変換に例外でても困りますし、
お金にならないですし、時間がもったいないですし、自己満足に近い問題だと思います。
そもそも命名規則一つにそこまでの劇的な効果を求めてません。(あくまで個人の感想です)

共同で開発しているなら、ここで聞くより周りに聞いたほうがいいですね。

投稿2022/03/24 05:45

sousuke

総合スコア3830

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

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

r.s_09

2022/03/24 06:05

回答ありがとうございます。 少し気にしすぎなのかもしれません。ありがとうございます。
sousuke

2022/03/24 06:42

私はプログラムするなら基本的に「理屈」が第一優先だと思います。 もし部下に「なんでこうしてるの?」と聞いて「慣習だから」「そう学んだから」とか 答えたらぶっ飛ばしますね笑 例えばDBは変数、カラム、テーブル名に関して大文字小文字の区別がないので (私がよく使うSQL Serverは少なくともデフォルトではそうなっています。) キャメルケースを使ってもあまり意味がないんですよね。そういう意味で postgresもスネークケースを「推奨」しているのではないですか?あまりわかりませんけど。 物事の背景を見て、合っていても違っていてもいいので自分の脳内で 筋が通ったプログラミングをすべきだと思います。
r.s_09

2022/03/24 11:15

ご教授いただきありがとうございます。 読んだ本ではおっしゃる通り区別がないためと書いてありました。 最善をすぐ探すよりも自分で考える癖をつけようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問