2019PHPイベントスタンプラリー景品の発表 #phpcon

2019年は全国各地でPHPイベントが開催されました。その際、会場の片隅に以下のようなスタンプラリー台紙が置かれていたのをご存じの方も多いかと思います。

全国PHPイベントスタンプラリーもあと2つ。12/1 の PHP Conference 2019 がゴールです。スタンプ1つにつき、象ぬい大が1000円引きになります。 #cakefest2019

スタンプを集めた先に一体何が貰えるのか、各イベント会場でも「なにか良いものが貰えるかもしれません」と濁してアナウンスをしていました。まあ実際に決まってなかったのですけど。

さてPHPカンファレンス2019を来週に控え、いよいよ全国スタンプラリーの景品を発表したいと思います。(ばばん)

ぞうぬい

スタンプ8個をすべて制覇した方には、この大 elePHPant ぬいぐるみを差し上げちゃいます! 下の大きい方です。

で、フルコンプできなかった方もがっかりしないで下さい。この「大ぞうぬい」は一般にも1万円で販売するつもりなのですが、スタンプラリー台紙をお持ちの方は、スタンプ一つにつき1,000円割引します。つまり一つ逃してスタンプ7つの人は、7,000円引きの3,000円で大ぞうぬいがゲットできてしまうわけです。

まだスタンプ台紙はけっこう余っていて、もちろんPHPカンファレンスの会場にも持ち込むので、これまでスタンプラリーに参加してなかった人も、その場で東京のスタンプを押すだけで1,000円引き。なんとお得なw

ということで、12月1日(日)はPHPカンファレンス2019に参加して、ぞうぬいをゲットしましょー。

あ、念の為書いておきますが、この大ぞうぬい景品交換は、カンファレンス当日の先着で景品がなくなり次第終了となります。スタンプ台紙製作分の数を用意しているわけではないのでご注意あれ。

ちなみ上の写真の小さい方「小ぞうぬい」はPHPカンファレンス公式で販売されてます。こちらもよろしくお願いします。

phpcon.thebase.in

WEB+DB PRESS vol.113 に Swoole 記事を書きました。そして「みんなのPHP」

PHPの非同期機能拡張「Swoole」についての記事を書いたよ

10/24 に WEB+DB PRESS vol.113 が発売されました。そこに私は、PHPの非同期処理拡張「Swoole」の記事を 4P 書いています。

最初に Swoole のことを知ったのは、昨年のPHPカンファレンス福岡2018の前々夜祭で聞いた uzulla さんの発表でした。

それから他のイベントでも Swoole の話をちょくちょく聞くようになって、興味がむくむくと湧き上がってきました。Swoole はPHPで非同期並列処理を実現するための機能拡張ですが、それがどうやって実現されているのかの解説はあまり見かけません。時間ができたら突っ込んで調べたいなぁと考えていたのでした。

ひょんなことから Swoole の記事を自分で書くことになったので、Swoole のコードをそこそこ深く読み込みました。結果的には今回の記事でも内部的な実装方法は触れられなかったのですが、先日の PHPカンファレンス北海道 2019 の発表資料に少しだけその部分に触れています。

W+D記事は「みんなのPHP」の前フリに過ぎなかった

さてここからがこの記事の本題ですが、W+D の Swoole 記事は、11月末に技術評論社さんから発売予定の「みんなのPHP」というムックのタイアップ企画になっています。

2013年に「PHPエンジニア養成読本」を一緒に作った編集者の細谷さんから「あれのリニューアルをやりたい」というお話を昨年末にいただきました。いろんな人に声をかけつつ本格的に企画が立ち上がったのは今年の5月頃です。12/1 の PHPカンファレンス2019 に間に合わせて当日会場で販売するのを必須として、多数の執筆陣による執筆が開始されました。kunit さんの見事な取りまとめ力の発揮もあって、かなり粒ぞろいの記事が揃っています。

