<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Composer on ララジャパン</title>
        <link>https://www.larajapan.com/tags/composer/</link>
        <description>Recent content in Composer on ララジャパン</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Fri, 21 Feb 2025 10:58:09 +0900</lastBuildDate><atom:link href="https://www.larajapan.com/tags/composer/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>composerをもっと知ろう（４）ローカルのパッケージをLaravelで使う</title>
        <link>https://www.larajapan.com/2025/02/21/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%94%EF%BC%89%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92lar/</link>
        <pubDate>Fri, 21 Feb 2025 10:58:09 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2025/02/21/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%94%EF%BC%89%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92lar/</guid>
        <description>&lt;p&gt;皆さんは、DGFTのベリトランスの支払決済のPHPのSDKキットを使用したことありますか？ それを利用するには彼らのウェブサイトからファイルをダウンロードして、プロジェクトに置いてそれをパッケージとしてインストールします。今回はその仕組みの説明です。ローカルにパッケージを作成してそれをcomposer requireします。&lt;/p&gt;
&lt;h2&gt;自分のパッケージを作成&lt;/h2&gt;
&lt;p&gt;まず、デモとしてあるヘルパー関数の定義を含むパッケージを作成します。このパッケージには１つのヘルパー関数しかなく、インストールしたら以下のように、全角の英数字文字列を半角に変換する関数、&lt;code&gt;to_hankaku()&lt;/code&gt;を使うことができます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Psy&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Shell&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12.7&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;PHP&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8.2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;—&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;cli&lt;/span&gt;) &lt;span style=&#34;color:#a6e22e&#34;&gt;by&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Justin&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Hileman&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;to_hankaku&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;１２３&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;123&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;便利そうでしょう。&lt;/p&gt;
&lt;p&gt;まず、Laravelのプロジェクトを新規作成して、プロジェクトのディレクトリ直下に&lt;strong&gt;packages&lt;/strong&gt;のディレクトリを作成して、以下のような構造で必要なファイルを作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── app
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;packages
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── larajapan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── japanese-utils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ├── composer.json
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        └── src
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            └── helpers.php
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上では、composer.jsonとhelpers.phpのみがファイルで他は皆ディレクトリです。&lt;strong&gt;larajapan&lt;/strong&gt;が開発者のアイデンティティでその下の&lt;strong&gt;japanese-utils&lt;/strong&gt;が今回のパッケージ名となります。&lt;/p&gt;
&lt;p&gt;まずそのパッケージの&lt;strong&gt;composer.json&lt;/strong&gt;の中身を見てみましょう（混乱していけないのは、このcomposer.jsonはjapanese-utilsのパッケージのcomposer.jsonであり、これからそれをインストールしようというLaravelのプロジェクト、つまりルートパッケージのcomposer.jsonではありません）。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;packages/larajapan/japanese-utils/composer.json&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;larajapan/japanese-utils&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;helpers to manipuliate a japanese string&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1.0.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;php&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;=7.4&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ext-mbstring&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;autoload&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;files&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;src/helpers.php&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここでは、パッケージ名（name）、説明（description）、バージョン（version）、必須条件（require）、ロードの指示（autoload）が含まれます。&lt;code&gt;to_hanakaku()&lt;/code&gt;の関数では、mbstringのPHPのモジュールの&lt;code&gt;mb_convert()&lt;/code&gt;を使用し、さらにタイプヒントも使用するので、それを対応しているPHPバージョン7.4以上であることをインストールの前提とします.&lt;/p&gt;
&lt;p&gt;今度は、その関数を定義する&lt;strong&gt;helpers.php&lt;/strong&gt;を見てみましょう。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;packages/larajapan/japanese-utils/src/helpers.php&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;function_exists&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;to_hankaku&amp;#39;&lt;/span&gt;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;to_hankaku&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;string&lt;/span&gt; $zenkaku)&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;mb_convert_kana&lt;/span&gt;($zenkaku, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;as&amp;#39;&lt;/span&gt;); &lt;span style=&#34;color:#75715e&#34;&gt;// 全角英数字と空白を半角に変換
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とても簡単な定義ですが、他のパッケージですでに定義されていたら困るので、&lt;code&gt;!function_exists(&amp;rsquo;to_hankaku&amp;rsquo;)&lt;/code&gt;の条件を入れています。&lt;/p&gt;
&lt;h2&gt;Laravelのプロジェクトにインストール&lt;/h2&gt;
&lt;p&gt;同じプロジェクトのディレクトリ内にパッケージを作成したものの、これだけではプロジェクトで先ほどの&lt;code&gt;to_hanakaku()&lt;/code&gt;は使えません。プロジェクトにインストールすることが必要です。&lt;/p&gt;
&lt;p&gt;今度は作成したパッケージのではなくプロジェクト（ルートパッケージ）の&lt;strong&gt;composer.json&lt;/strong&gt;の編集が必要です。以下の&lt;strong&gt;repositories&lt;/strong&gt;のブロックが追加した部分です。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;composer.json&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://getcomposer.org/schema.json&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/laravel&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;project&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The skeleton application for the Laravel framework.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;framework&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;license&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MIT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;repositories&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./packages/larajapan/japanese-utils&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;symlink&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;php&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^8.2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/framework&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^11.31&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/tinker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^2.9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;type&amp;rdquo;: &amp;ldquo;path&amp;rdquo;&lt;/strong&gt;がローカルのパッケージがレポジトリということを指示し、その場所 &lt;strong&gt;&amp;ldquo;url&amp;rdquo;&lt;/strong&gt;にパッケージの相対の場所を指定します。そして、&lt;strong&gt;&amp;ldquo;options&amp;rdquo;&lt;/strong&gt;として、&lt;strong&gt;&amp;ldquo;symlink&amp;rdquo;: true&lt;/strong&gt;は、プロジェクトにおいて使用されるパッケージを収めるvendorのディレクトリにおいて、作成したパッケージへのsymlinkを張るという指示です。ちなみにfalseならファイルのコピーとなります。&lt;/p&gt;
&lt;p&gt;これでインストールの準備は完了です。通常のパッケージのインストールのように&lt;strong&gt;composre require&lt;/strong&gt;を実行しましょう。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer require larajapan/japanese-utils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;インストール後には、composer.jsonは更新され、&lt;strong&gt;&amp;ldquo;larajapan/japanese-utils&amp;rdquo;: &amp;ldquo;^1.0&amp;rdquo;,&lt;/strong&gt;のエントリーが追加されているのがわかります。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;composer.json&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;php&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^8.2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;larajapan/japanese-utils&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/framework&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^11.31&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/tinker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^2.9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;vendorのディレクトリを見ると、以下のようにパッケージへのsymlinkとなっています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ls -l vendor/larajapan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;total &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lrwxrwxrwx &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; kenji kenji &lt;span style=&#34;color:#ae81ff&#34;&gt;40&lt;/span&gt; Feb &lt;span style=&#34;color:#ae81ff&#34;&gt;19&lt;/span&gt; 16:42 japanese-utils -&amp;gt; ../../packages/larajapan/japanese-utils/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで、このLaravelのプロジェクト内で、&lt;code&gt;to_hankaku()&lt;/code&gt;のヘルパーをどこでも使えるようになります。&lt;/p&gt;
&lt;h2&gt;最後に&lt;/h2&gt;
&lt;p&gt;自分が作成したパッケージは、Packagistに登録したものでもなく、githubのレポジトリに置いたプライベートのパッケージでもありません。そのようなパッケージが必要となるのは不思議と思われるかもしれません。しかし、以下のようにいくつか必要となるケースがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将来はPackagistにおいて自分で開発したパッケージを共有したいが、完成度が低いので暫くは自分のプロジェクトだけ使う&lt;/li&gt;
&lt;li&gt;今まで使用していたgithubにあるパッケージはもうメンテインされていなくダウンロードして自分のプロジェクトだけで使えるようにする&lt;/li&gt;
&lt;li&gt;プロジェクトが肥大化したのでパッケージとしてモジュール化して使う&lt;/li&gt;
&lt;li&gt;あえて自社のサービスのSDKキットをPackagistでパブリックで共有することをせずに、サービスを利用する開発者にローカルにダウンロードしてからcomposerでインストールしてもらう。日本で有名なDGFTのベリトランスの決済のPHPのSDKキットはまさにそれです。&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        <item>
        <title>composerをもっと知ろう（３）バージョンに関して</title>
        <link>https://www.larajapan.com/2025/01/06/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%93%EF%BC%89%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6/</link>
        <pubDate>Mon, 06 Jan 2025 05:58:08 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2025/01/06/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%93%EF%BC%89%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6/</guid>
        <description>&lt;p&gt;今回は、&lt;strong&gt;composer.json&lt;/strong&gt;でrequireやrequire-devにリストされるパッケージのバージョンに関して説明します。今まで気にもとめていなかった ^11.9などの意味を解明します。&lt;/p&gt;
