ゼロから始めるDjangoソースコード解読 part1
導入
突然ですが、プログラムを書いている際に
「どんなソースコードが綺麗なの?」、「ファイルの構成ってこれでいいの?」
と思ったことはないでしょうか?私はいつも思っています←(開発経験1年目)
ですが、そういった記事をネットで調べようとしても意外と載っていないのが現状です。
そこで、手っ取り早く調べるにはどうすればいいか。そう、有名なソースコードを読めばいいのです!
有名だからといって、書かれていることがすべて正しいというわけではないとは思いますが、開発経験1年の私よりは遥かに綺麗なソースコードだと断言できます。
なので、1からソースコードを読み解いていき、これからの開発に役立つ知識をためていこうと思います。
私自身プログラミング初心者なので、同じ初心者にもわかりやすく書いていければと思います。
解読するソースコード
私はpythonを主に使用しているので、pythonのフレームワークで有名なdjangoを解読していこうと思います。
解読
どこから解読していくか悩みますが、まずは一番最初の階層にあるファイルから解読していこうと思います。
.editorconfig
概要
.editorconfigは、EditorConfigという様々なエディターやIDE(総合開発環境)で同じプロジェクトに取り組んでいる開発者に対して、一貫したコーディングスタイルを維持するのに役立つ設定を記載しているファイルです。
Pluginを別途必要とする環境とそうでない環境があります。Pluginを必要としない環境では、.editorconfigファイルを置くだけで、設定が反映されます。
試しにインデントの数を変えて、PyCharmで設定が反映されているか確認したところ、問題なく反映されていました。
設定の詳細
# https://editorconfig.org/ root = true [*] indent_style = space indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true end_of_line = lf charset = utf-8 # Docstrings and comments use max_line_length = 79 [*.py] max_line_length = 119 # Use 2 spaces for the HTML files [*.html] indent_size = 2 # The JSON files contain newlines inconsistently [*.json] indent_size = 2 insert_final_newline = ignore [**/admin/js/vendor/**] indent_style = ignore indent_size = ignore # Minified JavaScript files shouldn't be changed [**.min.js] indent_style = ignore insert_final_newline = ignore # Makefiles always use tabs for indentation [Makefile] indent_style = tab # Batch files use tabs for indentation [*.bat] indent_style = tab [docs/**.txt] max_line_length = 79 [*.yml] indent_size = 2
root設定
root = true
これは、.editorconfigが存在する階層がrootディレクトリかどうかを決める設定です。
EditorConfig Pluginは、あるファイルを開いた際に、そのファイルより上の階層に.editorconfigが存在するかどうかを探しに行きます。
trueに設定した場合、それ以上上の階層には探しに行かなくなります。
例:以下のような階層の場合、sample2/.editorconfigでroot=falseに設定していると、sample.pyを開いた際にsample1フォルダの.editorconfigまで読み込んでしまいます。
- sample1 | - .editorconfig | - sample2 | - .editorconfig | - sample.py
ファイル指定
[*] [*.html] [docs/**.txt]
これらは、対象とするファイルをワイルドカードで指定しています。
項目 | 説明 |
---|---|
* | パス区切り文字(/)を除く任意の文字列に一致します |
** | 任意の文字列に一致します |
? | 任意の1文字に一致します |
[name] | 名前の任意の1文字に一致します |
[!name] | 名前に含まれていない任意の1文字に一致します |
{s1,s2,s3} | 指定された(コンマで区切られた)任意の文字列に一致します(EditorConfig Core 0.11.0以降で使用可能) |
{num1..num2} | num1とnum2の間の任意の整数に一致します。ここで、num1とnum2は正または負のいずれかになります。 |
その他オプション
indent_style = space indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true end_of_line = lf charset = utf-8 max_line_length = 119
項目 | 説明 | 値 |
---|---|---|
[*] | すべてのファイルを対象とする | , .py, *.{less,css,scala}などのワイルドカード |
indent_style | インデントの単位をタブにするかスペースにするか | tab, space |
indent_size | 1回のインデントのサイズ | 2,4,8 |
insert_final_newline | ファイル末尾に空行を挿入するか | true, false |
trim_trailing_whitespace | 行末尾のホワイトスペース(空白文字)を削除するかどうか | true, false |
end_of_line | 改行コードの指定 | cr, lf, crlf |
charset | 文字コードの指定 | latin1, utf-8, utf-8-bom, utf-16be or utf-16le |
max_line_length | 一行に記載できる最大の長さを指定できる | 正の整数、off |
それ以外にも、オプションがあります。詳しくはEditorConfigのWikiで。
このような感じで、1ファイルずつ投稿していこうと思います。 間違っている点などがあれば、ご指摘ください。 今回はここまで。