Slide 1

Slide 1 text

38歳、はじめてのPHP - 急がば回れ、PHPの道も1.0から - 2025年6月28日 PHP Conference 2025 株式会社コドモン 松浦康介

Slide 2

Slide 2 text

2 経歴 2025年1月にコドモンに入社しました。札幌在住です。 以前はSIerや事業会社に在籍していました。 自己紹介 松浦 康介 まつうら こうすけ 2025.01 コドモン入社 2025.06 羽根つき餃子発祥の地で餃子を食べる

Slide 3

Slide 3 text

3 経歴 2025年1月にコドモンに入社しました。札幌在住です。 以前はSIerや事業会社に在籍していました。 PHP 1年生です。 自己紹介 松浦 康介 まつうら こうすけ 2025.01 コドモン入社 2025.06 羽根つき餃子発祥の地で餃子を食べる 札幌から来ました PHP 1年生です

Slide 4

Slide 4 text

4 そんなことより

Slide 5

Slide 5 text

5 声ヤバいでしょ 暑さにやられてます

Slide 6

Slide 6 text

6 なのに早口

Slide 7

Slide 7 text

7 聞き取りにくかったら ごめんなさい

Slide 8

Slide 8 text

8 スポンサーブース がんばりすぎました🤭

Slide 9

Slide 9 text

9 のど飴、常時マルチコアで 回してます

Slide 10

Slide 10 text

10 あらためまして

Slide 11

Slide 11 text

11 先輩 PHPer のみなさん こんにちは パイセンペチパー

Slide 12

Slide 12 text

12 某社の 某1/7 の者です コドモン

Slide 13

Slide 13 text

13 会社の紹介は 後続の誰かがやってくれるはず ゴールドスポンサー

Slide 14

Slide 14 text

14 このトークは 非常にゆるいです

Slide 15

Slide 15 text

15 これは今年 30周年 を迎えた PHPが1.0だったころの話 アニバーサリー

Slide 16

Slide 16 text

16 つまり

Slide 17

Slide 17 text

17 Question 05: マッチするのはどれ?

Slide 18

Slide 18 text

18 ^PHP\d+(\.\d+)*$ の話ではなく 任意のバージョン

Slide 19

Slide 19 text

19 ^PHP1(\.\d+)*$ の話です 1系

Slide 20

Slide 20 text

20 古古古古古古古古古古古古古古古 古古古古古古古古古古古古古古 PHP とも言います

Slide 21

Slide 21 text

21 ゆるいですよね

Slide 22

Slide 22 text

22 😇 気楽に聞いてください 😇

Slide 23

Slide 23 text

23 ちなみに、スライドの文字サイズ 大丈夫そうですか?

Slide 24

Slide 24 text

24 視力検査 C ✅ Cの向き ✅ ルビ(ふりが な) みぎ 見えてますよね? Can you see the “C”?

Slide 25

Slide 25 text

25 ひと安心

Slide 26

Slide 26 text

26 (聴力検査の方がよかったかも🙏)

Slide 27

Slide 27 text

27 ここから本題

Slide 28

Slide 28 text

28 というか、問題

Slide 29

Slide 29 text

29 PHP 1.0で作ったWebサイト、わかるかな? サイト① サイト②

Slide 30

Slide 30 text

30 答え

Slide 31

Slide 31 text

31 どちらも

Slide 32

Slide 32 text

32 おわかりいただけただろうか? フッターに注目

Slide 33

Slide 33 text

33 おわかりいただけただろうか? これがPHP 1.0の証 フッターにアクセスカウンター的なものがついてくる💡

Slide 34

Slide 34 text

34 おわかり いただけただろうか?

Slide 35

Slide 35 text

35 おかわり🍚 いただけただろうか?

Slide 36

Slide 36 text

36 見覚えありませんか? 視力検査 C みぎ

Slide 37

Slide 37 text

37 見覚えありませんか? 視力検査 C みぎ

Slide 38

Slide 38 text

38 覚えてますか? このフッターです

Slide 39

Slide 39 text

39 覚えてますか? 🍚 実はこれもPHP 1.0で出来ていたんですよ 🍚

Slide 40

Slide 40 text

40 え、PHPじゃなくてC言語?

Slide 41

Slide 41 text

41 さっきのは 視力検査じゃなくて

Slide 42

Slide 42 text

42 C力検査 だったのです

Slide 43

Slide 43 text

43 PHP1.0 入門

Slide 44

Slide 44 text

44 PHP 1.0とは PHP1.0がやってくれる フレームワーク的な振る舞い 自分で作ったPHPファイル (Claudeを頼った) 「C言語で書かれた薄いWebフレームワーク」のようなもの 汎用プログラミング言語ではなく、テンプレートエンジンという感じ 指定された.phpファイルをHTMLに変換するのが主な役割

Slide 45

Slide 45 text

45 PHP1.0はここにある https://museum.php.net/php1/ ダウンロード可能なものは、実は1.0.8らしい

Slide 46

Slide 46 text