&lt;h2&gt;composer.json&lt;/h2&gt;
&lt;p&gt;まず、前回の「&lt;a href=&#34;https://www.larajapan.com/2024/12/08/composer%e3%82%92%e3%82%82%e3%81%a3%e3%81%a8%e7%9f%a5%e3%82%8d%e3%81%86%ef%bc%88%ef%bc%92%ef%bc%89composer-create-project%e3%81%a7%e3%81%af%e4%bd%95%e3%81%8c%e8%b5%b7%e3%81%93%e3%81%a3%e3%81%a6/&#34; target=&#34;_blank&#34;&gt;composerをもっと知ろう（２）composer create-projectでは何が起こっている？&lt;/a&gt;」で記載したcomposer.jsonを再度見てみましょう。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/laravel&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;project&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The skeleton application for the Laravel framework.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;framework&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;license&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MIT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;php&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^8.2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/framework&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^11.9&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/tinker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^2.9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require-dev&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fakerphp/faker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.23&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/pail&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/pint&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/sail&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.26&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mockery/mockery&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.6&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nunomaduro/collision&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^8.1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;phpunit/phpunit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^11.0.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;&amp;ldquo;laravel/framework&amp;rdquo;: &amp;ldquo;^11.9&amp;rdquo;&lt;/code&gt;のような記述があります。&lt;strong&gt;laravel/framework&lt;/strong&gt;はパッケージ名で、&lt;strong&gt;^11.9&lt;/strong&gt;はインストールするバージョンを指示していると思われますが、その記事を書いた時点では実際にインストールされたバージョンは&lt;strong&gt;11.34.2&lt;/strong&gt;でした。どうして11.9ではないのでしょう。11.9の前についているキャレット&lt;strong&gt;＾&lt;/strong&gt;はいったい何でしょう。&lt;/p&gt;
&lt;h2&gt;^11.9の意味&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;ldquo;laravel/framework&amp;rdquo;: &amp;ldquo;^11.9&amp;rdquo;&lt;/code&gt;の意味を解明するには、&lt;strong&gt;laravel/framework&lt;/strong&gt;のパッケージをローカル環境にインストールして、&lt;strong&gt;git&lt;/strong&gt;のタグを見る必要があります。&lt;/p&gt;
&lt;p&gt;パッケージをインストールした後に、以下のコマンドを実行して、v11のみのタグを抽出します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git tag --sort&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;v:refname | grep v11
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コマンドの出力は、以下のようになります。長いので途中&amp;hellip;で割愛と示しています。これを書いている時点では最新はv11.37.0です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.5
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.6
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.7
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.0.8
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.1.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.3.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.3.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.4.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.5.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.6.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.7.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.8.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.9.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.9.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.9.2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.36.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v11.37.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上において、タグの最初の数字がメージャーのバージョン番号で、それ以下はマイナーのバージョン番号です。
例えば、v11.37.0では、&lt;strong&gt;11&lt;/strong&gt;がメジャーで&lt;strong&gt;37.0&lt;/strong&gt;がマイナー。&lt;/p&gt;
&lt;p&gt;Laravelの新規のプロジェクトを作成するときは、&lt;code&gt;composer install&lt;/code&gt;が実行されます（この時点では、&lt;strong&gt;composer.lock&lt;/strong&gt;のファイルはまだ存在しないと仮定）。プロジェクトにとって&lt;strong&gt;composer.json&lt;/strong&gt;で指定されるパッケージはその時点で最新のパッケージのインストールを試みます。しかし必ずしもパッケージの最新とも限りません。例えば、Laravel 10.xをインストールするのに最新の11.xがインストールされては困ります。それゆえに、^11.9のような指定が使われます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;composer.json&lt;/strong&gt;の&lt;code&gt;&amp;ldquo;laravel/framework&amp;rdquo;: &amp;ldquo;^11.9&amp;rdquo;&lt;/code&gt;でのキャレット&lt;strong&gt;＾&lt;/strong&gt;は、11.9以上で12.0.0未満のバージョンでその時点で最新のバージョンをインストールしなさい、という指示です。それゆえに、前回の記事を書いた時点では最新のv11.34.2が、この記事を書いている現時点ではv11.37.0がインストールされます。&lt;/p&gt;
&lt;p&gt;この理解にとてもいいツールがありますので紹介します。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://semver.madewithlove.com/?package=laravel%2Fframework&amp;constraint=%5E11.9&#34; target=&#34;_blank&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://semver.madewithlove.com/?package=laravel%2Fframework&amp;amp;constraint=%5E11.9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://semver.madewithlove.com/?package=laravel%2Fframework&amp;constraint=%5E11.9&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上のリンクをクリックすると以下のような画面となります。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;Package-Semver-Checker-madewithlove.png&#34;&gt;&lt;img src=&#34;Package-Semver-Checker-madewithlove.png&#34; alt=&#34;&#34; width=&#34;1028&#34; height=&#34;616&#34; class=&#34;alignnone size-full wp-image-10599&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;先ほどのlaravel/frameworkのパッケージで^11.9を指定したときにインストールされるバージョンのリストが赤箱でハイライト表示されます。そこで、^11.0とか^11.37とか入力してみてどれがハイライトされるか試してみてください。他のパッケージも指定してみてください。&lt;/p&gt;
&lt;p&gt;さて、ここで不思議に思うはどうしてインストールすべきバージョンが最新の１つ（ここでは、v11.37.0）だけでなくいくつもハイライトされているのかです。v11.9.0からv11.37.0までのすべてのバージョンがハイライトされていますね。&lt;/p&gt;
&lt;p&gt;これは共にインストールする他のパッケージとの依存があるかもしれないからです。もしかして、他のパッケージでは、laravel/frameworkへの依存があり、そのパッケージのcomposer.jsonにおいて、 &lt;code&gt;&amp;ldquo;laravel/framework&amp;rdquo;: &amp;ldquo;11.18.1&amp;rdquo;&lt;/code&gt;と１つのバージョン（バージョンの前にキャレットがない）のみを指定しているかもしれません。その場合はプロジェクトでインストールされるlaravel/frameworkのバージョンは11.18.1のみと制限されます。プロジェクトがインストールしたいバージョンと依存するパッケージがインストールしたいバージョンをともに満たすためにです。&lt;/p&gt;
&lt;p&gt;composer.jsonで記載されるバージョンの形式には、他にも~11.9とか11.9.*とか^6.0|^7.0|^8.0|^9.0|^10.0|^11.0とかあります。以下で詳しい説明があります。
&lt;a href=&#34;https://getcomposer.org/doc/articles/versions.md&#34; target=&#34;_blank&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://getcomposer.org/doc/articles/versions.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getcomposer.org/doc/articles/versions.md&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;composer.lock&lt;/h2&gt;
&lt;p&gt;composer installを最初に実行した後には、composer.lockのファイルが作成されます。これは、その名の通り、実行時にインストールされたすべてのパッケージのバージョンの情報が含まれています。次回に、違う環境（例えばライブ環境とか）でこのファイルがあれば、まったく同じバージョンでパッケージをインストールしてくれるので、異なる環境での同じバージョンのパッケージがインストールされることを保証してくれます。&lt;/p&gt;</description>
        </item>
        <item>
        <title>composerをもっと知ろう（２）composer create-projectでは何が起こっている？</title>
        <link>https://www.larajapan.com/2024/12/08/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%92%EF%BC%89composer-create-project%E3%81%A7%E3%81%AF%E4%BD%95%E3%81%8C%E8%B5%B7%E3%81%93%E3%81%A3%E3%81%A6/</link>
        <pubDate>Sun, 08 Dec 2024 08:59:55 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2024/12/08/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%92%EF%BC%89composer-create-project%E3%81%A7%E3%81%AF%E4%BD%95%E3%81%8C%E8%B5%B7%E3%81%93%E3%81%A3%E3%81%A6/</guid>
        <description>&lt;p&gt;誰しも、composer create-project laravel/laravelのコマンドで新規のLaravelのプロジェクトの開発を開始します。Laravelが凄いのは、この実行後にすぐにプロジェクトを立ち上げて(php artisan serve）ブラウザでサイトを閲覧することが可能となることです。その実行では画面に英語でいろいろと経過が表示されますが、いったい何が起こっているのでしょうか？&lt;/p&gt;
&lt;h2&gt;Laravelの新規のプロジェクトの作成&lt;/h2&gt;
最新のLaravel 11.xを使用してプロジェクトを作成するには、以下のようなコマンドの実行が必要です。
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer create-project laravel/laravel laravel-11x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上のコマンドラインにおいて、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;create-project&lt;/strong&gt;は、composerの新規プロジェクト作成のオプション名です。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;laravel/laravel&lt;/strong&gt;lは、プロジェクトのルートとなるパッケージ名です。
指定したパッケージ名をpackagist.orgのサイトでで探します。
&lt;a href=&#34;https://packagist.org/?query=laravel%2Flaravel&#34; target=&#34;_blank&#34;&gt;https://packagist.org/?query=laravel/laravel&lt;/a&gt;
マッチするパッケージが存在するgithubのレポからパッケージのダウンロードとなります。
&lt;li&gt;&lt;strong&gt;laravel-11x&lt;/strong&gt;は新規プロジェクト名で、その名前でプロジェクトのディレクトリを作成して、そこに必要なパッケージをダウンロードしてインストールし設定を行います。&lt;/h2&gt;
&lt;/ul&gt;
&lt;p&gt;ルートパッケージのバージョンの指定も以下のように可能です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer create-project laravel/laravel laravel-10x &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;10.*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上では、 &lt;strong&gt;10.*&lt;/strong&gt;は、Laravel 10で一番最新のバージョンで新規プロジェクトが作成されます。&lt;/p&gt;
&lt;h2&gt;プロジェクト作成の設計図&lt;/h2&gt;
今回の新規のプロジェクトの作成として指定される&lt;strong&gt;laravel/laravel&lt;/strong&gt;は、以下からダウンロードされます。
&lt;a href=&#34;https://github.com/laravel/laravel&#34; target=&#34;_blank&#34;&gt;https://github.com/laravel/laravel&lt;/a&gt;
そこに含まれる、&lt;strong&gt;composer.json&lt;/strong&gt;のファイルに、プロジェクトに必要なパッケージのダウンロードとインストール、そしてプロジェクト立ち上げに必要な.envやDBの作成などが指定されています。
&lt;p&gt;ファイルの中身を見てみましょう。phpのプロジェクトですがフォーマットはjsonとなっています。途中今回の話に関係ないところは&amp;hellip;で省いています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/laravel&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;project&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The skeleton application for the Laravel framework.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;framework&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;license&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MIT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;php&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^8.2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/framework&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^11.9&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/tinker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^2.9&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require-dev&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fakerphp/faker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.23&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/pail&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/pint&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.13&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/sail&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.26&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mockery/mockery&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.6&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nunomaduro/collision&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^8.1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;phpunit/phpunit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^11.0.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-autoload-dump&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Illuminate\\Foundation\\ComposerScripts::postAutoloadDump&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan package:discover --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-update-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan vendor:publish --tag=laravel-assets --ansi --force&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-root-package-install&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php -r \&amp;#34;file_exists(&amp;#39;.env&amp;#39;) || copy(&amp;#39;.env.example&amp;#39;, &amp;#39;.env&amp;#39;);\&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-create-project-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan key:generate --ansi&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php -r \&amp;#34;file_exists(&amp;#39;database/database.sqlite&amp;#39;) || touch(&amp;#39;database/database.sqlite&amp;#39;);\&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan migrate --graceful --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dev&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Composer\\Config::disableProcessTimeout&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;npx concurrently -c \&amp;#34;#93c5fd,#c4b5fd,#fb7185,#fdba74\&amp;#34; \&amp;#34;php artisan serve\&amp;#34; \&amp;#34;php artisan queue:listen --tries=1\&amp;#34; \&amp;#34;php artisan pail --timeout=0\&amp;#34; \&amp;#34;npm run dev\&amp;#34; --names=server,queue,logs,vite&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上において、&lt;strong&gt;&amp;ldquo;require&amp;rdquo;&lt;/strong&gt;は、laravelのルートパッケージがライブの環境で必要なパッケージです。&lt;strong&gt;&amp;ldquo;require-dev&amp;rdquo;&lt;/strong&gt;は、開発環境で必要なパッケージです。たったこれだけですが、前回に説明したようにそれらが依存するパッケージがあるので実際にインストールパッケージは100以上の数になります。
&lt;strong&gt;&amp;ldquo;scripts&amp;rdquo;&lt;/strong&gt;の部分は、特定なイベントごとに実行する指令が記述されています。&lt;/p&gt;
&lt;h2&gt;create-project実行の作業&lt;/h2&gt;
&lt;p&gt;composer create-projectを実行すると、以下のような経過表示となります。すべて掲載するととても長いのでパッケージのLockingやDownloadingやInstallingの多くは割愛しています。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;create-project_final1.png&#34;&gt;&lt;img src=&#34;create-project_final1.png&#34; alt=&#34;&#34; width=&#34;1033&#34; height=&#34;1139&#34; class=&#34;alignnone size-full wp-image-10458&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上から順番に説明していきます。&lt;/p&gt;
&lt;h3&gt;プロジェクトディレクトリの作成&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Creating a &amp;#34;laravel/laravel&amp;#34; project at &amp;#34;./laravel-11x&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;まず、コマンド実行で指定した新規プロジェクト名のディレクトリ&lt;strong&gt;laravel-11x&lt;/strong&gt;を作成します。&lt;/p&gt;
&lt;h3&gt;ルートパッケージのインストール&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Creating a &amp;#34;laravel/laravel&amp;#34; project at &amp;#34;./laravel-11x&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Installing laravel/laravel (v11.3.3)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Downloading laravel/laravel (v11.3.3)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Installing laravel/laravel (v11.3.3): Extracting archive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Created project in /var/www/repos/laravel-11x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;laravel/laravel&lt;/strong&gt;が管理されているgithubのレポからファイルをダウンロードして&lt;strong&gt;laravel-11x&lt;/strong&gt;のディレクトリにインストールします。
&lt;strong&gt;Downloading&lt;/strong&gt;では、ダウンロードされたファイルは直接&lt;strong&gt;larave-11x&lt;/strong&gt;へのディレクトリには置かれません。将来のインストールを効率化するために、ユーザーのキャッシュのディレクトリにインストールされます。私のubuntuの環境では、ホームディレクトリの&lt;strong&gt;.cache/composer&lt;/strong&gt;にファイルが置かれます。すでに同じバージョンのパッケージがあるなら、&lt;strong&gt;Downloading&lt;/strong&gt;は行われずに、そのキャッシュのディレクトリから、&lt;strong&gt;laravel-11x&lt;/strong&gt;へのディレクトリにファイルがコピーされます。その作業が&lt;strong&gt;Installing&lt;/strong&gt;です。&lt;/p&gt;
&lt;h3&gt;.envの作成&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php -r &amp;#34;file_exists(&amp;#39;.env&amp;#39;) || copy(&amp;#39;.env.example&amp;#39;, &amp;#39;.env&amp;#39;);&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これは、composer.jsonの&lt;strong&gt;&amp;ldquo;scripts&amp;rdquo;&lt;/strong&gt;セクションにあった、&lt;strong&gt;&amp;ldquo;post-root-package-install&amp;rdquo;&lt;/strong&gt;のスクリプトですね。.env.exampleをコピーして.envを作成です。&lt;/p&gt;
&lt;h3&gt;composer.lockの作成&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Loading composer repositories with package information
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating dependencies
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Lock file operations: 107 installs, 0 updates, 0 removals
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Locking brick/math (0.12.1)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Locking carbonphp/carbon-doctrine-types (3.2.0)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Writing lock file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここでは、composer.jsonの&lt;strong&gt;&amp;ldquo;require&amp;rdquo;&lt;/strong&gt;と&lt;strong&gt;&amp;ldquo;require-dev&amp;rdquo;&lt;/strong&gt;で指定されたパッケージたちのcomposer.jsonを読み、それらが依存するパッケージのcomposer.jsonも読み、コンフリクトがないようにインストールするすべてのパッケージとそのバージョンを決定します。そして、この時点で初めて&lt;strong&gt;composer.lock&lt;/strong&gt;のファイルを作成して決定した情報を書き込みします。それがLockingの作業です。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;require&amp;rdquo;&lt;/strong&gt;で指定したバージョンのデータと実際にダウンロードされるバージョンの違いに注意してください。
例えば、&amp;ldquo;require&amp;quot;では、&lt;strong&gt;&amp;ldquo;laravel/framework&amp;rdquo;: &amp;ldquo;^11.9&amp;rdquo;&lt;/strong&gt;とありますが、この時点では&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Locking laravel/framework (v11.34.2)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;と、v11.34.2のバージョンがインストールされます。&lt;/p&gt;
&lt;h3&gt;依存するパッケージのインストール&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Installing dependencies from lock file (including require-dev)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Package operations: 107 installs, 0 updates, 0 removals
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Downloading doctrine/inflector (2.0.10)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Downloading doctrine/lexer (3.0.1)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Installing doctrine/inflector (2.0.10): Extracting archive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - Installing doctrine/lexer (3.0.1): Extracting archive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;41 package suggestions were added by new dependencies, use `composer suggest` to see details.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここのステップでルートパッケージに依存するすべてのパッケージがcomposer.lockに従ったバージョンで&lt;strong&gt;laravel-11x/vendo&lt;/strong&gt;rにインストールされます。&lt;strong&gt;Downloading&lt;/strong&gt;や&lt;strong&gt;Installing&lt;/strong&gt;はルートパッケージのところで説明したものと同様です。&lt;/p&gt;
&lt;h3&gt;scriptsの実行&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Generating optimized autoload files
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; Illuminate\Foundation\ComposerScripts::postAutoloadDump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php artisan package:discover --ansi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php artisan vendor:publish --tag=laravel-assets --ansi --force
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php artisan key:generate --ansi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php -r &amp;#34;file_exists(&amp;#39;database/database.sqlite&amp;#39;) || touch(&amp;#39;database/database.sqlite&amp;#39;);&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php artisan migrate --graceful --ansi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;残りの作業は、composer.jsonで指定されたイベントにマッチするスクリプトが実行されます。
上から順番に以下のイベントとなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-autoload-dump&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Illuminate\\Foundation\\ComposerScripts::postAutoloadDump&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan package:discover --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;composer autoload-dump&lt;/strong&gt;を実行したときにも実行されますが、プロジェクトの初期化で使用される必要なパッケージとそのクラスのリストを含むファイルを作成します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-update-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan vendor:publish --tag=laravel-assets --ansi --force&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;プロジェクトで必要なアセットのファイルをパブリッシュします。上の経過では何もパブリッシュするものがなかったようです。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-create-project-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan key:generate --ansi&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php -r \&amp;#34;file_exists(&amp;#39;database/database.sqlite&amp;#39;) || touch(&amp;#39;database/database.sqlite&amp;#39;);\&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan migrate --graceful --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最後に、ここで&lt;strong&gt;.env&lt;/strong&gt;の&lt;strong&gt;APP_KEY&lt;/strong&gt;の値を作成し、sqliteのデータベースのファイルを作成して、マイグレーションを実行します。&lt;/p&gt;
&lt;p&gt;上は最新の&lt;strong&gt;Laravel 11.x&lt;/strong&gt;ですが、&lt;strong&gt;Laravel 10.x&lt;/strong&gt;では、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-create-project-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan key:generate --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;となっていて、sqliteのデータベースの作成や設定は行いませんでした。&lt;/p&gt;
&lt;/li&gt;</description>
        </item>
        <item>
        <title>composerをもっと知ろう（１）composer show</title>
        <link>https://www.larajapan.com/2024/11/23/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%91%EF%BC%89composer-show/</link>
        <pubDate>Sat, 23 Nov 2024 06:51:48 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2024/11/23/composer%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8D%E3%81%86%EF%BC%88%EF%BC%91%EF%BC%89composer-show/</guid>
        <description>&lt;p&gt;&lt;strong&gt;composer&lt;/strong&gt;は、phpのプロジェクトで使用されるパッケージを管理するコマンドです。昨今はcomposerなしではphpのプロジェクトは作成できないほど重要なものです。しかし、知らないことがたくさんあります。ということで「composerをもっと知ろう」シリーズです。composerに関するいろいろな面を紹介していきます。&lt;/p&gt;
&lt;h2&gt;composerがインストールしたパッケージ&lt;/h2&gt;
まず、最新のLaravelのプロジェクトを作成してみましょう。
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer create-project laravel/laravel laravel-11x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;composer create-projejt&lt;/strong&gt;に関しては違う機会に説明するとして、上のコマンド実行後に何のパッケージがインストールされたか見てみましょう。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer show
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;を実行すると、以下のように107ものパッケージのリストが、パッケージ名、バージョン、説明を列として表示されます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;brick/math                         0.12.1  Arbitrary-precision arithmetic library
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;carbonphp/carbon-doctrine-types    3.2.0   Types to use Carbon in Doctrine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dflydev/dot-access-data            3.0.3   Given a deep data structure, access data by dot notation.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;doctrine/inflector                 2.0.10  PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;doctrine/lexer                     3.0.1   PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dragonmantank/cron-expression      3.4.0   CRON &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; PHP: Calculate the next or previous run date and determine &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; a CRON expression is due
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;egulias/email-validator            4.0.2   A library &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; validating emails against several RFCs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fakerphp/faker                     1.24.0  Faker is a PHP library that generates fake data &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; you.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;filp/whoops                        2.16.0  php error handling &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; cool kids
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fruitcake/php-cors                 1.3.0   Cross-origin resource sharing library &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; the Symfony HttpFoundation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;graham-campbell/result-type        1.1.3   An Implementation Of The Result Type
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;guzzlehttp/guzzle                  7.9.2   Guzzle is a PHP HTTP client library
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;guzzlehttp/promises                2.0.4   Guzzle promises library
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;guzzlehttp/psr7                    2.7.0   PSR-7 message implementation that also provides common utility methods
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;guzzlehttp/uri-template            1.0.3   A polyfill class &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; uri_template of PHP
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hamcrest/hamcrest-php              2.0.1   This is the PHP port of Hamcrest Matchers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/framework                  11.31.0 The Laravel Framework.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/pail                       1.2.1   Easily delve into your Laravel application&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;&lt;/span&gt;s log files directly from the command line.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/pint                       1.18.1  An opinionated code formatter &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; PHP.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/prompts                    0.3.2   Add beautiful and user-friendly forms to your command-line applications.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/sail                       1.38.0  Docker files &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; running a basic Laravel application.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/serializable-closure       1.3.6   Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/tinker                     2.10.0  Powerful REPL &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; the Laravel framework.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;league/commonmark                  2.5.3   Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;GFM&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;..
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;続く
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;まだ開発を始めていなのにすでにこれだけのパッケージがインストールされます。上のリストを見ていて気付くのは、もちろんのことですが、Laravel自体もパッケージなのです。上のリストにある&lt;strong&gt;laravel/framework&lt;/strong&gt;がそうです。他のもlaravelのレポからは６つのパッケージがインストールされます。私が大好きな&lt;strong&gt;laravel/tinker&lt;/strong&gt;も含まれます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;composer.json&lt;/strong&gt;の中身を見ればわかりますが、そこでは上のすべてのパッケージを指定はしていません。以下を実行すると指定したパッケージがリストされます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer show --self
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;composer1.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-10414&#34; src=&#34;composer1.png&#34; alt=&#34;&#34; width=&#34;943&#34; height=&#34;591&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上で、&lt;strong&gt;requires&lt;/strong&gt;の下にリストされているのが、ライブ環境で必要なパッケージです。phpはすでにインストールされているのでたったの２つです。
&lt;strong&gt;requires (dev)&lt;/strong&gt;は、開発環境において必要なパッケージです。こちらもたったの７つです。&lt;/p&gt;
&lt;p&gt;さて、どうして&lt;strong&gt;composer show&lt;/strong&gt;では107ものパッケージがリストされるのでしょうか？&lt;/p&gt;
&lt;p&gt;それは、&lt;strong&gt;requires&lt;/strong&gt;あるいは&lt;strong&gt;requires (dev)&lt;/strong&gt;でリストされているそれぞのパッケージがまた違うパッケージを必要とするからです。さらにそのパッケージもまた他のを&amp;hellip;と。&lt;/p&gt;
&lt;p&gt;例えば、私が好きなtinkerのパッケージを見てみましょう。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer show --tree &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/tinker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ツリー構造はtinkerのパッケージが依存するパッケージを表示します。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;composer2.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-10415&#34; src=&#34;composer2.png&#34; alt=&#34;&#34; width=&#34;943&#34; height=&#34;820&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;パッケージだけでなく、phpのバージョンやphpもモジュール（ext-json *など）の依存もあります。&lt;/p&gt;
&lt;p&gt;composerはこれらを全部チェックして、すべてのをまとめて必要なパッケージをインストールします。それぞれパッケージは違うバージョンを指定することもあるので、バージョンの整合性もチェックする必要あります。非常に大変に複雑な作業です。composerの偉大さが理解できますね。&lt;/p&gt;
&lt;h2&gt;インストールされているパッケージは最新？&lt;/h2&gt;
インストールしたパッケージたちは時間が経つと、バグの修正や新規のの追加など行われ、インストール時のバージョンと変わってきます。
以下のコマンドは、最新のパッケージの情報を取得してきて見せてくれます。それゆえにコマンド実行には時間がかかります。
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer show --latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;composer3.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-10416&#34; src=&#34;composer3.png&#34; alt=&#34;&#34; width=&#34;943&#34; height=&#34;549&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;それぞれの列は、パッケージ名、インストールされているバージョン、最新のバージョン、そして説明となります。
最新のパージョンに列において緑字は「最新」であり更新の必要はないということで、赤字は更新を「推薦」という意味です。&lt;/p&gt;
&lt;p&gt;黄色時は「メジャー」のバージョン更新がリリースされていることを示します。以下は違うプロジェクトからですが、前バージョンのLaravel 10xを使用しており、ご覧のようにLaravel 11xのメジャーリリースがあることを示しています。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;composer5.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-10418&#34; src=&#34;composer5.png&#34; alt=&#34;&#34; width=&#34;943&#34; height=&#34;285&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;先のプロジェクトに戻って、全部ではなく更新を推薦するパッケージのみを見たいなら以下を実行してください。&lt;strong&gt;&amp;ndash;no-dev&lt;/strong&gt;のオプションは開発のパッケージを表示しません。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer show --outdated --no-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;composer6.png&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-10419&#34; src=&#34;composer6.png&#34; alt=&#34;&#34; width=&#34;943&#34; height=&#34;173&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
        </item>
        <item>
        <title>composerでタスクを実行</title>
        <link>https://www.larajapan.com/2020/08/21/composer%E3%81%A7%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C/</link>
        <pubDate>Fri, 21 Aug 2020 00:19:34 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2020/08/21/composer%E3%81%A7%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E5%AE%9F%E8%A1%8C/</guid>
        <description>&lt;p&gt;先日、&lt;a href=&#34;https://github.com/rappasoft/laravel-boilerplate&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;Laravel-boilerplate&lt;/a&gt;というオープンソースのプロジェクトのコードを見ていて、&lt;strong&gt;composer&lt;/strong&gt;でプロジェクトのキャッシュのクリアー、ユニットテストの実行やコードの整形などいろいろなタスクを実行できることに気づきました。今回はその話です。&lt;/p&gt;
&lt;p&gt;まっさらでインストールしたLaravelのプロジェクトでは、&lt;strong&gt;composer.json&lt;/strong&gt;の&lt;strong&gt;scripts&lt;/strong&gt;のセクションは、以下のようになります。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;composer.json&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-autoload-dump&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Illuminate\\Foundation\\ComposerScripts::postAutoloadDump&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan package:discover --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-root-package-install&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php -r \&amp;#34;file_exists(&amp;#39;.env&amp;#39;) || copy(&amp;#39;.env.example&amp;#39;, &amp;#39;.env&amp;#39;);\&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-create-project-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan key:generate --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上記のコマンドを説明すると、&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;post-autoload-dump&lt;/strong&gt;のタスクは、以下のように&lt;strong&gt;dump-autoload&lt;/strong&gt;を実行したときに自動的に実行され、&lt;strong&gt;composer.json&lt;/strong&gt;で指定されているパッケージの自動ディスカバーをしてくれます。昔のLaravelではこれいちいち&lt;strong&gt;config/app.php&lt;/strong&gt;ファイルでのパッケージの指定していました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer dump-autoload
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Generating optimized autoload files&amp;gt; Illuminate&lt;span style=&#34;color:#ae81ff&#34;&gt;\F&lt;/span&gt;oundation&lt;span style=&#34;color:#ae81ff&#34;&gt;\C&lt;/span&gt;omposerScripts::postAutoloadDump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; @php artisan package:discover --ansi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Discovered Package: facade/ignition
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Discovered Package: fideloper/proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Discovered Package: laravel/tinker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Discovered Package: nesbot/carbon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Discovered Package: nunomaduro/collision
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Package manifest generated successfully.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Generated optimized autoload files containing &lt;span style=&#34;color:#ae81ff&#34;&gt;4218&lt;/span&gt; classes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;composer create-project&lt;/strong&gt;の実行でもこのスクリプトは実行されます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;post-root-package-install&lt;/strong&gt;のタスクは、プロジェクト作成時において&lt;strong&gt;.env&lt;/strong&gt;ファイルがないときに実行され、&lt;strong&gt;.env.example&lt;/strong&gt;から&lt;strong&gt;.env&lt;/strong&gt;のファイルの作成します。&lt;/p&gt;
&lt;p&gt;最後の、&lt;strong&gt;post-create-project-cmd&lt;/strong&gt;のタスクは、これまたプロジェクト作成時に実行され、&lt;strong&gt;.env&lt;/strong&gt;で使用される暗号キーを自動作成して.envに保存します。&lt;/p&gt;
&lt;p&gt;さて、今度は&lt;strong&gt;laravel-boilerplate&lt;/strong&gt;の&lt;strong&gt;composer.json&lt;/strong&gt;を見てみます。&lt;strong&gt;scripts&lt;/strong&gt;のセクションでは、上のデフォルトのスクリプトに付け加えて、いくつか独自のタスクのためのスクリプトを追加しています。以下では私が説明のためにコメントしていますが、jsonファイルはコメント指定不可なので注意を。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;composer.json&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-autoload-dump&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Illuminate\\Foundation\\ComposerScripts::postAutoloadDump&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan package:discover --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-root-package-install&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php -r \&amp;#34;file_exists(&amp;#39;.env&amp;#39;) || copy(&amp;#39;.env.example&amp;#39;, &amp;#39;.env&amp;#39;);\&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-create-project-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan key:generate --ansi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;post-update-cmd&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [　&lt;span style=&#34;color:#75715e&#34;&gt;// php stormなどのIDEエディターのヘルパーのため。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan ide-helper:generate&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan ide-helper:meta&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;clear-all&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [　&lt;span style=&#34;color:#75715e&#34;&gt;// bootstrap/cacheやstorage/frameworkなどに含まれるキャッシュファイルを削除して、vendor/composer/autoload_real.phpを再作成
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan clear-compiled&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan cache:clear&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan route:clear&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan view:clear&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan config:clear&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan permission:cache-reset&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;composer dumpautoload -o&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cache-all&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [ &lt;span style=&#34;color:#75715e&#34;&gt;// 設定データやルートのデータをキャッシュ。bootstrap/cacheにキャッシュファイルを作成
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan config:cache&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@php artisan route:cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;reset&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [ &lt;span style=&#34;color:#75715e&#34;&gt;// composer関連のファイルをクリア
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;composer clear-all&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;composer cache-all&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vendor/bin/phpunit&amp;#34;&lt;/span&gt;,　&lt;span style=&#34;color:#75715e&#34;&gt;// ユニットテストの実行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;test-coverage&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vendor/bin/phpunit --coverage-html coverage&amp;#34;&lt;/span&gt;,　&lt;span style=&#34;color:#75715e&#34;&gt;// ユニットテストのカバレージの作成
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vendor/bin/php-cs-fixer fix --allow-risky=yes&amp;#34;&lt;/span&gt;　&lt;span style=&#34;color:#75715e&#34;&gt;// コードの整形
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最後に、追加されたスクリプトは、以下のように実行できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer run clear-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;便利ですね。&lt;/p&gt;
&lt;p&gt;紹介しておきながらなんですが、私はこれらのタスクは、&lt;strong&gt;Makefile&lt;/strong&gt;に入れて&lt;strong&gt;make&lt;/strong&gt;で実行します。それに関してはいつか紹介します。&lt;/p&gt;</description>
        </item>
        <item>
        <title>composerのあれこれ</title>
        <link>https://www.larajapan.com/2018/09/17/composer%E3%81%AE%E3%81%82%E3%82%8C%E3%81%93%E3%82%8C/</link>
        <pubDate>Mon, 17 Sep 2018 06:13:39 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2018/09/17/composer%E3%81%AE%E3%81%82%E3%82%8C%E3%81%93%E3%82%8C/</guid>
        <description>&lt;p&gt;新規のLaravelのプロジェクトを作成するときや、ライブラリを追加するときに使用する&lt;strong&gt;composer&lt;/strong&gt;のコマンド。Laravelの陰で一見地味な存在に見えます。しかし、このおかげでphp言語のライブラリのインフラが整備され、アプリのモダンな開発の基盤を提供している&lt;strong&gt;なくてはならない&lt;/strong&gt;コマンドです。今回はこのコマンドに注目してみます。&lt;/p&gt;
&lt;h2&gt;composerのインストール&lt;/h2&gt;
&lt;p&gt;1回実行すれば何もしないのですっかり忘れていたけれど、以下が正しいインストール方法。&lt;a href=&#34;https://getcomposer.org/download/&#34;&gt;これによると&lt;/a&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ php -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;copy(&amp;#39;https://getcomposer.org/installer&amp;#39;, &amp;#39;composer-setup.php&amp;#39;);&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ php -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;if (hash_file(&amp;#39;SHA384&amp;#39;, &amp;#39;composer-setup.php&amp;#39;) === &amp;#39;544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061&amp;#39;) { echo &amp;#39;Installer verified&amp;#39;; } else { echo &amp;#39;Installer corrupt&amp;#39;; unlink(&amp;#39;composer-setup.php&amp;#39;); } echo PHP_EOL;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ php composer-setup.php
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ php -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;unlink(&amp;#39;composer-setup.php&amp;#39;);&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上を実行すると、&lt;strong&gt;composer.phar&lt;/strong&gt;のファイルが作成されます。開発環境なら、自分のホームの&lt;strong&gt;bin&lt;/strong&gt;のディレクトリに、グローバルで使用したいなら、ルート権限で以下のように適切なディレクトリへ移します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ mv composer.phar /usr/local/bin/composer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;composer.pharの作成時には、ホームディレクトリに、&lt;strong&gt;.composer&lt;/strong&gt;のディレクトリ（あるいは、.config/composer）が作成されます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.composer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── cache
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── keys.dev.pub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── keys.tags.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今はほとんど空ですが、将来はすでにインストールしたパッケージのキャッシュやlaravelなどのコマンドの保存場所となります。&lt;/p&gt;
&lt;h2&gt;Laravelのパッケージのインストール&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;composer&lt;/strong&gt;のコマンドが使えるようになったところで、laravelのパッケージをインストールします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer global require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/installer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;global&lt;/strong&gt;のオプションは、ホームディレクトリの.composerのディレクトリにファイルをインストールすることを指定します。インストール後は、.composerのディレクトリは以下のような感じになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.composer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── cache
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── files
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── guzzlehttp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── laravel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── psr
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── symfony
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── repo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       └── https---repo.packagist.org
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── composer.json
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── composer.lock
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── keys.dev.pub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── keys.tags.pub
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── vendor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ├── autoload.php
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ├── bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │   └── laravel -&amp;gt; ../laravel/installer/laravel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ├── composer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ├── guzzlehttp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ├── laravel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    │   └── installer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ├── psr
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── symfony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;vendor/bin/laravelのコマンドに気づいたと思いますが、Laravelのプロジェクトの作成に使われるコマンドです。簡単に実行できるように、.bashrcなどのファイルにおいて、&lt;strong&gt;$PATH&lt;/strong&gt;に、$HOME/.composer/vendor/binを追加しておいてください。&lt;/p&gt;
&lt;h2&gt;Laravelのプロジェクトの作成&lt;/h2&gt;
&lt;p&gt;ここまで来ると、プロジェクトの作成は簡単です。インストールしたいディレクトリへ行き以下を実行します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ laravel new new-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意が必要なのは、上のコマンドの実行では最新のLaravelのバージョン（今なら、5.7）がインストールされることです。&lt;/p&gt;
&lt;p&gt;バージョンを指定したいなら、&lt;strong&gt;composer&lt;/strong&gt;コマンドの登場です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer create-project --prefer-dist laravel/laravel new-project &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5.5.*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;composerのオプション&lt;/h2&gt;
&lt;p&gt;新規のLaravelのプロジェクトを作成したところで、いったい何のパッケージがインストールされたのでしょう？
ホームディレクトリの.composerと同様に、&lt;strong&gt;vendor&lt;/strong&gt;のディレクトリを見るとパッケージに対応していろいろなディレクトリが作成されています。&lt;/p&gt;
&lt;p&gt;パッケージの情報をより見たいなら、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;composer show&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;の実行です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ composer show
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;beyondcode/laravel-dump-server        1.2.1    Symfony Var-Dump Server &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; Laravel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dnoegel/php-xdg-base-dir              0.1      implementation of xdg base directory specification &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; php
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;doctrine/inflector                    v1.3.0   Common String Manipulations with regard to casing and singular/plural rules.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;doctrine/instantiator                 1.1.0    A small, lightweight utility to instantiate objects in PHP without invoking their constructors
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;doctrine/lexer                        v1.0.1   Base library &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; a lexer that can be used in Top-Down, Recursive Descent Parsers.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dragonmantank/cron-expression         v2.2.0   CRON &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; PHP: Calculate the next or previous run date and determine &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; a CRON expression is due
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;egulias/email-validator               2.1.5    A library &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; validating emails against several RFCs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;erusev/parsedown                      1.7.1    Parser &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; Markdown.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fideloper/proxy                       4.0.0    Set trusted proxies &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; Laravel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;filp/whoops                           2.2.1    php error handling &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; cool kids
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fzaninotto/faker                      v1.8.0   Faker is a PHP library that generates fake data &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; you.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hamcrest/hamcrest-php                 v2.0.0   This is the PHP port of Hamcrest Matchers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jakub-onderka/php-console-color       0.1     
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jakub-onderka/php-console-highlighter v0.3.2  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/framework                     v5.7.3   The Laravel Framework.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;laravel/tinker                        v1.0.7   Powerful REPL &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; the Laravel framework.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;他のパッケージをインストールしたいなら、例えば、&lt;a href=&#34;https://github.com/PHPOffice/PhpSpreadsheet&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;スプレッドシートのライブラリ&lt;/a&gt;をインストールしたいなら、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;composer require &amp;ldquo;phpoffice/phpspreadsheet&amp;rdquo;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;を実行します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;composer.json&lt;/strong&gt;のファイルも更新されて、&lt;code&gt;&amp;ldquo;phpoffice/phpspreadsheet&amp;rdquo;: &amp;ldquo;^1.4&amp;rdquo;&lt;/code&gt;の行が追加されます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/laravel&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The Laravel Framework.&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;framework&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;license&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MIT&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;project&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;php&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^7.1.3&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fideloper/proxy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^4.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/framework&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5.7.*&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;laravel/tinker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;phpoffice/phpspreadsheet&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;開発のみに使用するパッケージは、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;composer require barryvdh/laravel-debugbar &amp;ndash;dev&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;と、&lt;strong&gt;&amp;ndash;dev&lt;/strong&gt;オプションをつけて実行します。実行後は、&lt;strong&gt;composer.json&lt;/strong&gt;の&lt;strong&gt;require-dev&lt;/strong&gt;セクションも以下のように更新されています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;require-dev&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;barryvdh/laravel-debugbar&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^3.2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;beyondcode/laravel-dump-server&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;filp/whoops&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^2.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fzaninotto/faker&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.4&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mockery/mockery&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^1.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nunomaduro/collision&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^2.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;phpunit/phpunit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^7.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;手動でこのファイルを編集してパッケージを追加したときには、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;composer update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;を実行します。他のパッケージの更新やパッケージ間の依存のチェックもあり、時間がかかります。&lt;/p&gt;
&lt;p&gt;上記のコマンドの実行で、&lt;strong&gt;composer.json&lt;/strong&gt;が編集されることを見てきましたが、&lt;strong&gt;composer.lock&lt;/strong&gt;というファイルも更新されます。このファイルは、プロジェクトのデプロイにおいて重要です。開発環境でテストされたプログラムと同じパッケージの同じパージョンを、本環境にプログラムをデプロイする必要あります。それには、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;composer install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;を本サイトで実行します。このコマンドは、&lt;strong&gt;composer.lock&lt;/strong&gt;のデータに従って開発環境と同じパッケージの同じバージョンのファイルをインストールしてくれます。&lt;/p&gt;
&lt;p&gt;さらに、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;composer install &amp;ndash;no-dev&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;と、&lt;strong&gt;&amp;ndash;no-dev&lt;/strong&gt;オプションを付ければ、開発だけに必要なパッケージは一切インストールはしません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;composer.json&lt;/strong&gt;と&lt;strong&gt;composer.lock&lt;/strong&gt;はそれゆえに、&lt;strong&gt;git&lt;/strong&gt;などで必ずバージョン管理する必要があります。&lt;/p&gt;</description>
        </item>
        
    </channel>
</rss>
