アシアル情報教育研究所 所長の岡本雄樹です。

あんこエデュケーションのサンプルアプリを開発していく上でのコーディング規約をまとめております。
現段階では草案です、また、全てのサンプルアプリを規約に準拠させる予定もありません。

基本方針

  • JavaScript固有の文法をなるべく避け、他言語をバックグラウンドに持つ人でも読みやすいコードを心がける

変数などの命名ルール

短縮表記は原則禁止。ただしWebプログラマー以外にも広く認められているものは許可する。

NG例

  • context → cxt
  • object → obj

OKの例

  • カウンタ変数 i,j,k
  • 機械学習の教師データのフォルダ名 training → train

変数名やクラス名などで単語を繋げる場合の表記

原則、ローワーキャメルケースを採用。

  • getElementById
  • todoList

理由としてアンダースコアやハイフンは初心者がキーを探すのが大変なため。

また、他のキャメル記法やスネークケース・チェインケースを用途別に使い分けることも、初心者に負担を掛けてしまうため行わない。

定数の目名

変数などと同様、ローワーキャメルケースで表記する。

理由:全部大文字で表現したくなるが、小規模なプログラムに置いては可読性に大きな影響はないと判断。

変数の宣言

  • let,const,varを使い分けるのは初心者に優しくないので、統一したい
  • 全部letで良いんじゃ無いかと思っている
  • いっそ宣言無しでも…

インデント

スペース4つ。

文字列をダブルクォートで括るかシングルクォートにするか

検討中

『JavaScript Standard Style』ではシングルクォートですが、初心者はダブルクォートの方がキーボード上で探しやすい。

とりあえず、サンプルプロジェクト内で統一されていればOKとします。

行末のセミコロン

C言語に敬意を表しつつ、セミコロンを入れる。(JavaScriptはセミコロンを省略しても動作します。)

インデントの例

if文


if (true) {
    console.log('Monaca');
} else if (true) {
    console.log('Monaca');
} else if (true) {
    console.log('Monaca');
} else {
    console.log('Monaca');
}

for文


for (var i = 0; i < 10; i++) {
    if (i % 2 == 1) {
        console.log(i + 'は奇数です');
    }
}

function


function sayHello() {
    console.log('こんにちは');
}

スペースの例

配列


var fruits = ['バナナ', 'みかん', 'まくわうり', '文旦'];
for (var i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}

オブジェクト(連想配列)


var person = {
    name : "岡本雄樹",
    age : 33,
    favoriteFruits = ['バナナ', 'みかん', 'まくわうり', '文旦']
}

メソッドチェーン


object
    .limit(5)
    .sort("ID") 
    .fetchAll()
        .then(function(results) {
            console.log(results);
        });

無名関数を使わない場合


object
    .limit(5)
    .sort("ID") 
    .fetchAll()
        .then(hoge);
function hoge (result) {
    ...
}

フォルダとファイル構成

Monaca用のサンプルアプリが前提なので、www以下にindex.htmlと次のようなフォルダを作成します。
js、css、img

また、音声やビデオ、svgやその他のデータはそれぞれ、
audio、video、svg、data

とします。

www以下

  • index.html
  • js
    • main.js
    • config.js
  • css
    • style.css
  • audio
    • hoge.mp3
  • img
    • hoge.png
  • video
    • hoge.mp4
  • svg
    • hoge.svg
  • data
    • hoge.json
    • hoge.csv
    • hoge.xml
      ※ hogeには、特に深い意味はありません。

JavaScriptファイルの読み込み方法

scriptタグでJavaScriptのファイルを読み込む際、HTMLファイルの読み込みが完了した後の方がDOM操作時などに都合が良いため「defer」を付けて読み込みます。

<script src="js/main.js" defer></script>

その他

  • JavaScriptの新しい文法は高機能だけど、他言語との兼ね合いを考慮して使用を控える
  • 無名関数はネストが深くなって読みにくくなるので、極力避ける
    • でもfetchの時は諦めるかも…
  • オブジェクトのことは、他言語との兼ね合いを考慮して連想配列と呼ぶ