Web制作、Web開発の歩き方

分かりやすいコードの書き方

第6話:フレームワーク・静的解析による統一

(最終更新日:2025.4.17)


分かりやすいコード

この記事は5分で読めます!
(絵が小さい場合はスマホを横に)

書き方を強制しよう!

前回は「人間が意識して守る」スタイルのコーディング規約について紹介した。 しかし現場では「分かっていても書き方が人によってバラつく」ことがよくある。 そこで今回は、ツールや設計により、自然とコードが統一される仕組みを紹介する。



1.ツールを使った強制と静的解析ツールの活用例

「コーディング規約」は文書化するだけでは不十分だ。 開発ツールやCI(Continuous Integration)で自動チェック・整形することで初めて徹底される。 代表的な強制手段として、フォーマッター(自動整形)、リンター(静的解析)、 プルリクエスト、CI/CD パイプラインでの自動チェックを組み合わせることが重要だ。 下記にプログラミング言語とフォーマッター、リンターの例を示す。

言語ごとのフォーマッター、リンター

言語 フォーマッタ リンター
C++ clang-format clang-tidy, cpplint
JS/TS Prettier ESLint, TSLint(旧)
Python black flake8, pylint
Java google-java-format Checkstyle, SpotBugs

また、C++においてclang-formatを.clang-formatファイルで制御した例を示す。 下記の設定をyamlファイルで保存し、コマンドで「clang-format -i main.cpp」と実行することで、反映される。 統一されたインデント・スペース・改行・改行位置が強制される。

clang-formatの設定

2.フレームワークによるコード統一

現代のWebやアプリケーション開発では、フレームワークが“構造の型”を決めてくれるため、自然とコードが整う。 下記は、最近のWebアプリケーションフレームワークの例になる。

Webアプリケーションフレームワークの例

フレームワーク 特徴
React コンポーネントベースで関数単位に設計しやすい
Angular ファイル構成・DIパターン・ルーティングなど強制的に構造化
Django(Python) MVCが明確に分離されており、アプリ単位で統一できる

関数、変数、定数、クラスの書き方

要素 命名例
関数 getUserProfile()
変数 userName
定数 MAX_RETRY_COUNT
クラス UserManager

次に「コメントの書き方」を示す。 コメントは、//を使うか、/* */を使うかなどになる。 また、コメントタグを使うかなどである。

コメントの書き方

また、ファイル構成、ディレクトリ構成なども定義しておく。 どのディレクトリに何のファイルを置くかを決める。ディレクトリの名前で、何を置くディレクトリかが想像できると良い。 下記にdjangoの例を示す。フレームワークで大体指定されているが、下記のようになる。

ディレクトリ構成

3.関数型プログラミングの制約を活用

関数型プログラミングの考え方には「こう書けば統一される」スタイルが自然と備わっている。 下記がその特性と効果になる。副作用をなくす、データの影響範囲を小さくする、小さな関数に分割するといったことは特に重要だ。

関数型プログラミングの特徴

特性 効果
純粋関数 副作用をなくす(テストしやすくなる)
不変データ データ変更の影響範囲が限定される
関数合成 小さな関数に分割されやすくなる
高階関数の利用 共通処理を抽象化しやすい

下記にJavaScriptの例を示す。関数ごとに責務が明確で、構文も統一されているのが分かる。 「どう書くべきか」が言語・設計によって自然と制約されている=統一性を保てる状態になる。

関数型の書き方

4.リント・フォーマットツールの設定例

最後にリント・フォーマットツールの設定例を示す。 最初はeslintの設定だ。これは、文法やスタイルのルールが適用されているかをチェックするリンターだ。 例えば、ECMAスクリプトのバージョンを12で合わせる、使用しない変数を警告する('no-unused-vars': 'warn')などである。

ESLintによるチェックするルール

次にPrettierだ。こちらはコードを整えるフォーマットツールになる。 シングルクオートで囲む、セミコロンを必ずつける、インデントは2文字分の幅でということを指定している。

Prettierによるフォーマットの指定

これらのリント、フォーマットファイルを読むことで、ある程度自動でチェック、整形をしてくれる。

5.まとめ

今回はフレームワークや静的解析ツールを使ってコードを統一する方法を紹介した。 「フォーマッタ・リンターで形式を統一」(フォーマッタで修正) 「フレームワークやアーキテクチャで型を決める」(構造で強制) 「関数型によりコードの書き方を制約」(設計で強制) などの方法が有効である。色々試してみよう。

▼参考図書、サイト

 「リーダブルコード」 Dustin Boswell、Trevor Foucher 著、角 征典 訳 オライリー