10年前から来たphp.py

公開日:

東京都江東区TOC有明コンベンションホールで開催された『PyCon JP 2022』で懇親会の辻LT(5分)として発表しました。

東京都港区docomo R&D OPEN LAB ODAIBAで開催された『第157回 PHP勉強会@東京』でライトニングトーク(5分)として発表しました。

Download PDF

スライドテキスト

Page 1

10年前から来たphp.py

"php.py" came from the 2010's

pixiv Inc.
USAMI Kenta

2022-10-15

Page 2

お前誰よ

  • うさみけんた (@tadsan) / Zonu.EXE / にゃんだーすわん
  • ピクシブ株式会社 pixiv事業本部 エンジニア
    • 最近はピクシブ百科事典(dic.pixiv.net)を開発しています
    • 会社ではPython使われてますが私は触ってません!!!!
  • Emacs Lisper, PHPer
    • Emacs PHP Modeを開発しています (2017年-)

Page 3

3週間前はPHP
カンファレンスでした (両方に携っているスタッフ
おつかれさまです)

Page 4

Emacs-PHP

Page 5

PHPの静的解析とか 言語仕様の紹介をして
暮らしています

Page 6

普段はEmacsの
php-mode開発したり

Page 7

WEB+DB PRESS総集編

Page 8

Software Design 11月号

Page 9

Emacsで動的言語を リアルタイム静的解析 しながら快適に開発で きるようにしています

Page 10

Pythonは1行くらい 書いたことあります

Page 11

nishioさんに影響されて…

Page 12

PythonでRubyを 書けるようにしたり

Page 13

RubyをPythonっぽく置き換える

Page 14

冗談は置いておいて

Page 15

2011年くらいに
Pythonやってました

Page 16

Pythonを学んだ本

Page 17

札幌で読書会をやっていた

Page 18

最初はRuby
並行してPython
就職してPHP

Page 19

いわゆるLL言語を 浅く広く触っている

Page 20

RubyとPHPの処理系
実装のことは
ちょっとだけわかる

Page 21

PyConは初参加!

Page 22

隣の芝は青い

Page 23

専門分野じゃない カンファレンスに 飛び込むのは良い

Page 24

というわけでPython ニワカなりに10年前の
ことを知ってます

Page 25

Emacsで.py書くとき
どっちのpython-mode
使ってるんです?

Page 26

PyCon楽しい!!

Page 27

とはいえ
Pythonコミュニティに
影響を受けてきた

Page 28

魂に刻まれた
Pythonのヤバい機能

Page 29

codec

Page 30

文字コード変換する
やつでしょ?

Page 31

昔はスクリプトが
UTF-8以外で 書かれていた

Page 32

Pythonは3で
文字列=Unicodeに
全振りした
ちなみにPHP6もやろうとしたけど失敗した

Page 33

Pythonは任意のエン コーディングで書かれ たコードを実行できる
仕組みがある

Page 34

LL Tiger (2010年)

http://blog.shibu.jp/article/39920783.html より引用

Page 35

殺伐Python

http://blog.shibu.jp/article/39920783.html より引用

Page 36

殺伐Python

http://blog.shibu.jp/article/39920783.html より引用

Page 37

殺伐Python

http://blog.shibu.jp/article/39920783.html より引用

Page 38

codecは追加できる

Page 39

なんとcodecはプリプロセッサだったのだ

Shibu's Diary: LL TigerのLTでRuby on Python(仮)の発表してきました。
http://blog.shibu.jp/article/39920783.html より引用

Page 40

!?

Page 41

バイトコンパイル前に
介入できれば
事実上何でもできる

Page 42

殺伐Python

http://blog.shibu.jp/article/39920783.html より引用

Page 43

渋川さんはガチなので
Rubyのコードを
Pythonに翻訳します

Page 44

殺伐Python

http://blog.shibu.jp/article/39920783.html より引用

Page 45

殺伐Python

http://blog.shibu.jp/article/39920783.html より引用

Page 46

いま読み直しても
やばい

Page 47

じゃあPHPでも 動かすか(安直)

Page 48

私はガチではないので お手軽実装で済ませる

Page 49

というわけで
Pythonを書きました

Page 50

1行くらい…

Page 51

読みにくい…

Page 52

phpcodec.py

Page 53

(ファイルに書かれた
コードをPHPプロセス
に流すだけの雑実装)

Page 54

みなさまおなじみのPHP

Page 55

改行したfizzbuzz.py

Page 56

実行

Page 57

codecを現在動かすにあたって

  • 公開されていた渋川さんのコードが読めない (!!?)
    • BitBucketはMercurialサポート終了 https://bitbucket.org/shibu
    • 10年前はGitHub普及前でMercurialとBitBucket使われてましたね…
  • 渋川さんのコードを再利用したと思しき記事を断片的に参考に
    • https://doloopwhile.hatenablog.com/entry/20100801/1280688409

Page 58

codecを現在動かすにあたって

  • 元コードではStreamReaderでコードを書き換えていたが動かなかった
    • Pythonの処理系実装を軽く読んでみたけど理由わからず、教えてください
  • sitecustomizeとかusercustomizeで暗黙的にコーデック追加して
    #coding: php なファイルをダイレクトに起動できるようにしたい…
    • 仕方ないので現在は -m phpcodec で実行したらダイナミックインポート
    • もっといい感じにしたいね!

Page 59

おまけ

Page 60

エンコーディング指定

テキストエディタのエンコーディング指定に由来
(Rubyもだいたい同じ仕様)

Page 61

エンコーディング指定

Emacs記法

これなに

Page 62

PEP 263

Vim記法

それっぽい指定をいい感
じに読み込んでくれる