46 どんな感じ? tree . ├── common.c ├── common.h ├── config.h ├── error.c ├── html_common.h ├── License ├── Makefile ├── phpf.c ├── phpl.c ├── phplmon.c ├── phplview.c ├── post.c ├── post.h ├── README ├── subvar.c ├── version.h ├── wm.c └── wm.h ● だいたい .c とか .h ● 全部で15ファイルほど ● 平たいディレクトリ族 ふーん、たぶんコンパイルしたら 実行ファイルが出来て、それを動 かす感じかな?

Slide 47

Slide 47 text

47 ファイルのコメントとかを 見てみる

Slide 48

Slide 48 text

48 コメント /* * PHP Tools * * Personal Home Page Tools. * * Copyright (C) 1995, Rasmus Lerdorf * ... * If you do use this software, please let me know. I'd like to maintain * a list of URL's on my home page just to see what interesting things * people are doing with their home pages these days. */

Slide 49

Slide 49 text

49 PHPとは /* * PHP Tools * * Personal Home Page Tools. * * Copyright (C) 1995, Rasmus Lerdorf * ... * If you do use this software, please let me know. I'd like to maintain * a list of URL's on my home page just to see what interesting things * people are doing with their home pages these days. */ 作者ラスモスさんのコメントによると Personal Home Page Tools で PHPということらしい この時代は PHP: Hypertext Preprocessor ではない!

Slide 50

Slide 50 text

50 1995年は穏やかな世界だった /* * PHP Tools * * Personal Home Page Tools. * * Copyright (C) 1995, Rasmus Lerdorf * ... * If you do use this software, please let me know. I'd like to maintain * a list of URL's on my home page just to see what interesting things * people are doing with their home pages these days. */ もしこのソフトウェアを使ってもらえたら、ぜひ教えてくださいね! みんながホームページでどんな面白いことをやっているのか見てみた くて、 私のホームページにURLリストを作ってみたいんです。

Slide 51

Slide 51 text

51 穏やかな世界ですね とてもエモい

Slide 52

Slide 52 text

52 もう少し踏み込みます

Slide 53

Slide 53 text

53 PHPファイル ファイル入出力 PHP 1.0 src 実行可能ファイル phpl page-1.php stdout make カウンター ログ アクセス数カウンター アクセスログ出力 テンプレートエンジン page-2.php phpl.c phplview.c config.c この頃のPHPの仕組み etc HTML出力 C言語で書かれた軽量 Webフレームワーク みたいな感じ 自分で用意する

Slide 54

Slide 54 text

54 この頃のPHPの仕組み $ phpl.cgi page-1.php

Page-1.php

実行イメージ

Slide 55

Slide 55 text

55 PHPファイル ファイル入出力 実行可能ファイル phpl page-1.php カウンター ログ アクセス数カウンター アクセスログ出力 テンプレートエンジン page-2.php CLIではなくHTTPで Apache HTTP Server CGI実行 GET /page-1.php

Slide 56

Slide 56 text

56 PHPファイル ファイル入出力 実行可能ファイル phpl page-1.php カウンター ログ アクセス数カウンター アクセスログ出力 テンプレートエンジン page-2.php (私のApache力が低く、動かなかったのでGoで代替した) Go HTTP Server CGI実行 GET /page-1.php

Slide 57

Slide 57 text

57 あっさり動いた

Slide 58

Slide 58 text

58 カスタマイズ: 共通フッターを変更する 変更するのはPHPではなく、C言語の方。変更したらmakeする。 HTMLの文字列を 結合する感じ

Slide 59

Slide 59 text

59 .phpファイルで埋め込み可能なもの HTMLのコメント形式で変数埋め込み

Jun 26, 2025

今日の日付が表示される

Slide 60

Slide 60 text

60 基本統計情報 $total 総アクセス数 $today 今日のアクセス数 $lasttime 最終アクセス時刻 $lastuser 最終アクセスユーザー $modtime ファイルの最終更新時刻 システム情報 $version PHP Toolsのバージョン $filename 現在のファイル名 .phpファイルで埋め込み可能なもの ユーザー・ブラウザ情報 $email - ユーザーのメールアドレス $plusemail - 先頭に+ありのメールアドレス $browser - ユーザーエージェント $short_browser - 短縮版ユーザーエージェント $http_referer - リファラー(参照元URL) POST データ変数 $username: "username" という名前での値 $comment"comment" という名前の値 システムコマンド実行 !command - システムコマンドの実行

Slide 61

Slide 61 text

61 C言語とHTMLの知識があれば、 なんでもできる(はず)

Slide 62

Slide 62 text

62 動くようになるまで結構ハマったけど 根気とgdbがあれば動かせる

Slide 63

Slide 63 text

63 30年経っても動くってすごいね コンパイルできる

Slide 64

Slide 64 text

64 PHPを学ぶはずだったのに C言語をやっていたのはなぜ?

Slide 65

Slide 65 text

65 最後に 別れの時

Slide 66

Slide 66 text

66 PHPカンファレンス なのに PHPのおまつり

Slide 67

Slide 67 text

67 ルビ多めでごめんなさい Ruby

Slide 68

Slide 68 text

ありがとうございました! 最高の懇親会にしましょう ✋ ハバ ナイスデー ✋