php.netの「Upcoming conferences」に「PHPカンファレンス福岡2024」も掲載してほしい

今年は「月刊PHPカンファレンス」といった感じで、[1月を皮切りに6月まで毎月どこかでPHPカンファレンスが開催される](https://qiita.com/akase244/items/c3f9855275ac77be39b3)ことをご存知でしょうか？

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">このスライド助かるw<br><br> <a href="https://twitter.com/hashtag/phpcon?src=hash&amp;ref_src=twsrc%5Etfw">#phpcon</a> <a href="https://twitter.com/hashtag/phpcon2023?src=hash&amp;ref_src=twsrc%5Etfw">#phpcon2023</a> <a href="https://t.co/WvDMgcq1iI">pic.twitter.com/WvDMgcq1iI</a></p>&mdash; ことみん (@kotomin_m) <a href="https://twitter.com/kotomin_m/status/1710941870497681424?ref_src=twsrc%5Etfw">October 8, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

そんな「月刊PHPカンファレンス」仲間の「[PHPカンファレンス関西2024](https://2024.kphpug.jp/)（2月開催）」と「[PHPカンファレンス香川2024](https://phpcon.kagawa.jp/2024/)（5月開催）」が [php.net](https://www.php.net/) の「[Upcoming conferences](https://www.php.net/conferences/)」のページに掲載されているではありませんか。

![Screenshot from 2024-01-07 22-04-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/aa0f305c-25e9-b221-e4d1-d1fad8b4025a.png)

![Screenshot from 2024-01-07 22-05-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/e21cf912-bdf9-007a-a23c-762fd4b5f5d9.png)

ズルい！「[PHPカンファレンス福岡2024](https://phpcon.fukuoka.jp/2024/)」も掲載してほしい！！！
ということで、掲載依頼の手順についてまとめていきたいと思います。

---

「[Upcoming conferences](https://www.php.net/conferences/)」のページの右上に「[Want to see your conference appear here?](https://wiki.php.net/conferences)」とあるので、こちらにアクセスします。

![Screenshot from 2024-01-07 23-05-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/4f8c2971-bf7b-6359-10b3-c40b371cc8d0.png)

掲載する方法は2つあり、1つはGitHubでPull Requestを送る方法（推奨）、もう1つはメーリングリストに送信する方法のようです。

![Screenshot from 2024-01-07 23-06-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/7569a94a-afab-d3f5-aaf4-c0ec505a23cb.png)

関西と香川の実行委員長にやり方を聞いてみたところ、Pull Requestを送る方法で実施したとのことだったので、福岡もPull Requestの形式でやってみることにしました。

- [Add PHP Conference Kansai 2024.](https://github.com/php/web-php/pull/910)
- [Add PHP Conference Kagawa 2024](https://github.com/php/web-php/pull/912)

先ほどのページに以下のように手順が書いてあるので、1つずつやっていきましょう。

- Fork and clone that repository
    - php.netのwebサイトのリポジトリを `fork` して `git clone` する。
- execute the bin/createNewsEntry script (php bin/createNewsEntry)
    - リポジトリ内の「`bin/createNewsEntry`」というPHPで書かれたスクリプトを実行する。
- follow the step-by-step instructions, and commit and push the generated changes, and open a pull request.
    - 対話式のやり取りを終えたら変更点をコミットし、プッシュして、Pull Requestを作る。

---

まず、[php.netのwebサイトのリポジトリ](https://github.com/php/web-php)にアクセスして、画面右上の「Fork」ボタンをクリックします。

![Screenshot from 2024-01-07 23-24-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/db97f77f-50ea-0014-aaca-0b9aad1150a1.png)

自分のアカウントの配下に「web-php」のリポジトリが `fork` されました。

![Screenshot from 2024-01-07 23-25-54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/ac3478bd-a712-78ed-274d-dbe436015f33.png)

次に、 `fork` したリポジトリを `git clone` します。
`clone` についてはご自分の環境に合わせて行ってください。
私は `/home/akase244/repos/web-php` に `clone` しました。

次は、 `bin/createNewsEntry` という[スクリプト](https://github.com/php/web-php/blob/master/bin/createNewsEntry)を実行する手順ですが、このファイルの中身を見てみるとPHPで書かれています。

```PHP:createNewsEntry
#!/usr/bin/env php
<?php
PHP_SAPI == 'cli' or die("Please run this script using the cli sapi");

require_once __DIR__ . '/../src/autoload.php';

use phpweb\News\Entry;
・
・
・
```

なので、以下のコマンドを実行します。するとニュース記事（今回はカンファレンスの紹介記事）のタイトルの入力を求められます。

```
$ php bin/createNewsEntry
Please type in the title: 
```

メッセージに従い、カンファレンスのタイトルを入力し、エンターを押下します。

```
Please type in the title: PHP Conference Fukuoka 2024
```

次は、カテゴリーの入力を求められます。

```
Categories:
	0: PHP.net frontpage news	 [frontpage]
	1: New PHP release	 [releases]
	2: Conference announcement	 [conferences]
	3: Call for Papers	 [cfp]
Please select appropriate categories, seperated with space:
```

今回はカンファレンスの告知を行いたいので「2」と入力し、エンターを押下します。

```
Please select appropriate categories, seperated with space: 2
```

次は、カンファレンスの開始日（もしくはCFPの受付終了日）の入力を求められます。

```
When does the conference start/cfp end? (strtotime() compatible syntax): 
```

今回はカンファレンスの開催日を入力します。

```
When does the conference start/cfp end? (strtotime() compatible syntax): 2024-06-22
```

次に、この告知記事には画像を添付するのか否かを質問されます。

```
Will a picture be accompanying this entry?
```

しかし、これだけでは一体何を入力してよいのやら。。。
ということで、 `createNewsEntry` のコードを読んでみると、以下の箇所が見つかりました。

```PHP:createNewsEntry
	fwrite(STDOUT, "Will a picture be accompanying this entry? ");
	$yn = fgets(STDIN);


	if (strtoupper($yn[0]) !== "Y") {
		return NULL;
	}
```

どうやら、画像を添付する場合は「y」と回答したらよいみたいです。

```
Will a picture be accompanying this entry? y
```

次に、画像ファイルの名前の入力を求められます。
ここで、どうやら `images/news` 配下にファイルを配置しておく必要があったことがわかります。

```
Enter the image name (note: the image has to exist in './images/news'): 
```

しかし、推奨されるファイルの形式やサイズがわかりません。
なので、また `createNewsEntry` のコードを読んでみると、以下の箇所が見つかりました。
どうやら、幅400px、高さ250px以内に収まる形式にする必要がありそうです。

```PHP:createNewsEntry
$imageRestriction = [
	'width' => 400,
	'height' => 250
];
```

```PHP:createNewsEntry
			$imageSizes = getimagesize("./images/news/$path");

			if (($imageSizes[0] > $imageRestriction['width']) || ($imageSizes[1] > $imageRestriction['height'])) {
				fwrite(STDOUT, "Provided image has a higher size than recommended (" . implode(' by ', $imageRestriction) . "). Continue? ");
				$ynImg = fgets(STDIN);
				if (strtoupper($ynImg[0]) !== "Y") {
					$isValidImage = false;
				}
			}

```

なので、 `/home/akase244/repos/web-php/images/news` 配下に 250x250の `phpconfuk2024.png` を配置して、以下のように入力しました。

```
Enter the image name (note: the image has to exist in './images/news'): phpconfuk2024.png
```

次に、画像ファイルのタイトルの入力を求められます。

```
Image title: 
```

カンファレンスのタイトルを入力し、エンターを押下します。

```
Image title: PHP Conference Fukuoka 2024
```

次に、画像ファイルをクリックした際のリンク先の入力を求められます。

```
Link (when clicked on the image): 
```

カンファレンスのURLを入力し、エンターを押下します。

```
Link (when clicked on the image): https://phpcon.fukuoka.jp/2024/
```

最後にHTMLコンテンツの入力を求められます。

```
And at last; paste/write your news item here.
To end it, hit <enter>.<enter>
```

以下のようにカンファレンスの紹介記事のHTMLを入力します。

```
<p>
    We are delighted to announce the PHP Conference Fukuoka 2024.
</p>
<p>
    We want to boost the IT industry in the Kyushu region and provide a place where PHPers in Kyushu and PHPers from all over Japan can interact.<br/>
    This event has been held continuously since 2015 with this in mind.<br/>
    We hope that through this event, participants will inspire each other and create new ideas and connections. (This conference will be conducted in Japanese)
</p>
<strong>Basic facts</strong><br/>
<ul>
    <li>Date: June 22, 2024 (JST)</li>
    <li>Location: Fukuoka, Japan</li>
</ul>
<p>
    For more information, See the event page: <a href="https://phpcon.fukuoka.jp/2024/">PHP Conference Fukuoka 2024</a>.
</p>
<p>
    Follow us on <a href="https://twitter.com/phpcon_fukuoka">X(formerly Twitter)</a>.
</p>
```

上記のコンテンツを入力後、エンターを1回、「.」を1回、エンターを1回入力すると、「File saved.」と表示されます。

```
・
・
・
<p>
    Follow us on <a href="https://twitter.com/phpcon_fukuoka">X(formerly Twitter)</a>.
</p>
.
File saved.
Please git diff archive/archive.xml and sanity-check the changes before committing
NOTE: Remember to git add archive/entries/2024-01-07-1.xml !!
```

上記の手順により、以下のファイルが作成されます。

- archive/archive.xml
- archive/entries/2024-01-07-1.xml

上記の2ファイルと以下のロゴ画像と合わせて、 `git commit` して `git push` します。

- images/news/phpconfuk2024.png

これで準備が整ったので、[Pull Requestを作成](https://github.com/php/web-php/pull/914)してしばらく待つと、無事にマージされました。

![Screenshot from 2024-01-08 00-08-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/29f3eabf-b1f0-0716-22e8-7ffd4b04a4fe.png)

マージされると [php.net](https://www.php.net/) のwebページに反映されますのでトップページにアクセスしてみると、「Upcoming conferences」に「PHP Conference Fukuoka 2024」のリンクが追加されました。

![Screenshot from 2024-01-08 00-17-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/7e2f3573-e054-6fa2-512e-684ef41205ed.png)

「PHP Conference Fukuoka 2024」のリンクをクリックすると、このように先ほど入力したHTMLが表示されます。

![Screenshot from 2024-01-08 00-18-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23093/d5cac4c9-3e01-2400-7beb-03f3e9d0817f.png)

---

- 参考記事
    - [【PHP】PHPカンファレンスJapan 2023の開催を全世界に宣伝してきた](https://qiita.com/rana_kualu/items/a90b06b0a8dfe695cfec)