こんにちは、株式会社スマレジのエンジニアのyushiです。
今週はYellow Studsを聴いていました。
泥臭い歌と綺麗な楽器のフレーズの組み合わせがくせになりそうな感じ。
さて、今回はlaravel/frameworkのコードリーディングをしていきます。
laravel/framework
最近はLaravel6.xを開発で使っており、ドキュメントを読んでもわからずにソースコードを読む機会が増えてきました。
せっかくなので、一からコードを読んでいきたいと思っています。 といっても結構な量なので全部とはいきませんが、気になるところから少しずつ...。
今回はrootディレクトリまで。
ソースコード
上から順番に見ていきます。
.github/
github用の設定ファイル類ですね。 testやISSUE描く時のテンプレート、など...。
bin
ユーティリティ系の実行ファイル類です。 binというディレクトリ名はLinuxからでしょうか。
githubへのアップロード用のrelease.shや、テスト実行用のtest.shなどが含まれています。
src/Illuminate
ソースコードですね。 Laravelを開発している時に利用するのはこの階層のPHPファイルになります。
ちなみにここの各ディレクトリは個別のリポジトリとして公開されています。
例えばEloquentやクエリビルドといったDB系だけを導入する、といったこともできそうです。
bin/release.shには、個別リポジトリへの公開も含まれているようです。
tests
テストライブラリ"PHPUnit"を使ったテストコード類です。
.gitattributes .gitignore
git関連のファイルです。
.editorconfig
様々なエディタで共通で使えるような設定ファイルです。
こちらの記事が参考になりました。
.styleci.yml
コーディングスタイルの検証や修正をしてくれるCIサービス「StyleCI」の設定ファイルです。
こちらの記事が参考になりました。
CHANGELOG-5.8.md, CHANGELOG-6.x.md
リリースノートです。 5.8と6.xの2バージョン分あるようですが...。
7.xのリポジトリでは、6.xと7.xの2ファイルがあります。
最新の2バージョン分を管理しているのでしょうか? 不思議です。
LICENSE.md
ライセンス情報のドキュメントです。MITライセンスですね。
README.md
本リポジトリについての紹介・説明用ドキュメントです。
Githubでは、README.mdという名前のファイルがあると、ページ下部に内容がStyle適用された状態で表示されます。
VSCodeの拡張で、MarkDownファイルのGithub風プレビューがあり、これが見やすいのでよく使っています。
composer.json
composerのライブラリ管理ファイルです。
composer.lockは.gitignoreで除外されており、不思議に思いました。
ライブラリならではでしょうか...。
docker-compose.yml
docker用のファイルですね。
bin/test.shで利用されていました。
memcached、mysql、redisが立ち上がるようになっています。
phpunit.xml.dist
PHPUnitの設定ファイルです。
先述のtests/
ディレクトリ以下のテストは、このファイルの設定を元に実行されることになります。
まとめ
ルートディレクトリだけでもかなりの量になってしまいました...。
気になるところから少しずつ進めて行こうと思います。