Slide 1

Slide 1 text

#phpcon2022
 自作したプログラムを Packagist に登録して
 世界中の PHPer にインストールしてもらおう
 株式会社ラクス
 久山勝生 @MasaKu_e
 PHP Conference Japan
 2022/09/25
 1


Slide 2

Slide 2 text

#phpcon2022
 PHPで作成した便利なツールを
 ローカルで眠らせていませんか?
 2


Slide 3

Slide 3 text

#phpcon2022
 世界中の PHPer に共有しましょう!
 3


Slide 4

Slide 4 text

#phpcon2022
 この発表のターゲット
 ● PHP でツールを開発している方
 ● 作ったツールをみんなに使ってもらいたい方
 ● Packagist について知りたい方
 4


Slide 5

Slide 5 text

#phpcon2022
 自己紹介
 ● 久山勝生(@MasaKu_e)
 ○ 株式会社ラクス
 ○ 関西出身
 ○ 配配メール開発担当
 ○ Web×PHP TechCafe運営
 ● 好きなもの
 ○ 緑茶
 ○ ハイボール
 ○ ソース味の食べ物
 5


Slide 6

Slide 6 text

#phpcon2022
 Composer と Packagist
 6


Slide 7

Slide 7 text

#phpcon2022
 Composer について
 ● PHP アプリケーションの依存関係管理ツール
 ○ composer.json に依存するライブラリを記述
 ○ コマンド一発で インストール/更新 してくれる
 7
 { "require": { "monolog/monolog": "2.0.*" } } composer.json composer update monolog が取得される

Slide 8

Slide 8 text

#phpcon2022
 ● Composer のメインリポジトリ
 ○ composer.json に記載された情報からパッケージを検索
 ○ パッケージの連携元(GitHubなど)からダウンロード
 Packagist について
 8


Slide 9

Slide 9 text

#phpcon2022
 なんだか難しそう・・・
 9


Slide 10

Slide 10 text

#phpcon2022
 想像より簡単ですよ!
 10


Slide 11

Slide 11 text

#phpcon2022
 パッケージの公開方法
 1. パッケージの定義(composer.json の作成)
 2. composer.json の書式チェック
 3. GitリポジトリまたはVCSリポジトリにコミット
 4. リポジトリのURLを Packagist に紐づけ
 11
 上記で Composer コマンドで取得可能になります

Slide 12

Slide 12 text

#phpcon2022
 パッケージの定義
 ● 各種パラメータの指定
 ○ name
 ■ ベンダー名/パッケージ名
 ○ description
 ■ パッケージの説明
 ○ require
 ■ 依存関係のあるパッケージ記載
 ○ licence
 ■ ライセンス情報
 { "name": "masakuuuu/dicegame", "description": "play dicegame", "require": { "php": ">=8.1" }, "license": "MIT", } composer.json 12


Slide 13

Slide 13 text

#phpcon2022
 composer.json の書式チェック
 ● composer validate を実行
 ○ 「composer.json is valid」が出力されればOK
 
 
 ● リポジトリにコミット
 13


Slide 14

Slide 14 text

#phpcon2022
 Packgist に登録
 14
 ● Packagist の公式HPにアクセス
 ここにリポジトリのURLを指定する

Slide 15

Slide 15 text

#phpcon2022
 登録完了
 15
 composer コマンドで取得可能になりました たったこれだけ!

Slide 16

Slide 16 text

#phpcon2022
 Packagist の画面の見方
 16


Slide 17

Slide 17 text

#phpcon2022
 17


Slide 18

Slide 18 text

#phpcon2022
 18
 composer.json に記載した内容
 { "name": "masakuuuu/dicegame", "description": "play dicegame", "require": { "php": ">=8.1" }, "license": "MIT", } composer.json

Slide 19

Slide 19 text

#phpcon2022
 19
 リポジトリのURLや スター数など リポジトリの内容
 README の内容 タグ情報

Slide 20

Slide 20 text

#phpcon2022
 そのほかのフィールド情報
 ● require-dev
 ○ 本番運用では不要な開発用のパッケージを指定(PHPUnit など)
 ○ composer update --no-dev コマンドで除外されるパッケージ
 ● keywords
 ○ Packagist の検索キーワード
 ● type
 ○ デフォルトは「library」
 20
 続きは composer の公式でチェックしてみてください🙇

Slide 21

Slide 21 text

#phpcon2022
 Packagist に登録すると
 ● Composer 経由でプログラムを取得できる
 ● リポジトリ情報をGUIで確認できる
 ● 丁寧な composer.json を書く動機付けになる
 21
 世界中の PHPer にインストールしてもらおう

Slide 22

Slide 22 text

#phpcon2022
 Let’s Enjoy PHPer’s Life!
 22


Slide 23

Slide 23 text

#phpcon2022
 ご清聴ありがとうございました!
 23


Slide 24

Slide 24 text

#phpcon2022
 参考サイト
 Composer 公式HP
 https://getcomposer.org/
 Packagist 公式HP
 https://packagist.org/
 illustAC
 https://www.ac-illust.com/ 
 The composer.json schema 
 https://getcomposer.org/doc/04-schema.md 
 
 
 24