自分の中の考えとして、PHP コミュニティの層を厚くするには、これまで執筆経験のない人にどんどん商業誌に技術記事を書いてもらうのが良いのでは、というのがかねてからありました。そのため今回のムックでは 2P〜4P の軽めの記事をたくさん集めた章を作ろうと考えていました。いわば「技術記事のライトニングトークのようなもの」です。

ムックの執筆者が順調に集まった結果、この「ごった煮」章のページ数が溢れてしまい記事を選考する必要が発生しました。でもせっかく書く気になって集まってくれた記事候補ですから、できればボツにしたくありません。

そこでいつも仲良くさせていただいている Software Design 編集長の池本さんに相談して、ごった煮章記事候補の中からいくつか記事をピックアップして Software Design の特集記事にコンバートさせてもらうことにしました。それが11月20日頃に発売される Software Design 2019年12月号の第2特集「なぜ愛され、なぜ最先端を行くのか? なんでもPHPプログラミング!」です。

ソフトウェアデザイン 2019年12月号

ソフトウェアデザイン 2019年12月号

ムック「みんなのPHP」が技評さんから出て、同じく技評さんの「Software Design」にも特集記事が組まれるのなら、さらに技評さんのもう一方の雄「WEB+DB PRESS」でもタイアップ企画を実現したくなるのが人情というものです。

そこでこれまた知己の W+D 編集長の稲尾さんに連絡をとったところ、大々的にタイアップというのは難しいが PHP 関連の記事を掲載するのは OK というお返事をいただきました。そこで私が興味を持ってた Swoole について、少し突っ込んで調べた結果の記事を書くことになったというわけです。

PHPカンファレンス2019 ではサイン会もやるよ

PHPカンファレンスでは、ここ数年は書店さんに出店していただいて技術書籍を販売していいただいてます。年によっては PHP 関連技術書がとぼしいこともあって、寂しい思いをしたこともありました。しかし今年は技評さんから、一つの企画から生まれた「PHP関連書籍」として3冊も並びます。やったぜ、技評PHP で染めたぜ。

東京開催のPHPカンファレンスは、日本の PHP コミュニティの大きなお祭りの側面も持ってるので、そこでこのムックをネタにして大いに盛り上がりたいところです。執筆者が大勢いるのでどういう形になるかまだわかりませんが、恒例のサイン会もたぶんやります。

そして願わくば、今回の「みんなのPHP」が SD、W+D ともどもよく売れて、来年も同じような企画ができるとなおのこと面白いですね。

IFTTTの調子が最近悪いのでIntegromatに切り替えた話

SNS間の連携でよく使用されているのが IFTTT (「いふと」と読むらしい)というサービスです。

ifttt.com

私もIFTTTで

という処理(IFTTT 的にはアプレットと呼ぶ)を作って、主に飯テロに利用していました。

ところが最近 IFTTT の調子がどうもよろしくない。以前からポストが遅れることは度々ありましたが、2月中旬からまったく処理が行われなくなりました。

これが動かないのは飯テロ的にとても痛いので、代替になるサービスを探すことにしました。そこで見つけたのが Integromat というサービスです。

Integromat とは

www.integromat.com

IFTTT のように【なにがあったら】【どうする】という単純な2段階構成だけではなく、複雑な処理の流れを設定できるのが Integromat の特徴で、そのためのフィルター群も多数用意されています。複雑なものを作れるぶん設定は多少難しくなっていて、どのように処理 (Integromat 的にはシナリオと呼ぶ) を作るかというチュートリアルビデオが、YouTube にたくさんアップされています。


Tutorial: Routers and Filters

無料プランといくつかの有料プランが用意されていて、主に3つの指標の制約が、高いプランになるほど緩くなっています。

  • 処理の起動回数
  • データ転送量
  • 処理起動の最小間隔

無料で使える FREE プランでは、処理の起動回数が月1,000回までに制限されています。これは計算すると1時間に1回強しか起動できません。タイムリーな飯テロにはちょっとつらいなと考えて、自分は月額9ドルの BASIC プランにしました。BASIC プランだと起動が月10,000回まで緩和されます。

www.integromat.com

Facebook Photo to Twitter/Flickr を作る

