スクラッチコーチのコーディング規約

スクラッチコーチのコーディング規約
ok-scratch
スクラッチは自由に作ってOK!それを踏まえて、こういう規約に則って作ると管理が楽だよという方法をご紹介します〜(*^^*)
スターター
プロジェクト
なし
サンプル
なし
難しさ

任意)自分の作業中のスクラッチ作品URLを記録しておこう!再開するときに便利だよ。

LOADING...

※ この記録は今使ってるPCに保存されます。別のPCで作業するときは表示されません。

スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。

スクラッチのチュートリアルで使(つか)われているスクラッチコーチのコーディング規約(きやく)をまとめておきます!

コーディング規約(きやく)とは?

コーディング規約(きやく)というのはシステム開発(かいはつ)やゲーム制作(せいさく)現場(げんば)ごとに定義(ていぎ)されている「どうやってコーディングするか」というルールのことです。

(たと)えば変数(へんすう)(めい)()(かた)

たとえば最近(さいきん)のIT現場(げんば)における変数(へんすう)名前(なまえ)(かん)するコーディング規約(きやく)だと、キャメルケースとスネークケースのどちらかが(おお)印象(いんしょう)です。
  • キャメルケースとは……「scratchGameDevelopment」のように、「scratch」「game」「development」という文字(もじ)のつなぎ部分(ぶぶん)大文字(おおもじ)にする()(かた)。ただし最初(さいしょ)文字(もじ)小文字(こもじ)。キャメルというのはラクダのことで、文字(もじ)(かん)じがラクダのコブっぽいという由来(ゆらい)。かわいい。
  • スネークケースとは……「scratch_game_development」のように文字(もじ)のつなぎにアンダーバーを使(つか)()(かた)。なんとなくヘビっぽいからという由来(ゆらい)
個人的(こじんてき)感覚(かんかく)だとJava、Javascript、Python、Rubyなどの最近(さいきん)メジャーな言語(げんご)ではキャメルケースのほうが(おお)いかな。スネークケースはPHP(とくにWordPress)でよく使(つか)われている印象(いんしょう)。スクラッチだと日本人(にほんじん)変数(へんすう)(めい)日本語(にほんご)()けたほうが()かりやすいと(おも)うから、キャメルケースは使(つか)えないし、スネークケースもそこまで使(つか)われてないかな。
スクラッチコーチのコーディング規約を語るok-scratch ok-scratch

u003cpu003e()たようなので(ほか)にもケバブケースというのもある。「scratch-game-development」みたいな(かん)じで()(もの)のケバブっぽい……ぽいか?wu003c/pu003eu003cpu003eでもハイフンは変数(へんすう)(めい)使(つか)うとエラーになる言語(げんご)(おお)いのでファイル(めい)とか文字列(もじれつ)とかで使(つか)われる場面(ばめん)(おお)いかな。u003c/pu003e

スクラッチのコーディング規約(きやく)

ココからは実際(じっさい)スクラッチコーチで使(つか)っているコーディング規約(きやく)をまとめておきます!
スクラッチコーチのコーディング規約を語るok-scratch ok-scratch

u003cpu003eただしこれは(ぼく)個人的(こじんてき)経験(けいけん)(つく)ってきただけで公式(こうしき)のコーディング規約(きやく)ではないです。というかコーディング規約(きやく)なんてスクラッチにはないと(おも)う。ここからスクラッチコーチで使(つか)ってる規約(きやく)紹介(しょうかい)するけど、u003cemu003eこのとおりにスクラッチを(つく)らないとダメというものではないu003c/emu003eです。(やく)()ちそうな部分(ぶぶん)があったら使(つか)ってみてね、という程度(ていど)気軽(きがる)規約(きやく)です。u003c/pu003e

変数(へんすう)(めい)

基本的(きほんてき)変数(へんすう)(めい)日本語(にほんご)()きます。ただしXやYなど、英語(えいご)のほうが()かりやすい部分(ぶぶん)英語(えいご)使(つか)います。

変数(へんすう)種類(しゅるい)見分(みわ)ける()(かた)

