1. ツナギメエフエム
  2. Ep.17 にゃんだーすわん( @tad..

・今回のゲスト

 ・にゃんだーすわん ( @tadsan )さん

ピクシブ株式会社

 ・興味のあることを追い続け、みんなで高めあえる会社。

・エンジニアになったきっかけ

・大学時代のアルバイトについて

 ・TDDBC札幌

  ・TDD Boot Camp 札幌を開催しました

  ・TDD Boot Camp 札幌に登壇させていただきました

  ・TDD BootCamp 札幌2.0に参加してきました。

  ・TDD Boot Camp 札幌 2.0

 ・Linuxが触れる学生

 ・インフラエンジニアっぽいこと

 ・JavaScript

 ・Python

  ・Plone

  ・Zope

 ・WordPress

 ・SSL証明書を取り扱っている会社

・ピクシブへの入社

 ・YAPC::Asia

 ・入社時の雰囲気、社員数

 ・福岡オフィスの開所について

  ・ピクシブはなぜ、福岡に拠点を作ったのか?

  ・福岡でエンジニア向けイベントを開催!!福岡のエンジニアのみなさん、遊びに来て下さい!

  ・ピクシブ福岡オフィス ・オープン記念LT祭

 ・ピクシブのサービス群

  ・今はどのサービスに携わっているのか

 ・一番得意なプログラミング言語は?

・カンファレンスなどの登壇のきっかけ

・PHP本の解説について

・ピクシブにおけるPHPを利用した開発の話

・開発で使っているエディタの話

 ・Emacs

  ・Emacsテクニックバイブル

 ・秀丸

 ・MKEditor

 ・Vim

  ・The Silver Searcher

 ・PhpStorm

・PHPカンファレンス2022

 ・さっぱりPHP 〜 標準関数と文法を極める

 ・登壇スライドの進捗は?

 ・コードゴルフ

 ・ドメインのバリデーション

 ・メールアドレスのバリデーション

 ・メール送信時のMXレコードの存在確認によるトラブル

・OSSの継続性

 ・Emacs PHP Mode

 ・PHPStan ・PHP Static Analysis Tool

 ・Psalm

 ・PHP Foundation

--- Send in a voice message: https://podcasters.spotify.com/pod/show/tsunagimefm/message
00:05
始まりました、つなぎめFMの第17回です。
つなぎめFMは、IT勉強会コミュニティ繋がりの方々をゲストに迎えて雑談するポッドキャストです。
まずはツイッターのハッシュタグについてお知らせです。
ハッシュタグはカタカナでつなぎめFMです。ツイートお待ちしています。
今回で第17回目です。
今日のゲストはTadさんです。
それではまず自己紹介をお願いします。
こんにちは、うさみと言います。
インターネットではTadさんとかTadさんとか名乗っていたりします。
今はPixivという会社でPHPとかPHPとかPHPなどを書いています。
本日はよろしくお願いします。
はい、よろしくお願いします。
嬉しいですね、Tadさんに聞いてもらって。
Pixivさんということでですね。
会社の社員紹介みたいなところにですね、Tadさんの記事があってですね。
これを一通り読ませてもらったんですけど、すごい面白い内容でですね。
今日はこの記事をベースにいろいろと話を伺えたらなぁと思ってます。
というところで早速始めていきたいんですけど。
あの記事をですね、読んでいくとTadさんの歴史がわかるというか。
そんな感じになってるんですけど。
まずあのエンジニアになったきっかけですよね。
そのあたりから最初に聞けたらなぁと思うんですけど。
難しいですね。
学生時代に本当に就職どうやって成長させていいのかわからず、
大体プログラムしか書けないなと思って。
大学に入る頃にはもうプログラム書けてたんですか?
書けてたか書けなかったかで言うと書けたんですけれども。
きちんとしたプログラムを作れたかというと作れませんでしたぐらいの。
じゃあそのプログラムを最初にやり始めたきっかけみたいなのもあるんですか?
きっかけは中学生ぐらいの時にゲームを作りたくて。
なるほど。
ツールで簡単なものを作れるぐらいになったんですが、
そこから具体的にどう面白いゲームを作ればいいのかとか、
きちんとしたプログラム作る技術みたいなのはまだ全然できなくてという感じですね。
情報系の大学に行ってその辺りになれるかなと思ったんですけど、
大学4年間では残念なことに僕は4年間でそういう技術とかは身につかなくて、
就活しないまま大学を出て行ったみたいな感じでしたね。
カリキュラムとしてはあるんですかね?
そうですね。練習としてはあったんですけれども。
そもそも学部選択の段階で間違えてる感じがあるんですが、
情報・通信系の大学に行ってしまったんですね。
コンピューターのことをやるんですけれども、
03:01
ネットワークとか電気みたいなことが基準としては大きかったので、
なるほど。
理科がとても苦手なんですね。
なのに電気とかメインでバリバリやるような学科に行ってしまったので、
単位はほとんどとれず辛うじてという感じでしたね。
克服しようみたいな感じではなく、結構苦しかったんですか?
大変苦しかったですね。
なるほど。
なので、情報通信系のコンピューターの練習とかはそこそこできはしたんですけれども、
それでも自信を持ってプログラマーって名乗れるほどにはなれなかった感じでしたね。
カリキュラム的にもプログラムがあったとして、
その頃にアルバイトをやってるんですよね?
そうですね。
プログラミングよりも。
そこが面白いなと思ったんで。
これはTwitterで、その当時札幌に住んでたんですけれども、
若干交流のあった人と会って、
その当時2012年の春かな、TDDブートキャンプというイベントが、
日本中でやってるんだけど札幌でも開催されて、その時に初めて会った人にちょっと誘われて、
その人が勤めてる会社にアルバイトとして入社したって感じでしたね。
なるほどですね。
そこで結構プログラム買い入ってるんですよね?
そうですね。それもまた難しいところで、
その時採用されたのは、Linuxが触れる学生みたいな感じで、
当時2011年に地震があって、
その時の会社の社長が、日本国内でサーバー置いてるのリスクだからって言って、
日本国外に置きたいって言って、
その時にその社長が白羽の家を建てたのが、
AWSのシンガポールリージョンだったんですね。
なのでそこの、今まではレンタルサーバー借りていたものを一つ一つ、
シンガポールリージョンにEC2のインスタンスを立ててそこに移していくってことをやってたりしました。
そこでインフラエンジニアっぽいことを実はやっていたんですけれども、
なるほど、なるほど。
逆に、
アルバイトで結構いいですね。いい経験ですね。
2012年でAWSは割と早い段階で触れたのは良かったなと思うんですけど、
なかなかそんな経験できないんじゃないですか。
何ですか、きちんとした仕事ができたかっていうと、できなかったっていうと、
自分がインフラエンジニアとして向いてるかというと、そんなに向いてなかったんですよね。
ちょい思ってサーバー作るとか、オペレーションみたいなのはだいぶ向いてませんでしたね。
なるほど、そこはそんなにハマらなかったですね。
知識としてはだいぶ…
一応一通りはやったけどっていう感じですね。
なるほどね。
06:02
コードを書いてたんですか?
コードを書いてたのはその後ですね。
サーバーエンジニアとしてあんまり使えなさそうだということで、
次はその会社でちょっと営業っぽいことをやっていたので、
それに使うツールみたいなのをJavaScriptで書いていたり、
ということで、その時はJavaScriptを若干、フロントエンドエンジニアではないですけど書いたりしていました。
サーバーサイドではなくて、
フロントエンドのJavaScriptを書いたんですね。
あとなんかちらっと書いてあったのは、PythonとWordPressのサイト構築みたいなのが書いてあったんですけど、
もう一通りって感じですね。
フロントとバックエンドとCMS構築みたいなのをやると。
その後にはその会社は結構Python使ってる会社で、
僕は誘ってくれた人もPythonが好きっていう人だったので、
その会社のものは結構Pythonだったんですけれども、
会社のウェブサイトを、当時プローンかな、Pythonで構築されたCMSがあって、
そこからメンテナンスできないっていうので、
WordPressを再構築してみたいなことをやったりしていました。
プローン、久々に聞きました。
ZOOPですね、オブジェクトデータベースといいますか。
はいはいはい、ZOOP。
私、国産のCMS開発の会社に2社ぐらい渡り歩いてたんで、
やっぱりいろんな海外のやつとかも国内のやつとかも、
いろんなCMSの製品の名前とか調べたりしてたんで、
すごい久々に聞いたなと思って、プローンとZOOPとか。
だいぶ懐かしいですね。
その辺りもやってたんですね。
面白いなって、もう一つ思ったのが、
SSL証明書を扱ってる会社だったんですか?
会社としてはあるんですよ。
その辺も勉強してたんですか?
勉強は、自分でやってた業務としては、証明書の認証業務とかではないんですが、
その会社の本棚にやったので、昼休みに読んだりしていたぐらいですね。
これが面白いなと思ったのが、
後で現職の仕事で役に立ったみたいなことが書いてあって、
もう素晴らしいなと。
現職ではどういった対応の時に役に立った感じは?
そうですね。
数年前も5年以上前か、
世の中的にもウェブページ完全にHTTPSにしていこうっていう流れがあったんで、
その時にPIXIVもHTTPS化していった感じですね。
なのでその時に知識としていろいろ役に立ったりしましたね。
それは面白いというか、良かったというか。
09:03
自分は一応アプリケーションエンジニアで、
サーバー構築的には全く関わってないんですが、
あくまでアプリケーションエンジニアとして役に立ったというぐらいではあるんですけれども。
このアルバイトの期間っていうのは長かったんですか?
期間でいうと10ヶ月ぐらい、違うな、1年ちょっとかですね。
その後にしばらくフリーランスの期間が?
フリーランスというのが適切かわからないですが、プラプラしていました。
なるほど。
じゃあその後はすぐPIXIVさん?
期間でいうと半年、半年しかないな。
間に何かがあったのか。
じゃあもうその後はずっとPIXIV?
そうですね。
そんな流れだったんですね。
じゃあPIXIVさんに入るきっかけみたいなのは?
きっかけはですね、直接的にはYAPC Asiaというパールのカンファレンスがあって、
そこで今もPIXIVにいる人と会って、話して遊びに来ないかということで、
誘われて、選考を受けて入社したみたいな感じですね。
いきなり正社員?
それはですね、ちゃんとした職位じゃなかったので、
とりあえずバイトでまずやってみないかということで入って。
なるほど、そうなんですね。
最初はアルバイトだったんですね。
3ヶ月ぐらいやって正社員として入社っていう流れでした。
でもアルバイトで3ヶ月?
あっという間じゃないですか。
すごいな。
それは何なんだろう、オーラかというか。
そういう感じだったんですね、当時は。
入った頃と、もちろん今と全然状況変わってると思うんですけど、会社の状況って。
入った時ってどんな雰囲気というか、どんな会社というか、印象覚えてます?
今もそんなに大きくは変わってないんですけれども、会社にゲーム機があってみんなで遊んでたりとか、そういう雰囲気でした。
文化的にはそんな感じなんですね。
その雰囲気は今も変わってないというか。
ただこのすぐにオフィスに集まってワイワイするっていうのができなくなっちゃっていたりはしましたけど。
それを除けば今も残っているもの、その当時はすでにあった感じですね。
規模感的にはどうでしょう?会社。
規模感的には。
人数というか。
30人いたかいなかったかくらいですかね。
それくらいなんですね。
今はめっちゃいるんですかね。
今はバイトとか興味高い人も入れて300人超えたくらいですかね。
すごい。やっぱ大きいですね。
12:02
なるほど。300か。結構大きくなってるな。
福岡ってあれ何年前でしたっけ?
福岡はいつだったかな。もう5年ぐらい経ちますかね。
僕実はちょっと縁があってですね。
福岡オフィス解消されるときに、当時CCOとして在籍されてた河田さん?
のしきさんですね。
から連絡があってですね。
解消イベント来ませんか?って言われて。
LPしてくださいみたいな。
お願いをされてLPをしてもらった記憶があって。
同じくできた当時にやったインターンシップがあって。
これが2017年なのでやっぱり5年ぐらいですね。
そうですね。2017ですね。
7かな。それぐらいですね。
5年ぐらい経ったんですね。
今ちょっと場所変わってますかね。
変わったはずです。まだ行けてないんですけども。
最初にあったコワキングスペース。
そこすごいいい感じのコワキングスペースのところでイベントをされて。
そこにお呼ばれした記憶がありますね。
っていう縁があってですね。
それはなんとなく覚えてます。
当時と比べて今とはそんな変わってない感じなんですかね。
文化というか。人数が増えたというところもあるんでしょうけど。
DADさんはTwitterとか見てるとクリエイターのこととかすごく好きなんだろうなっていうのが感じ取れるんですけど。
めちゃめちゃ転職じゃないんですか。
そうですね。
相当かなり好きでやってる。孔子近藤というとあれですけれども。
それはでもいいなと思って見てるんですけど。
偶然PIXIVさんだったんですか。
そうですね。当時PIXIVアカウントは持ってたんですけども、ヘビーに使ってはいなかった感じですね。
そうなんですね。
なんかすごいハマってるなって思ってて。
いいよなって思いながら。
入社前は結構ウェブ小説読んでたりとかそっち方面だったらイラストはそんなにでもなかったんですね。
そうなんですね。
今話に出たイラストとか小説みたいなサービスもされてますけど。
もう全容わかってなくてですね。いろいろサービスがあると思うんですけど。
どれぐらいでもあるんですかね。サービス的には。
サービス的にはいくつかな。
15:00
代表的なPIXIV。
増えてるんですよね。
今やってるのはPIXIV百貨辞典っていう行きのサイトですね。
あとブース、ECサイトですね。
販売するやつですよね。
あとPIXIVファクトリーってイラスト使ってアイテムを生産できるようなサイトですとか。
あと変わってるのは社内で広告の運用とかもやってますね。
サービスっていうのとはちょっと違うんですけど。
なるほど、そんなのもあるんですね。
今ってどのサービスに関わってるとか話せますかね。
全然話せますよ。
大丈夫ですかね。
今PIXIV本体って言われてるイラストとか小説を投稿できるサービスと、あとPIXIV百貨辞典ですね。
その開発をメインでやってます。
それはバックエンドですね。
バックエンドっていうとメインはPHPを使ってるんですね。
フロントは違うんですかね。
フロントはPIXIVの中でいくつかの世代というか、開発された時期とか使えてる場所によって混在してる感じで。
Vue.jsとかReact使ってる部分もありますし、最近使えてるのはNext.jsだったりします。
Reactの時にiPhone触ってた、JS触ってたみたいなのを使われて、今はメインでPHPを触られてると思うんですけど、
イメージ的にRubyも触ってたイメージがあるんですよね。
いろいろ言語を触ってるイメージなんですけど、一番得意なのって何なんですか。
得意って意味では、仕事として製品が書けるって意味ではPHPになりますね。
好きな言語とかだとRubyとかになるんですが、Rubyも好きな言語であります。
Rubyは仕事で使ってたんですか。
入社直後、先ほどアルバイトで入った時期はRailsで。
Railsだったんですね。
パールのコミュニティにも行ってたんですか。
そうですね。その当時はパールというか、結構オールジャンル的な要素があって、
パールだけじゃなくて、その他の人もワイワイ集まってくるみたいな文化で。
近年はもうちょっとパール寄りになっているんですけど、その当時はいろんな文化が混在するコミュニティでしたね。
割とLL全国の差は大きいですね。
それはでもすごいな。
というのは結構学生時代にも関わってくるんですけど、結構モノにならずにいろんなところに手をつけまくったみたいな時期があって、
逆にそれが生きてきた感じがありますね。
PHPはもうずいぶん長いことやってる感じですかね。
18:07
その入社前のバイトの時にも一応ワードプレーサー触っていたんですけど、真面目にPHP取り組んだら入社してから2012年、2013年以降とかですね。
それでも9,10年とかそんな感じですね。
なるほど。そこからはずっとPHPなんですね。
だどさん、PHPずっと触られてて、やっぱり登壇とかのイメージがあるんですけど、
イベントの登壇とかってやってみようとか思ったきっかけとかあるんですか。
きっかけは、PHP方面に来る前にRubyのコミュニティにいて、
札幌のRubyコミュニティですとか、Ruby会議とか参加していたので、
気軽に前に出て話したりするみたいな文化があったので、そっちに影響されたのが大きいですね。
そこから登壇人生が長いんですか。
基本的に応募はされてますよね。
そうですね。
常にというか。
多分2016年以降とかですね。
スタッフをやっていようが何しようが。そこがすごいなと思って。
この2、3年は体力というか体調が悪かったりするので、スタッフの方は参加したりしなかったりなんですけれども、できるだけやろうとしてますね。
登壇欠かさずちゃんと応募してるからすごいなと思って。
やっぱりアウトプットし続けるってすごいですよ。
関心でしかないですよ。
ありがとうございます。
それだけネタを持ってるのはすごいですけどね。アウトプットするネタを。
登壇、あれですか。基本的に業務データ知識ですか。それとも業務とは関係ないんですか。
いろいろですね。単純に個人的に興味を持っているのですとか、業務であってあまり知られていないことですとかですね。
初めてカンファレンスで話したのはファンという性的解析ツールの話だったりするんですけれども、それは会社でファンというツール側にちょっと検証してくれないかと言われて調べ始めたのがファンでしたね。
それが2016年で。
そういう内容もあったんですね。本当登壇のイメージすごいあるんで、すげえなと思いながらいつも関心して見てます。
逆に結構自分が知ってるなら教えてくれよって思うような立場で、知ってることは洗いざらい話したいような結構モチベーションがありますね。
なるほど。
あまり出し惜しみしたくないというか。
いやでもね、たのさん詳しいですよ。いろいろ。引き出しが、会話するとはわかるけど、めちゃくちゃ引き出しあるなと思って。
21:09
本当何でも仕立てるなっていうイメージですけどね。
なんかちょっと気になったらギブったりするので、そんな感じの積み重ねですね。
積み重ねがすごいんだろうなと思って会話してると思います。
逆にアウトプットしないとどんどん脳から揮発していくので、カンファレンスなりブログラインに書かないとずっと忘れ去られていくばっかりなので、それはもう出さないといけないと思ってますね。
残しておきたいみたいな、そんな感情ですよね。
ブログにもじゃあ結構書いたりしてるんですか?
ブログは最近はそこまででもないですね。数年前結構キータに投稿したりしてましたけれども。
ここでちょっと小ネタを書いてるくらいで。
発表が多いイメージですもんね。
結構トントントンしたな。
そうですね。
じゃあPHPの話で。
PHPのですね、書籍についてなんですけど。
なんか一時期、初心者向けのPHPの本とかが出たら、それを解説じゃないけど、ここはこう思うとか。
ツイッターに書いてたのかな?それを見るのが楽しくてですね。
この本はそういうものなのかみたいな。
あれなんでやってたんですかね?
あれはいくつかモチベーションがあったんですけど。
さらにPHPを書いてもらうに、いいPHP本があったらそれを一冊読んでもらって、見つけてもらいたいなと思って探してたんですけれども。
結局良い本はほとんど見つからずに。
とりあえずこれは良くないから、良くないってことをちゃんと書いておくかってことでツイッターに立て流したりしてましたね。
良くないところを確認して、公開してたんですね。
今のところ良い本にはたどり着いてないんですか?
何冊かあります。
何冊かあるんですね。それはあれですね。ぜひ紹介してほしいですね。
極瀬記今後と言いますか。
一体この人は何年前のPHP間でこれを書いてるんだっていうのが、2年前とかに出た本でもあるので。
ものすごい分厚くて情報量がありそうなのに10年前のPHPみたいなことを書いていたり。
まだにコンポーザーが何なのかちゃんと書いてる本の方が少数派ぐらいの感じですからね。
今開発を始めるんだったらコンポーザー絶対使うでしょうしね。
24:03
ララベル使うにしても絶対入ってるだろう。入ってるというか利用するだろうし。
逆にあれですよね。ララベルとかフレームワークは業務ではそんな使ってないですかね。
生のPHPですね。
PIXIVの方は僕が入社したときはドキュメントルート。
アパッチのディレクトリになんかか.phpっていうファイルがずらーっと並んでる世界観。
昔ながらのCGIみたいなやつですね。
フレームワークもクソもなかったんですけれども、そこからいろいろ改善したいっていうことで
一個のルータースクリプトに置き換えて、コントローラーを起動するようなスタイルに書き換えてっていうことをして。
それを独自に作ってるんですね。
そうです。
大変ですよね。そういうの。
私がCMS開発に携わってた時もそんな感じで、そのCMSがフレームワークみたいな感じになってたんですよ。
どこにもGoogleってノウハウがあるわけじゃなくて、その製品がノウハウなので、それを理解するっていうところからスタートする。
コードが主要だっていう感じでしたね。
フロントの入り口のPHPが一個あって、そこからルーティングがあってみたいな。
完全にそういう世界観です。
そうですね。大変だ。
ドキュメントルによってはスクリプトから一括でコントローラーっていう名前のクラスに置き換えした感じなので、
コントローラーの層はまだユニットテストとかってのは全然現実的にできないぐらいの流動になってますね。
テスト整備するのめちゃくちゃ大変ですよね、そういうのは。
そうですね。もう一個携わっているPixiv 100化時点の方は、これはそのPHPというよりは、
この普通にカンファレンスとかでも話しているPSR7とPSR15ですね。
HTTPのハンブラーとミドルウェアの仕様なんですけど、それを使っても用アプリケーションということで作ってやっています。
こっちの方は、これも元々はそもそもKPHPっぽい感じの独自フレームワークっぽいものだったんですけれども、
KPHP生で使った方が良かったのか良くなかったのか微妙なぐらいのあれだったんですけれども、
フレームワークとしては依存していなくて、それっぽい独自のフレームワークみたいになっていて、
KPHPみたいなフレームワークの特徴なんですけど、ルーティングとコントローラーみたいなのが一対一に対応していて、
27:06
このURLにアクセスしたらこのコントローラーが呼ばれるっていうことですね。
なおかつ、さらにその中でこのメソッドが呼ばれるっていうのがもう一括で決まっていて、
このページを開いたらこのテンプレート、Smartyとかのテンプレートが自動で読み込まれて、
何も設定しなくてもデフォルトのページがレンダリングされるっていう構造になっていて、まさにそういう作りになっていたんですけど、
今のLarabelみたいに引数を受け取って返り値を返すっていう構造じゃないので、ユニットとしてがとても書きにくかったんですね。
なのでユニットテストをそういうところに頑張って構築していくこともできはしたんですけども諦めて、
そっちのほうはとりあえずテストを書かないでその内側の部分だけ書いて、なんとかカブレッジを開けていこうということをやったりしていました。
それでも限界なので、新しく書くコントローラーに相当する層は元のKPHPっぽいものではなくて、
Larabelでいうシングルアクションコントローラーみたいな感じにして、
1個のエンドポイント、ルーティングごとに1個のクラスが読み込まれるみたいな構造にして、
それぞれで入出力になっているのでユニットテストを書くような構成になっています。
今既存のサービスの話もされていますけど、新規でサービスが立ち上がるとか、
例えばMVPみたいに小さいアプリケーションを作ってテストを始めるみたいな時って、
そういう場合もLarabelみたいなフレームワークを使わずに独自のフレームワークというか、
素のPHPから作る感じなんですかね。
そうですね。場合によるかなとは思うんですけれども、Pixivのプロジェクトって今、
モノレポの構成になっていて、1個のリポジトリの中にデータベースを共有するようなサービスがいくつもあったり、
そういう感じになっていて、モノレポのリポジトリで例えばコンポーザーのパッケージとか、
どう管理するのかっていろいろ考え方あると思うんですけど、
今のところ1個のコンポーザーJSONで1個のパッケージとして依存関係を入れてデプロイするって構成を取ってるんで、
そこにLarabelは今のところ入れにくいかなという状態になってますね。
なのでPixivと密結合したようなサービスを新しく1個作るならば、
フレームワークとか使わずにちっちゃく始めるみたいなことになりますね。
実際にPixivの中で例えばちっちゃいAPIみたいなウェブアプリケーションとかは年に数個立ち上がったりするんですけど、
30:02
それもすごいたくさんエンドポイントがあるわけでもなくて、
あと可変なルーティングするわけでもないので、ハイレスが使ったすごいシンプルなルーティングで始めてますね。
エラーハンドリングの処理とかはすでにPixivの中に独自フレームワークみたいな形があるので、
ほぼそれをコピーすればフレームワークみたいなことは最初から立ち上げられるような状態になっているので、そういう構成が多いです。
やっぱり長い期間育ってきてるサービスって大変ですね。
苦労が垣間見える会話でしたね。
大変なんだろうなと思って。
でもそれがビジネスとして成り立っているのは良いものですからね。
意外とパパッと来ちゃいましたね。
聞こうと思ってた内容を意外と全部言っちゃったの。
もうちょっとゆっくりいろいろ膨らませてから返せばよかったな。
さて何の話をしようかな。
エディターの話をしましょうか。
エディターってなぜEmacsに興味が出たんですか。
メインでEmacsがあるんですよね。
でも最近はPHPストモの話題とかもたまについて書かれたりするので。
まずエディターなんですが、一番使っているのがEmacsで。
Emacsも2011年から12年くらいからなので、大体10年くらい使っています。
その前はもっとシンプルなWindowsのエディター。
具体的に言うと、ひだ丸とか使っていた時期もありますし。
その前にMKエディターっていうフリーウェアがあって、そういうエディターをずっと使っていた時代もあったりして。
初めてフリーソフトを作ったみたいなのは、MKエディターの環境定義っていうかテーマですね。
カラースキマみたいなのを作って公開していったのが最初だったり。
エディターとかは割といろいろ使っていたんですけど、2011年くらいに。
そういうのじゃなくて、もうちょっと高機能なエディターを使いたいなと思って、Vimを使っていて。
Vimもそこそこ使えるようになったところで、先ほどの会社にアルバイトで入社して。
その時の上司と言いますか、誘ってくれた人がEmacsを使っていた人なので、Emacsっていろいろしてすごいなと思って。
その会社の本棚にEmacsテクニックバイブルかな、本があったので、それを使って自分の環境を作ってみたいなところが始まりでした。
Vimにははまらなかったんですか?
33:01
はまって、最大限使うことはできるんですけれども、ものすごいのめり込んだりはその当時はしませんでしたね。
なるほど。Emacsの方が手に馴染んだ。
いろいろカスタマイズできるというところと、Emacsテキストエディターとしては未完成品だと自分では思っていて、
自分で設定ファイルを書くことで完成品のテキストエディターとして組み立てるみたいなプラモデルみたいな感覚ですね。
面白い。
そこを自分の使いやすいように手を入れていくことで、使えるエディターになるかなというところで、
そういうところをEmacsがカスタマイズしたり、拡張とかインストールしていろいろ使えそうにできたということで、
PHPとか書くのにもEmacsを使うようになってきました。
Emacsってインストール時点ではPHPに対応していないので、
サードパーティーで開発されていたモードっていう、編集用の拡張を入れる必要があるんですけども、
そっちの方が使っていた機能とかが足りなかったりしていたところがあったので、
GitHubでプールリクエストをバンバン送りつけ始めて、メンテナーになってみたいなのがこの数年の経験ですね。
そうですね。今はメンテナーなんですよね。
いつぐらいかな。2010年前ぐらいかな。
10年前ぐらいって私Windowsで開発をしていて、その会社がエンジニアに配っているPCは全部Windowsだったので、
Windowsをやってたんですけど、その頃にビームにハマってですね。
Windowsでビームを使って、みんなは何を使ってたかな。
それこそ秀丸とかそういうシンプルなエディターを使ってたと思うんですけど、
僕はビームにハマり始めてて、何でもビームでやりたがってて。
アイデイ化するのが、いろいろ記事があっててですね。それを真似していろいろやってました。
それを思い出しました。
そうですね。10年前、ビームをリマックスもオートコンプリッションとか、自動入力保管ですね。
入れるような拡張とか入っていたり。
そういうのが見えてましたね。
画面を分割して、ディレクトリのツリーを出しつつ、コードを見つつ、
関数の一覧が表示されていて、完全にアイデイみたいな表示をビーム上に作り出すっていうのをやってましたね。
懐かしいですね。
Windowsだと微妙にうまく動かないところがあって、難しいなって思いながら。
でもその頃にですね、ちょっと後かな、何年かとかに、なんていう名前だったかな。
36:03
シルバーサーチャーっていう検索の、なんて言えばいいんですかね。
プレップの代わりみたいなもっと早いやつです。
そうです。
シルバーサーチャーっていうのを見つけて、それをビームに組み込むとめちゃくちゃ検索が早くできるっていうのを知ってですね。
ビームなんてかっこいいんだ、みたいなことを思いながら。
あれは革命でしたね。僕も結構使ってました。
あれ使ってましたね。Windowsだと動くじゃんって思って。
じゃあビームとEmacsと、さっき言ったPHP Stormは使ってないんですか?
PHP Stormは使っています。仕事では使っていないんですが、動作確認といいますか、
ここ数年結構静的解析とか、PHP Dockの話とかカンファレンスやってきたので、そういうときの動作確認ですとか、
あと副業で書いてるコードは基本的にPHP Stormで書いてます。
そうなんですね。それは何故?
副業のやつは何故PHP Stormで書いてるんですか?
これはPixivの構造とか、自分がもう数年間やってきて、全部構造を把握してるんで、
副業とかで言うと早くプロジェクトの構造とか把握して。
なるほど、そっか。
一応他の人がやってるような開発環境に近づけたいなってことで、PHP Stormを自分の訓練も兼ねてやっています。
でも解析しやすさで言うと、そうかもですね。把握はしやすいかもですね。
他の他も効くし、ジャンプも自由自在だし、その面は確かにあるんでしょうね。
なので副業でやってる構造は、結局PHPとか、当時あまり慣れていなかったフレームワークとかだったので、
自分であるこれ頑張るよりも、PHP Stormの方がノウハウと言いますか、デフォルトの機能でいろいろできたり。
そっちの方に寄せていこうって感じでしたね。
なるほど、だから最近のTwitterでPHP Stormのことを言及してたんですね。
それはまた別の事情があって。
そうなんですか?
社内でも一応Emacsが使ってるってことは言ってるんですけど、新しく入ってきた人にはPHP Stormがとりあえずお勧めですってことを言ってるので。
お勧めですと言ってるのに使い方わからないとか、というのもちょっとあるので、最低限のことができるように動作確認はしています。
なるほど、勉強家じゃないですか。
その前はPHP StormがPSR5ですとか、他の静的解析ツールで使えるような記法をサポートしていなくて、いつになったらサポートするのかっていうのをアップデートされるごとに毎回検証して、やっぱり動かないみたいな。
39:09
GitHubで聞いた2、3本くらい記事を書いたりしてましたね。まだできないのか、これできるといいけど動かないんじゃないかみたいな、なんか手をつけたりしていました。
そういう検証もやってたんですか。
会社のコードにPHP Dockで静的解析できるようにコメントを書いていくにしろ、他のツールに互換性のない記法で書いてしまうと、PHP Stormとかで開発してる人の保管とかがぶっ壊れていくので、極力そうならないように、
PHP Dockが増えすぎず、解析がきちんとできるようにみたいなバランスを取るためにそのあたりの検証を割とやったりしましたね。
検証とかもちゃんとやってるんですね。
これじゃあ、エディターの話の次は、
お、カンファレンスがあるじゃないですか。
もう来週、再来週、来週末ですね。
来週、ん?来週末か。
早っ。
いや、恐ろしい。
えーと、今回は登壇は?
します、はい。
押す、はい。
します。
さっぱりPHPという変なタイトルで、はい。
どうですか?進捗はいかがですか?
進捗、進捗ダメです。
いや、ネタとしては上がったので、これをどうスライドに落とし込んでいくかみたいなのを今週末やらなきゃってその感じですね。
はい。
なるほど。さっぱりPHP。
標準関数と文法を極める、なるほど。
PHPの習熟度って結構そのコードの短さにあられるんじゃないかと思っていて、
はい。
はいはいはい。
えーと、なんか、ループとかで書いているものをこれを関数で呼び出せば一発みたいなのもありますし、
あと、PHPのバージョンが上がっていくごとに短く書けるようなシンタックスが追加されていくので、
そういうのを使うことで、
ありますね。
読みやすく書きやすいような簡潔なコードになっていくんじゃないかなと思っているので、
そういう話をしようかなと思っています。
はいはい。
これバランスとして難しいのが、こう、技巧的になりすぎてもあんまり良くないというか、
知っている人しか読めないコードとかになってくるので、
落としどころが難しいなと思っていて、
そういうことはコードゴルフじゃないですけど、全部一回、
全部一個の式にまとめてみたいなことも、
関数組み合わせると割とできたりするんですけれども、
それはそれで実用的じゃなかったり、
書き下したほうが読みやすいみたいなことになったり。
いやー、こういうの難しいですよね。
難しいですよねって言った理由があって、
さっきコードゴルフみたいな話をされていましたけど、
最近、
42:00
ゲームが出てですね、
給食系の、
給食とか転職系のサイトで、
ゲームをリリースしている
ウェブページがあって、
そのゲームは何かというと、コードゴルフみたいな感じなんですよ。
で、各言語に、
で、その言語を選んで、
お題を解くみたいなのがあってですね。
で、その中の一つに、
2位の文字列がありますと、
アルファベットの何文字ぐらいだったかな、
10文字ぐらいだったかなっていうのを、
標準入力から加わして、
そこから、ボインが出てくるんですよ。
で、その中の一つに、
2位の文字列がありますと、
アルファベットの何文字ぐらいだったかな、
10文字ぐらいだったかなっていうのを、
そこから、ボインを抜いて、
結果を出力しなさいっていう問題があって、
お、難しいぞって言って、
お、どう解けばいいんだみたいな。
STL、TRを使えば一発というやつじゃないですか。
あー、なるほど。
STL、TRか。
そう、それは、
PHPで解く時にどうやったら簡単に解けるかなと思って、
考えて、
そうか、STL、TRで一発なのか。
ボインを定義しといて。
なるほどな。
僕ちょっと難しく考えすぎてて、
どうやったらいいかなと思って、
どうやって解けたかな。
その文字列を、
10文字ぐらいの文字列を、
全部配列にばらして、
1文字ずつ。
STL、TRとやってることは一緒なんですけど、
ボインを定義している配列と、
あれ、リフを取って、
で、
配列に戻すみたいなことをやって、
やったんですけど、
確かにそうっすね。
STL、TRの方が全然簡単っすね。
そういう、
関数を知っておかないと解けない問題とか、
あるじゃないですか。
PHPって関数すごいたくさんあるんで、
そういう風に、
知っておけばもっと早く解けたりとか、
動かせたりとか、
解けたりとかすると思うんですけど、
その辺の知識で大事だなと思って。
これ本当に難しい問題だなと思っていて、
PHPのこの関数読めばいいっていうのを、
関数リファレンスを読めば全部載っているんですが、
これを頭から全部読んでいくことに
価値があるかというと、
だいぶ難しいところもあって。
でも、知っておくのと知っておかないので、
全然。
じゃあ、どの関数を知らないのかというと、
ピンポイントでハマる関数とかあるんですよね。
その辺が難しいなと思いますね。
語彙力じゃないですけど、
こういう時にはこのカツを使えば一発みたいな。
45:03
ループでぐるぐる回さなくても、
この関数で一発みたいなの本当ありますもんね。
代表的なアレイカラムとかですね。
アレイ系の関数がやばいですよ。
こんなことできるんだよっていうのもあるんで。
面白いですね、関数。
そういう発表が来ていると。
ただまだ進捗は出ていないと。
残り数十冊頑張りますって感じですね。
頑張ってください。
僕だいぶ仕上げたんで。
僕はLTだからですね。
あれなんですけど。
僕だいぶかけましたね。
あと数ページ足すか引くかみたいなのを考えて。
4分っていうのがなかなかハードルでですね。
むっちゃ短いんですよ。
そうですね。
4分と5分の差がこんなにあるのかと思って
ちょっと衝撃を受けたんですけど。
何回か通して
これは時間足りないなと思って。
練習中です。
楽しみにしてます。
頑張ります。
僕はあれですね。
FQDNの
バリデーションみたいな話ですね。
メインメインのバリデーションの話を
するつもりです。
それも関数を使ったら
楽なのか
楽なのかみたいな話なんですけど。
話すととても長い話になってくるんですけど。
めちゃめちゃ長いんですよ。
関数を一発
フィルターバーとか通せばいいんでしょぐらいに
思うんですがそれだけで進まないという。
そうなんですよ。
そこをね
いろいろ調べたので。
本当考えることが
無限にあってそういうライバリーを
途中まで作りかけてるんですがまだ
完成品としては出せていなかったり。
そうなんですね。
RFC読むと
面白いんですよ。
歴史とかあって
途中で仕様変わってたりとかして。
RFCとかも
現状に合うように
改定されていったりもするので。
最初
RFC出した時の意図通りに
使われなくてっていうのがいっぱいありますし。
面白いですね。ドメイン周りは本当に
面白いですね。
そういう話を
しようと思ってます。
新規でアプリケーションサービスとか
立ち上げる人もメール周りの
バリデーションとかそれも大変だなと思うんですけれども。
皆さんどう頑張っていいですか?
メール周りのバリデーションって
できるんですか?
できるんですか?
できるんですか?って言うと変ですけど。
それこそフィルターバーの
Eメール使えない
パターンがあるじゃないですか。
日本の
電話のキャリア
とか
のメールアドレスを使うとすると
通せないので通すと
弾いちゃうんで。
48:01
なおかつキャリアのメールサーバー自体も
RFC通りに実装していなかったりも
しますし。
例えばメールアドレスだと
ドットが連続しているとか
が連続しているみたいなやつは
違反なんですけれども
前の部分をダブルクオートで
くくれば使える
送れるメールサーバーと送れないメールサーバーが
あって
ヤバいですねそれ。
なんですかその
ダブルクオートで書くって。
ダブルクオートでくれば
かなり自由にいろいろ書けちゃうんですよ。
はい。
そのせいでメールアドレスのバリエーションが
またものすごい複雑
っていう話もあるんですけれども
送れるサーバーと送れない
サーバーがありまして
センドグリッドってメールのサービスですね
これも昔はドコモに対して
送れたんですが途中から
RFC版のメールアドレスが送信できなくなって
しまったので
今はセンドグリッドを使って
ドコモに
RFC版のメールアドレスに送る手段が
ないはずですね。
途中までできたことが
後で切られていくってこともあり得るので
すごい大変です。
それは知らなかったな。
じゃあキャリアメールを
使う
会員登録をさせるような
ところはなかなか厳しいですね。
センドグリッドを割と使うでしょうしね。
なので会社では
自社で運用している
メールサーバー、センドメールのサーバーが
一応
残っているのかな。もう撤退したかもしれないですけど
センドグリッドで
送れないメールアドレスというのが存在していたので
基本的には
センドグリッドを使えるんですがRFC版のだけ
1枚のセンドメールで
送るっていうことをやったりしていました。
あー分けてるんですね。
おー
波ながましい。
それはやばい。
そうかでも
そういうことしないと送れないんですね。
それ
AWS使っても一緒でしょうね。
SESとかでもそうでしょうね。
そうですね。
いやー大変だメールアドレス。
ということでRFC版のメールアドレスを
使っているユーザーさんにメールアドレスを変更してください
っていうお願いをするか
そうしなければログインできないようにします
っていうことをやるしかないみたいなことになっちゃいますね。
そうですよね。
でもやっぱサービスの期間が長いと
そういうアドレスは必ずありますもんね。
ありますよね。
ECサイトとか
やってると絶対あるんで
あー大変っすね。
いやなんか一言のように聞いてたけど
センドグリッドで送れないのは
マジやばいっすね。
センドグリッドしかも途中から
シリーズ化してきたんですよ。
なるほどなるほど。
最初はセンドグリッドのSDKでメールアドレスの
バリエーションが入って
それより無理やり迂回すれば送れたりしたんですが
今はもう多分送れないはずですね。
面白い話が聞けました。
51:00
メールのバリエーション大変だなと
本当に思いますね。
あとはDNSを使うか使わないか
みたいなのもあったりしますし。
それはどういうことですか。
メールアドレスを送る先の
ドメインが存在するかしないかの実座確認ですね。
あーはいはいはいはい。
でMXレコードが
あるかないかっていうので
それを判定すると
今度は
届くメールアドレスなのに
登録できないっていうことがありってしまって
っていうのはDNSの使用上は
MXがなくても
Aレコードでも普通にメールアドレスで送れるんですね。
MXレコードじゃなくて
メールエクスチェンジ
メールを転送するためのDNSレコードなので
そのままドメインから
専用のIPアドレスに
Aレコードでひも付けてあげれば
そこに対して送ることもできるんですが
一般的なGメールとかだとMX使ってるんですが
個人でレンタルサーバー借りて
独自ドメインでメール運用みたいな感じだと
直接
Aレコードで
メールサーバーに
IPアドレス向けていたりすることがあるので
そういうのが
送れなかったりします。
なのでこのメールアドレスには送れません
みたいなサービスが
あったりするのでそれはMXレコードがない
せいですね。
その辺知っとかないと
いけないんだけど
なぁ
って感じですよね。
実は今回のPHP会話で
そのプロポーザルも
送ろうと思ったんですが時間切れで
送れなかったので
そうなんですね。
また別の機会に
聞ける機会があると
いいなと思いました。
ただ今のスケジュール的には
それが通っていたら
時刻を見ていたのでやっぱり通らなくてよかったなと
今回に関しては
楽しみですね。
久しぶりに
東京行くので
現地で参加できるので
だいぶ楽しみだなと思って
皆さんに応援できるのも
本当に久しぶりだし
そうですね。僕も数年現地に行ってないので
かなり久々に行きます。
嬉しいですよ。
会場も今回
カマッタの毎回
PHP会話やってるところに戻るはずなので
はい。
当日ぜひ
お願いします。
楽しみにしてます。
といったところで
そろそろ1時間
って感じですね。
さて、話し足りない
ところとか
話そうと思ってたみたいなところはありますか?
全然関係ないですけど
オープンソースの継続性みたいなのは
ちょっと難しいなっていうところもあって
オープンソースって結構個人の手弁当で
開発していたりメンテナンスしていたり
みたいなところがあって
開発コミュニティみたいなのが
54:00
できてるところだと
誰か1人がいなくなっても
他の人がガンガンリリースし続けて
っていうのがあったりしますけど
そうじゃないソフトも
あったり
しますけれども
自分が開発している
メンテナンスが築いた
PHPモードという
EmacsのPHP拡張ですね
こちらの開発メンテナンスをしていた
アメリカ人だったんですけれども
5年ぐらい前に
病気で亡くなってしまって
その前には東京で
PHP Canvasで会って
話そうっていう約束もしていたんですけど
健康問題でかなわずに
会えずじまいっていうこともあるので
結構会って 話せるうちに話しておく
っていうのが大事なことなのかなって
思ったりしますね
そうっすね
それは思いますね
普段使っている
ソフトも
1人がいなくなっても
他の人が聞き継げるような
体制とか作っておくのも
大事なのかなと思っていて
大事だと思います
普段使っているPHP3っていう
静的解析ツール
これを
オンドレイっていう1人の開発者が
やってるんですけど
開発
リードしてるのは1人だけなんですけど
知識というかノウハウとしては
他の人も持っていて ガンガンプリリクエストも
受け付けてマージしてるっていう体制なので
もしその人が
何か不足の事態があったとしても
一応誰かが開発を引き継ぐことは
できなくはないっていう体制になっていたり
するの
PHPモードに関しては今
自分1人で開発していて
他の人の貢献とかもそんなに望めない状況なので
どうしようかなというのが悩んでいたりもします
うーん
そんな少ないんですかね
EmacsでPHP開発する
使ってる人はいるし
インストールする人もそれなりにあるんですけれども
Emacs Lispが
分かって機能追加できるか
っていうと結構人を選んじゃうんですね
そっかそっか
開発者としてはいるけど
そこを開発できるかっていうと
また別の話になっちゃうんですね
たまにバージョンアップして
開発できる人はいるでしょうけどね
そう
それがPHPのユーザーかというと
違うでしょうしね
そこが難しいという人があんまりいなかったり
なるほど
PHPスターもプログラム言語とか
詳しい人っていうのはそんなに
いなかったと思うんですけど
この数年
2016年ぐらいからファンの話してきたり
っていうのもあって
結構静的解析っていうのも現実的な
選択肢で
使えるものっていうのが
広まってきたので今はPHPスターン
とかあとサーム
とかっていうツールがあって結構
世界中の人がコントリビューションして成長していく
っていうエコシステムとかできたのは
いい流れだなと思います
57:00
サームの方を
メインで開発してきた
人が去年
その会社を退社してしまって
別の人が開発を引き継いで
来たりするので
他の人に
1人がいなくなっても
引き継いでいける
っていうエコシステムを作っていくのは
本当に大事かなと思ってますね
PHP本体の方でも数年前に
バスケース
PHP開発者が
何人バスに引かれたら
PHPの開発が停滞するか
停滞するかっていうので
バスケースは2だっていう話があって
そういう流れで
このPHPファウンデーション
っていうのができて
いろんな会社から寄付を募ったりして
今は結構
体制といいますか
ちゃんと給料を出して開発するって
メンバー募ってやっていくみたいな会社ができたりして
PHP界隈とかも
今まで
フリーで無料で使えるから
PHPとかLinuxとか
そういうのが分かったと思うんですけど
みんなは正直に生きてるのかなということもありますね
そうですね
やっぱ利用している
会社さんとかには
寄付してほしいですね
いい話でしたね
いい話だけど
難しい話でもありますね
大事なんだけど
難しい問題ですね
金銭的な寄付だけじゃなくても
そういう知見とか広めていく
使ってる人とか
知識とか広めていくことも
一個の貢献なのかなと思って
やったりしているって感じも
そうですね
確かに確かに
はい
といったところで
1時間ぐらい話したので
このあたりで
今日のお話は
締めさせてもらおうかと思います
大丈夫ですかね
はい
では第17回は
この辺で締めさせてもらおうと思います
最後にもう一度
ツイッターのハッシュタグについてお知らせです
ハッシュタグはカタカナで
つなぎめFMですツイート待ちしてます
はいということで今回の
つなぎめFM第17回は
Tadさんを迎えしてお話しさせてもらいました
今日はどうもありがとうございました
59:20

コメント

スクロール