それでは早速、目的のシナリオを作っていきましょう。最初に完成形を出しちゃいますが、こんな形になりました。

https://gyazo.com/c76a3e599fe1b7db1d79fa58d1ef3b74

以下詳しくみていきます。

Facebook: Watch Photos

まずは Facebook モジュールを写真の投稿をトリガーとして作ります。

https://gyazo.com/752afa518d6a77b6ce535147b664bce6

HTTP: Get a file

次にそこからの接続先として HTTP モジュールの Get a file を作ります。これなしに直接 TwitterFlickr モジュールにつなぐとうまく動いてくれません。Facebook モジュールで取得できる画像に関する項目は URL だけなので、間で HTTP モジュールで実際の画像データを取りに行く必要があるんですね。これが分からなくてずいぶんハマりました。

https://gyazo.com/d5b34649368687bc213d9dc589feb392

Router

ここから直接 Twitter に繋いでしまっても良いですが、同じデータを Flickr にも投げたいので Router をはさみます。Router は1つの入力を複数に分岐してくれる機能です。

Twitter: Create a tweet

Router から送られた情報を Twitter モジュールの Create a tweet で新規ツイートとしてポストします。ツイート本文をどうするかは、渡されてきた情報や固定文字列の組み合わせで指定できます。今回は Facebook のコメント本文と URL を、ツイート本文としてポストするようにしました。 ここで大事な点があります。以下の画像の赤枠のように、「8. Name」と「8. Link」の間に「スペース」を一文字入れておくということです。これをやらないと、例えば

Facebook本文だよ #hashtag

というコメントだったときに、ツイートされる文章は

Facebook本文だよ #hashtaghttps://facebook.com/...

となってしまい、Twitter側にハッシュタグとして正しく認識されません。

https://gyazo.com/4c34d5d4429dd20133818a4ab642274a

Flickr: Upload a photo

Twitterモジュールとと設定項目の違いはありますが、やっていることは同じです。

https://gyazo.com/6c70112e599830a9b34d6ee67a3c200f

試しに実行してみる

シナリオができたら、左下の「Run once」ボタンで試しに実行してみましょう。なにかまずいことがあると、そのモジュールにエラーが発生したことが表示されるので、その内容を読んで対処していきます。

あとは定期実行を設定しておしまい

BASICプランでは、シナリオの起動間隔を最短 5 分まで短く設定できますが、そんなに厳密さを要求するものでもないので、デフォルトの 15 分のままにしておきました。

さて写真を Facebook にアップロードしてしばらく待つと、無事に Twitter にポストされていました。めでたしめでたし。(↓が Integromat 自動実行で初めてうまくいったツイート)

違法コンテンツブロックのためにOP53Bを導入することへの懸念点

8月24日に開催された「知的財産権本部 インターネット上の海賊版対策に関する検討会議」(第5回) の議論に対してまとめられた以下の togetter

togetter.com

について、思うところをツイートをしたところ、

川上量生氏本人から詳細を明らかにせよとのリプライが来たので、自分の考える問題点をまとめます。

OP53B について

一様に OP53B を実施すると、組織内のキャッシュDNSサーバからも名前解決できないという本末転倒な話になってしまうので、すでに実施されている OP25B と同様にプロバイダから動的IPアドレスが割り当てられる環境のみを対象にすると想定します。多くの企業組織は固定 IP による接続なので対象にならない前提です。

ざっと考えられる問題点は以下になります。

  • 接続環境のDNSが壊れている場合に回避手段がない
  • DNS の不具合調査が著しく困難になる
  • 組み込み IoT 機器への影響
  • IP 電話への影響

接続環境のDNSが壊れている場合に回避手段がない

ホテルが提供しているネットワークや公衆 WiFi など、きちんとメンテナンスされていない環境は未だにちょくちょく見かけます。WiFi で接続できても、DHCP で IP アドレスが降ってこない、指定された DNS サーバが腐っていて外部のホスト名が全く引けないか不安定、などの経験をした方も大勢いることでしょう。