スクラッチには(おお)きく2(とお)りの変数(へんすう)があります。
  • すべてのスプライトに共通(きょうつう)変数(へんすう)(グローバル変数(へんすう)
  • このスプライトでのみ使(つか)変数(へんすう)(ローカル変数(へんすう)
公式(こうしき)のこの2つに(くわ)えて、さらにもう2つスクラッチコーチでは独自(どくじ)定義(ていぎ)しています。
  • ()だけ()をセットしたら2()変更(へんこう)しないグローバル変数(へんすう)定数(ていすう)
  • このスプライトのみで使(つか)(うえ)に、あるブロック定義(ていぎ)(ない)でのみ使(つか)われる一時的(いちじてき)変数(へんすう)(プライベート変数(へんすう)
これらを見分(みわ)けるために以下(いか)のように接頭語(せっとうご)使(つか)っています。
種類(しゅるい)接頭語(せっとうご)(れい)
グローバル変数(へんすう)
(すべてのスプライトで使(つか)変数(へんすう)
重力(じゅうりょく) (-1など)
難易(なんい)()
★いまのステージ
定数(ていすう)
(1()定義(ていぎ)したら変更(へんこう)しないグローバル変数(へんすう)
■はい (1)
■いいえ (2)
■あり (1)
■なし (2)
■30FPS (30)
空白(くうはく) ()
ローカル変数(へんすう)
(このスプライトのみで使(つか)変数(へんすう)
なしスピードY
ジャンプ(りょく)
プライベート変数(へんすう)
(このスプライトのみで使(つか)一時的(いちじてき)変数(へんすう)
__()
_一時的(いちじてき)保存(ほぞん)された速度(そくど)
スクラッチコーチのコーディング規約を語るok-scratch ok-scratch

\u003cp\u003eプライベート変数(へんすう)についてはそこまで厳密(げんみつ)使(つか)ってません。使(つか)わないと()かりづらい()たような名前(なまえ)のローカル変数(へんすう)があるときとかは使(つか)うかなぁ程度(ていど)。\u003c/p\u003e

真偽(しんぎ)()格納(かくのう)する変数(へんすう)

変数(へんすう)()が0か1(falseかtrue)になる変数(へんすう)接尾語(せつびご)を「~かどうか」にします。(なが)()ぎたら「~か」でもOK。(れい))ジャンプ(ちゅう)かどうか(れい)空中(くうちゅう)にいるか
スクラッチコーチのコーディング規約を語るok-scratch ok-scratch

u003cpu003eとくにローカル変数(へんすう)では真偽(しんぎ)()かどうかをパッと()()かると便利(べんり)。u003c/pu003e

ブロック定義(ていぎ)(めい)

基本的(きほんてき)にブロック定義(ていぎ)(めい)日本語(にほんご)()きます。ブロック定義(ていぎ)(めい)動詞(どうし)()きます。(れい))ジャンプを(おこな)うブロック定義(ていぎ)であれば、「ジャンプ」ではなく「ジャンプする」「()ぶ」「()ねる」など

(さい)描画(びょうが)するブロック定義(ていぎ)かどうかを見分(みわ)ける()(かた)

ブロック定義(ていぎ)には(さい)描画(びょうが)するものとしないものがあります。パッと()ただけで()かるように接頭語(せっとうご)()けて判断(はんだん)します(最近(さいきん)そうし(はじ)めました)
種類(しゅるい)接頭語(せっとうご)(れい)
(さい)描画(びょうが)必要(ひつよう)であるなしジャンプする
アニメーションする
(さい)描画(びょうが)不要(ふよう)である_
(アンダーバー)
_空中(くうちゅう)にいるか調(しら)べる
_スピンできるか調(しら)べる
_(うず)もれを修正(しゅうせい)する

引数(ひきすう)引数(ひきすう)(めい)をラベルでも()

ブロック定義(ていぎ)には引数(ひきすう)(わた)せますが、この引数(ひきすう)(めい)()えてラベルでも()(のこ)しておきます。たとえばコレ↓
()」という引数(ひきすう)定義(ていぎ)されています。そして「エンコードする)():」というように「():」という引数(ひきすう)(めい)()えてラベルにも()いてあります。この状態(じょうたい)だと冗長(じょうちょう)(おも)えますが、実際(じっさい)にブロック定義(ていぎ)使(つか)(とき)便利(べんり)です。()てみましょう↓
↑このように引数(ひきすう)空白(くうはく)になってしまいます。そうすると「あれ、ここって(なに)いれるんだっけ?」といちいちブロック定義(ていぎ)引数(ひきすう)(めい)調(しら)べる必要(ひつよう)があります。そのひと手間(てま)面倒(めんどう)なので、最初(さいしょ)からラベルに引数(ひきすう)(めい)()(のこ)しておきます。

メッセージの()(かた)

基本的(きほんてき)日本語(にほんご)()く。最近(さいきん)不自然(ふしぜん)でなければ語尾(ごび)は「~します」「~しました」で(ととの)えています。(れい))ゲームを開始(かいし)します(れい)被弾(ひだん)しました(れい)停止(ていし)ボタンが()されました(れい))ステージをクリアしました

条件(じょうけん)分岐(ぶんき)やループなどの(かこ)みは極力(きょくりょく)ネストさせない

ネストというのは「もし~なら」の(なか)でさらに「もし~なら」を使(つか)うこととか、「ずっと」ループの(なか)で「もし~なら」を使(つか)うことです。ネスト自体(じたい)(わる)いことじゃないし、むしろ絶対(ぜったい)ネストしないと無理(むり)場面(ばめん)って(おお)い。だけど「もし」の(なか)で5(かい)も6(かい)も「もし」が使(つか)われてたりすると、すごく()づらくなります。こんな↓
こういうのを「ネストの階層(かいそう)(ふか)い」と表現(ひょうげん)するのですが、階層(かいそう)(ふか)すぎるとデバッグが大変(たいへん)になりがちです。
  • なんで「もし」の色(いろ)が違(ちが)うの? なんで「もし」の色(いろ)が違(ちが)うの?
    \u003cp\u003e(うえ)画像(がぞう)は「もし」の(いろ)がオレンジと黄色(きいろ)になってて、ネストしても(すこ)()やすくなってます。これは\u003ca href=\u0022https://scratchaddons.com/ja/addons/\u0022 target=\u0022_blank\u0022 rel=\u0022noreferrer noopener nofollow\u0022\u003eグリフパッチさん(たち)開発(かいはつ)してくれているスクラッチアドオン\u003c/a\u003eというChromeアドオンのおかげです。()になる(ほう)はチェックしてみてください。\u003c/p\u003e
そこで、可能(かのう)ならネストは極力(きょくりょく)しないように(つく)れるように(こころ)がけてます。可能(かのう)なら!
(ひだり)(みぎ)のブロック(ぐん)はまったく(おな)処理(しょり)なんですが、どっちが(この)みですか?(この)みにもよるのですが、(ひだり)はネストをさせないようにしたバージョン。(みぎ)はネストしまくってるバージョンです。処理(しょり)内容(ないよう)自体(じたい)(まった)(おな)じですが、(ひだり)のほうが個人的(こじんてき)には(この)みです。
スクラッチコーチのコーディング規約を語るok-scratch ok-scratch

\u003cp\u003eちなみに(ぼく)はスクラッチに(かぎ)らずJavascriptとかテキスト言語(げんご)でもネストしないように()()です。ネスト()もいるし、現場(げんば)によってはコーディング規約(きやく)(しば)りがあったりするから、どっちでもOKになっておくのがベター。\u003c/p\u003e

コーディング規約(きやく)(つく)っちゃおう

これは(ぼく)なりのコーディング規約(きやく)ですが、みんな「オレオレ規約(きやく)(つく)ってしまってOKだと(おも)います!(べつ)仕事(しごと)じゃないんだし、自分(じぶん)なりのスクラッチの(つく)(かた)ベストプラクティスみたいなのを(つく)るのも(たの)しみなんじゃないかなぁって(おも)います。
スクラッチコーチのコーディング規約を語るok-scratch ok-scratch

\u003cp\u003e(ほか)にも(おも)()したり更新(こうしん)があれば追記(ついき)していきます~!\u003c/p\u003e

ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチプログラミングのゲーム攻略

スクラッチプログラミングのゲーム

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品