スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

laravel/framework6.x のコードリーディング(1) rootディレクトリ

こんにちは、株式会社スマレジのエンジニアのyushiです。

今週はYellow Studsを聴いていました。

泥臭い歌と綺麗な楽器のフレーズの組み合わせがくせになりそうな感じ。


YellowStuds 「汚い虹」MV

さて、今回はlaravel/frameworkのコードリーディングをしていきます。

laravel/framework

最近はLaravel6.xを開発で使っており、ドキュメントを読んでもわからずにソースコードを読む機会が増えてきました。

せっかくなので、一からコードを読んでいきたいと思っています。 といっても結構な量なので全部とはいきませんが、気になるところから少しずつ...。

github.com

今回はrootディレクトリまで。

ソースコード

上から順番に見ていきます。

.github/

github用の設定ファイル類ですね。 testやISSUE描く時のテンプレート、など...。

bin

ユーティリティ系の実行ファイル類です。 binというディレクトリ名はLinuxからでしょうか。

githubへのアップロード用のrelease.shや、テスト実行用のtest.shなどが含まれています。

src/Illuminate

ソースコードですね。 Laravelを開発している時に利用するのはこの階層のPHPファイルになります。

ちなみにここの各ディレクトリは個別のリポジトリとして公開されています。

github.com

例えばEloquentやクエリビルドといったDB系だけを導入する、といったこともできそうです。

bin/release.shには、個別リポジトリへの公開も含まれているようです。

tests

テストライブラリ"PHPUnit"を使ったテストコード類です。

.gitattributes .gitignore

git関連のファイルです。

.editorconfig

様々なエディタで共通で使えるような設定ファイルです。

editorconfig.org

こちらの記事が参考になりました。

qiita.com

.styleci.yml

コーディングスタイルの検証や修正をしてくれるCIサービス「StyleCI」の設定ファイルです。

styleci.io

こちらの記事が参考になりました。

i-yusuke.com

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風プレビューがあり、これが見やすいのでよく使っています。

marketplace.visualstudio.com

composer.json

composerのライブラリ管理ファイルです。

composer.lockは.gitignoreで除外されており、不思議に思いました。

ライブラリならではでしょうか...。

docker-compose.yml

docker用のファイルですね。

bin/test.shで利用されていました。

memcachedmysql、redisが立ち上がるようになっています。

phpunit.xml.dist

PHPUnitの設定ファイルです。 先述のtests/ディレクトリ以下のテストは、このファイルの設定を元に実行されることになります。

まとめ

ルートディレクトリだけでもかなりの量になってしまいました...。

気になるところから少しずつ進めて行こうと思います。