IP アドレスが取得できていて外部へのルーティングが可能という条件なら、たとえ提供されている DNS サーバが腐っていても Public DNS を自分で指定することで回避できます。私もこの方法で回避したことがこれまで何度もありますが、OP53B を実施されるとこれができなくなります。

DNS の不具合調査が著しく困難になる

上記のように接続しているネットワークに不具合がある場合、ツールを駆使して原因を探っていくのがエンジニアの本性なわけですが、OP53B が有効になっている環境では DNS に関する原因究明はほぼ不可能となるでしょう。原因が分からないことには、ネットワーク提供者に報告するにしても「なんか繋がらない」という曖昧な表現しかできません。

組み込み IoT 機器への影響

組み込み機器がインターネットに接続して情報をやり取りする例も増えてきました。いわゆる IoT というやつです。IoT 機器に使いやすい UI はついていない場合が多いので、参照 DNS サーバの情報は設置時に一度設定されてからずっとそのままだったり、場合によっては決め打ちで書き込まれているかもしれません。IoT 機器が繋がっているネットワークに急に OP53B を実施されると、参照 DNS が外部のものだった場合は当然処理が行えなくなります。

IP 電話への影響

DNS はホスト名と IP アドレスへの名前解決だけに使われているわけではありません。メールサーバはメール送信のために MX レコードを使いますし、IP 電話は SIP プロトコルを通して DNS を利用しています。

動的 IP アドレスレンジから SIP フォンを使っている例がどのくらいあるのかは分かりませんが、もしそうなっていた場合に不用意な OP53B がサービス停止を招く可能性は十分にあります。

Public DNS サーバについて

川上氏のドキュメントでは Public DNS についても言及されています。前述の Togetter まとめでは「Google Public DNS 8.8.8.8 や Cloudflare 1.1.1.1 には IP ブロッキングを実施せよ」と川上氏が主張していると解釈しているツイートがいくつも見られます。私もこれに引っ張られて多少過激な表現のツイートをしてしまいましたが、ドキュメントを熟考した結果これは解釈が間違っているのではないかという結論になりました。

少し長いですが該当部分を引用します。

企業または個人が自己の使用の目的のために設置している DNS サーバはやむを得ないとしても、一般の利用者の多い Public DNS サーバに対しては、ブロッキングの対象とすべきである。

これをおこなえば上記の立石氏の資料でも指摘されている②③④の 3 点の回避策についても、ほぼ、防ぐことが可能になる。

もちろん、すべての Public DNS サーバーに対してブロッキングを実施してもらうことは不可能である。ただし、現実的には主に利用されている Public DNS サーバの数は限られている。

具体的にはクラウドフレアの 1.1.1.1 とグーグルの 8.8.8.8 を対象とすべきである。<中略>

これらは海外の DNS サーバであり、日本の行政、または司法による命令に従わない可能性がある。だとしても、彼らが、日本ユーザーからのアクセスに対して日本の法制度に従うか、そうでないかの立場をはっきりとさせる踏み絵としても、国内の DNS サーバ同様にブロッキングをおこなうことを要請すべきであると考える。

文章をよく読めば、Public DNS サーバ自体を IP ブロッキングするのではなく、Public DNS サーバにも国内同様の DNS ブロッキングを要請していくという意味であると解釈するのが妥当です。

川上氏は、Public DNS への IP ブロッキングに関しては、少なくともこのドキュメント内では主張していないので、その点に関する過剰な反応は不適切ではないかと思います。

Public DNS の役割とは

Google が Public DNS をはじめたのは、ユーザ環境の参照 DNS サーバによる原因で快適なインターネット接続体験が阻害されていることが調査によって分かったからです。また DNS プロトコル「毒入れ」攻撃によるセキュリティ事件が発生したこともあって、それを回避する役割も担っています。

OP53B を実施することによって、動的 IP アドレスブロックからは通常の方法では Public DNS へのアクセスがほぼ不可能になります。このことは、先に上げたメリットをユーザから取り上げることを意味していて、違法コンテンツへのアクセス制限によるメリットに比べて「オーバーキル」であると私は考えます。

「REALFORCE R2 PFU Limited Edition」はスペーサーを使うと味わい深い

この角度で撮ると大き目に見えるw #HHKB REALFORCE

※ 関係性の明示:

筆者は6月5日に開催された記者発表会に無償にて参加し「REALFORCE R2 PFU Limited Edition 黒」をモニターとして頂いています。またその後に開催された「HHKB ユーザーミートアップ vol.2 with 東プレ」の運営に関して PFU より委託費を頂いています。

6/5 に開催された PFU と東プレの新製品発表会に参加してきました。そこで発表されたのは「REALFORCE R2 PFU Limited Edition」です。

US 配列の無かった REALFORCE R2

昨年9月にREALFORCE が R2 としてアップデートされたことはニュースとしては知っていたのですが、ラインナップに US キー配列がなかったこともあって、あまり興味の対象にはなってなかったのです。

www.4gamer.net

で今回の PFU Limited Edithion ですが、US 配列も(少し発売が遅れるものの)製品に含まれるのはターゲットを考えると当然なわけで、ひょっとすると今回の PFU 版が決まっていたから、昨年の R2 初期ラインナップは JP 配列のみだったのかなぁなどと勘ぐってしまいます。

ということで、US 配列好きが多いソフトウェア開発者にとっては、断然こちらが本命ですね。

R2 はキースペーサーでタッチが全く変わるよ

記者発表会は 16 時前には終了し、その後に控えるミートアップまで時間があったので、どうせならとモニターとして頂戴した REALFORCE にキースペーサーを仕込んでみました。スペーサーは 2mm/3mm 厚の2種類が付属していますが、会場の展示品に 2mm 厚を仕込んだものがあったので、こちらは 3mm にしてみました。

キートップを外すのは専用の工具が付属しているのでそれを使います。最初は慣れてないのでちょっともたもたしますが、すぐに慣れて調子よくペースが上がっていきます。ぽちぽちとキーを外すこと約15分、メイン部分のキートップを外し終えて、スペーサーを敷き、再びキートップをポチポチ嵌めます。外すのに比べると嵌めるのはずいぶん早いw

3mm スペーサーを仕込んだキーボードは、全く別物のキータッチでした。自分はわりかし深めのキータッチが好みなので、スペーサーのないオリジナルのタッチの方が正直好きですが、浅いキータッチが好きな人は試してみる価値はあるでしょう。

この手法が使えるのも、物理的なスイッチを持たない東プレの「無接点静電容量キースイッチ」ならではなんですね。キーを押し込んだどの時点でオンにするかを変更できる「APC (アクチュエーションポイントチェンジャー)」機能と併用することで、自分の理想とするキーストロークに近づけることができます。こういうカスタマイズの方法もあったのかと、そのアイデアに舌を巻きました。

キーボードの世界は開拓されていない手法がまだまだあるんですねぇ。

「HHKB ユーザミートアップ vol.2 with 東プレ」はきっと面白いイベントになる

昨年9月に「HHKB 20周年記念 ユーザーミートアップ」というイベントを開催しました。

hhkbmeetup.peatix.com

なぜかこのイベントの運営側に入ることになり、モデレーターとしてセッションの構成や、当日の司会などもろもろのお手伝いをしました。その辺の話はいしたにまさきさんにチャットインタビューを受けて MODUL.JP の記事にまとまっています。

modul.jp

上記の記事中で

小山:次回の話は決まってないので、そこについては何もないです(笑)

なんて自分でも答えていますが、思っていたより早く2回目が実現してしまいました。

それが6月5日(火)に開催される「HHKB ユーザミートアップ vol.2 with 東プレ」です。

hhkb2.peatix.com

今回は平日夜のイベントなので、私の作業的には前回ほど大変ではないのですが、まあやっぱり期待されているわけですよ、面白いパネルディスカッションを。

今回のパネルディスカッションのテーマは「高級キーボード」

今回はHHKBにとどまらない「高級キーボード」をテーマにするという事もあって、どういう座組みにすればよいかいろいろ考えました。前回のパネルは「HHKBからあまり大きく外れた人選にはしないで欲しい」というPFU側の要望もあり、HHKB を軸に据えた議論を盛り上げることができて、それはそれで面白かったです。

でもデスクトップPCの衰退という状況の中で、キーボードを取り巻く環境は、ものすごくマニアックに拘る派と全く気にしない派の両極に分かれていると思います。HHKB 好きな人たちも「拘る派」の一端を担っているわけですが、世間ではさらに尖った「自作キーボード派」と呼べる人たちの勢力が勢いを増しています。ここを議論に取り入れずして高級キーボードの現在と未来は語れないでしょう。

ということで、今回の第2部パネルセッション「高級キーボードの世界事情」では、以下の方々をお呼びすることにしました。

  • 松本 秀樹 (株式会社 PFU)
  • 持田 智彦 (東プレ株式会社)
  • ぺかそ@Pekaso
  • じゅにゃ@junya28nya

上のお二人は主催者サイドかつビジネスサイドです。

下のお二人の方々について軽く説明したいと思います。

まずはぺかそさん。

twitter.com

自作キーボード派に大きな影響を与えた同人誌「BUILD YOUR OWN KEYBOARDs [compiled]」を執筆された方です。

plustk2s.com

実は前回の HHKB ミートアップの際に、ぺかそさんが同人誌に HHKB について書かれた記事を C92 で見かけて登壇を打診したのですが、諸々の理由で残念ながら断られてしまった経緯があります。今回は自作キーボードについて思う存分語っていただきたく登壇をお願いしたところ、ご快諾いただいたのが個人的にも本当に嬉しいです。

もうお一人はじゅにゃさん。

twitter.com

物理フリックキーボードを実際に開発し、スイッチサイエンスで販売までされている方です。

じゅにゃさんご本人によるブログ記事はこちら。

キーボードを現在のキースイッチという枠組みにとらわれずに、もっと様々な入力インターフェースがあり得るということを実践、証明されているじゅにゃさんに議論に加わっていただくことで、面白い気付きがあるのではないかと楽しみにしています。

どうですか? なんかワクワクしてきませんか? 自分だけ?

前回もそうでしたが、パネルディスカッションは座組みが決まった段階で面白くなるかどうかが、8割方予想できることがあります。議論テーマの詰めはまだこれからですが、どういうセッションになるのか予測できるところとそうでないところがあり、どっちに転んでも面白くなりそうで本当に楽しみにしています。さらに会場からの飛び入りゲストも期待できそうで、そっちも楽しみです。

チケットはまだまだ発売中

「HHKB ユーザミートアップ vol.2 with 東プレ」は定員 150 名のうち、現時点で販売済チケットは 78。まだまだ余裕で買えます。キーボードに関する熱い議論に参加したい方は、6月5日の夜に六本木までいらっしゃいませんか?

#ssmjp キタガワナイト「公開情報から読み解くWnnaCry騒動」にブログ枠で参加してきた

本日10月26日に開催されたssmjpにブログ枠で参加してきました。

ssmjp.connpass.com

競争率3倍以上の人気イベントで、抽選で勝ち残れる気がまったくしなかったので、先着3名で空いていた「ブログ枠」というものにさくっと申し込みました。ブログ枠というからにはブログを書かなければいけません。イベント中はひたすらメモを Markdown で書いてて、イベント終了とほぼ同時に gist で公開といういつものパターンをやったのですが、なにせブログ枠なので、はてなブログの機能で gist を貼り付けてブログエントリに仕上げました。

北河さんによる発表内容は本当に広く深くて、頑張ってメモりましたがそれでも全体の3〜4割くらいだと思います。

今年5月に社会を大きく騒がせた WannaCry ですが、不正確な情報や明確な間違いが結果的に多く流れました。公開情報を丹念に追うことで、それらがどのように発生したかを検証していく北河さんの話はとてもおもしろく、一次情報に当たる重要性を再認識させてくれます。

#ssmjp 2017/10 #1 キタガワナイト記録メモ