8.0で計画される新機能についても紹介します。1996年からPHPマニュアル日本語訳を手掛け、mbstringエクステンションの開発・メンテに従事。PHP徹底攻略シリーズ(通称:マンモス本)の著者であり、日本PHPユーザ会の創設メンバー。このトークは『GMOインターネット株式会社』の提供でお送りします。全国に広がるPHPコミュニティ、北は北海道から南は沖縄まで!地域コミュニティ代表が、その地域ならではのイベントの特色や楽しみ方、はたまた運営に関する悩みまで・・・ここでしか話せないPHPコミュニティ事情を赤裸々に語り合います。並列処理を実現するには主にこの拡張を使用していました。非同期処理を行うことができます。一般的な拡張機能の導入の方法がほぼ同じなため導入しやすいです。使って実際にアプリケーション開発をした過程をノンフィクションでトークできればと思います。minutes)Chatworkでは10年近く前から運用されているプログラムがメインのシステムとして稼働しておりますが、近い将来に限界を迎えそうになっています。システムがなぜ限界を迎えるのか、どういうタイミングで限界が訪れるのか。hour)PHPカンファレンス恒例の本当の初心者向けセッションです。どのような言語か、どのような特徴があるのか、どのように学習していったらいいか。本当の一歩目の解説を行います。デザイナーさんや多言語の経験者の方でも理解できる内容です。仕事で利用したことがある方などは対象外となります。hour)日本の開発者の間でドメイン駆動設計の話題が盛り上がっています。ドメイン駆動設計の話が出てくるたびに「モデルとはなにか」という話がでてきますが、多くの話は実装に寄った話になりがちです。Model-View-Controllerパターン提唱者のトリグヴェ・リーンスカウク博士は「モデルは知識の表象である」と定義しています。このトークでは、「モデル」とはそもそも何であるのかについて、リーンスカウク博士のModel-View-Controllerパターンを参照しながら詳しく検討します。開発以前にどんな基本的な問題が存在し、何を解決するべく「モデル」という概念は提示されたのか?についてお話します。minutes)弊社バックエンドは、PHPエンジニアのみで開発を行なっていました。想定外の問題が発生しました。時代の流れとともに、goへの移行が選択肢に上がるケースが増えて来ているかと思います。これらの知見を共有することで、goに移行した方が良いケースと悪いケースを明らかにしたいと思います。(この時の懇親会で移行の課題に付いて聞いてみたいとのご意見をいただきました。大規模なカンファレンスでの登壇は初めてです。このトークは『PHP技術者認定機構』の提供でお送りします。プレゼントキャンペーン、稟議に使えるPHP市場動向を紹介します。hour)設計やアーキテクチャにはある種の理想という側面があります。残念ながら現実では理想を実現する際に妥協を求められることもあります。クリーンアーキテクチャもその類のひとつで、その理想を実現しようとするといくつもの問題にぶつかります。定義するファイルが多すぎる問題、たとえばプレゼンターという考えがHTTPという技術にマッチしない問題......。これらの問題は致命的です。いった理想と現実の狭間に揺れながら現実的な解を見出すことこそアーキテクトの腕の見せ所です。しからば致し方ない犠牲として理想を妥協するしかない――とは割り切れないのが人情です。WEBフレームワークを作るというお話をいたします。環境が使われることが増えてきました。したくなるのが人情です。minutes)このトークは『弁護士ドットコム株式会社』の提供でお送りします。課題について振り返ります。弁護士ドットコムはサービスを開始した2005年からPHPを使い続けています。開発プロセスの整備やメンバーの入れ替わりなどを経て、紆余曲折ありながらも前進してきました。その中で、我々は「弁護士ドットコム」という自社サービスをどのように開発・運用しているのか、事業会社としてのエンジニアリングをどのように考えているのか。その経験や結果を再確認しつつ、現状と、そしてこれからの展望についてお話します。minutes)このトークは『株式会社Cygames』の提供でお送りします。このトークの録画・配信はありません。PHP7はブラウザゲーム『グラブル』の大規模アクセスにも恩恵をもたらしました。本セッションでは、PHP5.6からPHP7.2へのバージョンアップを行った際のパフォーマンス変化をお伝えするとともに、なぜ大きな効果が現れたのか、その理由を紐解いていきます。テストコードと一口に言っても、ユニットテスト、featureテスト、APIテスト、E2Eテストなどたくさんの種類のテストコードがあります。テストコードを導入する前に「なぜそのテストコードを書くのか」を話せることを目的として、テストそのものやテストコードについてお話ししていきます。当セッションでは、以下のような話をする予定です。8.0ではたくさんのSQLが追加されました。存在を知らなければ、どんなに良い機能でも使いようがありません。minutes)Composerは、もはやPHPの現場に無くてはならない存在です。ソースコードを読みましょう。今まで良く分からなかった「このエラーって何💢」に親しみを感じるかも知れません。例にして、パッケージ名の解決・バージョンの解決・.lockファイルの吐き出しといった普段利用するComposerの挙動を読み解いていきたいと思います。0改善失敗から学ぶ、レガシープロダクトに立ち向かうチーム作り。minutes)このトークは『サイボウズ株式会社』の提供でお送りします。サイボウズの大企業向けグループウェアのGaroon(ガルーン)は、PHPで開発されている17年目の製品です。7までアップグレードを追従したり、もともとオンプレミス製品だったものを、クラウドでも提供を行うようにしたりと、今でも現役で開発されており、サイボウズの主要製品の一つとなっています。17年の開発の中では、多くの「歴戦の勇者」がGaroonという巨大な製品に対して、改善を試みていました。他のビジネス要件やQAのテスト工数との兼ね合いから、多くの改善が軌道に乗せられていませんでした。このような改善の難しさの一つとして、開発チームの体制の問題がありました。プログラマーはプログラマー同士で、QAはQA同士でコミュニケーションをとることが多く、職能を超えたコミュニケーションは決められた場所・決められた人が中心になって行われていました。そのため一つコードを改善しようと思っても、この開発体制が邪魔をして、思うように進められないことが多くありました。そんな中、それまでのウォーターフォールでの開発から、スクラム開発に移行しました。このスクラム開発への挑戦をきっかけに、プログラマーとQAのチーム統合や、プロダクトオーナー・ビジネスサイドとの対話が進み、今ではプロダクト開発に関わるメンバー全員でこのレガシーさに立ち向かい改善が行えるようになってきました。このセッションでは、そんなサイボウズGaroon開発チームの経験をお話しします。minutes)このトークは『EGセキュアソリューションズ株式会社』の提供でお送りします。このトークの録画・配信はありません。この度、株式会社グレスアベイルは、2019年8月13日に、イー・ガーディアングループへの参画を決定しEGセキュアソリューションズのグループ会社となり、それに伴い、徳丸浩が同社の社外取締役に就任いたしました。今回は、徳丸監修のもと株式会社グレスアベイルが新たに開発した新しい概念のWAFのご紹介をとおして、クラウドネイティブ時代のセキュリティについてお話しします。hour)鳴り止まないアラート...天を仰ぐ上司...黙々と戦うエンジニア。トラブルはとても厳しいシーンです。その反面、トラブルシューティングはエンジニアの腕の見せ所とも言えるのでは無いでしょうか。そこで今回はWebサービスによくあるトラブルを題材に実際にどのようにトラブルを解決していくかの勘所をお話します。未来に役立つ話をお伝えします。minutes)このトークは『スキルエンジン株式会社』の提供でお送りします。教育カリキュラムを紹介いたします。捉え方についてはエラー文/ログ解析など。正確に捉えるには、正確な知識が必要。複数の仮説を洗い出しする。その中から実現可能性の高い仮説を選ぶ。2で洗い出したパターンを実装する。一気に作らない、細かく動作確認しながら実装していく。1行1デバッグを行う。フレームワークから入ると、応用力が身につきにくい。スクラッチ開発を通して、応用力のつく学習の流れを紹介。minutes)PHPの言語仕様は変化の歴史であり、常にほかのプログラミング言語の特徴を取り入れることで発展してきました。その変化はときに断絶を生んできましたが、同時に我々に多くの可能性をもたらしてきました、このトークでは一人のプログラミング言語好きとしてPHPの言語仕様の歴史的経緯と強力な機能を紹介していきます。minutes)この話は、オレオレフレームワークで作られたアプリケーションに秩序をもたらすべくヒィヒィ言いながらリファクタリングをし続けた男の5ヶ月間の記録である。minutes)このトークは『BASE』の提供でお送りします。ビジネスを実現するために我々はさまざまな技術から選択する場面に出くわします。技術選択は適材適所で行うべきと問われつつもその技術に開発運用の知見がない場合、短期的に見た自分たちの慣れという優位性に引っ張られ、より適しているとは言えない選択をしてしまうというのは一般事象としてみうけられることだと思います。知見のない言語・フレームワークの採用における大きな懸念点は、短期的に見れば学習コスト・コード品質を保てるのか、長期的に見ればその技術で構築されたサービスを保守できるかという点が挙げられます。このトークでは、BASEの新規事業において、知見のない言語を選択し、列挙された懸念を監視設計・コード検査・テストなどを駆使して乗り越えリリースしていった際の知見を話します。次の技術選定に立ち向かう戦略・ひとかけらの勇気をお持ち帰りいただければ幸いです。minutes)Webアプリケーションの脆弱性は、どこに潜んでいて、いつ狙われるのか分かりません。ひとたびサイト改ざん・情報漏えいが発生したらビジネスに及ぼす影響は甚大です。ツールなどがあり、脆弱性の発見・事前検知ができます。WAFを導入することで、外部からの不正な攻撃からWebアプリケーションを守ることも出来ます。いえ、そうは思いません。根底として大切なのは、エンジニア自身がWebセキュリティの正しい知識を持ち、安全なアプリケーション開発を行うことであると考えます。Webアプリケーションエンジニアの皆さん、今改めてWebセキュリティを一緒に見直しませんか。本セッションでは、Webアプリケーションエンジニアが遭遇しやすい脆弱性の概要と危険性、そして対策方法についてお話します。多方面で抽象化を行うことで、高度に変化への強さを獲得できるアーキテクチャです。昨今の変化の早さに対応するべく「アジャイル開発」や「マイクロサービス」が叫ばれているように、「クリーンアーキテクチャ」もまた日増しにその注目度は上がっているように感じます。取っつきにくいアーキテクチャであることからか、現状参考になる資料が無数に転がっているというわけでもありません。そこで、エキテンで現在Laravelベースで開発中の新しい予約システムを題材に、実際にアーキテクチャを形作っているコンポーネントの紹介や、開発する上で行ってみたちょっとした工夫、開発フェーズにおける現場の生の声などをお話しようと思います。VM(PHPの仮想的なCPU)の命令列に変換されてから実行されます。VMは本物のCPUと似た命令も持っていますが、本物のCPUではあり得ない命令も持っています。その一つが例外処理に関わるものでしょう。VMと本物のCPUとの違いは何か、といった実装の詳細をPHPのCソースコードを交えて紹介します。minutes)中学生の頃にMSXというパソコンのCPUであるZ80のプログラミングを体験していました。その約25年後、2016年にPHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80ベースであり、エミュレータで実装されていたのはまさにZ80の命令だったのです。この体験で、エミュレータがハードウェア仕様をソフトウェア的に表現したものであることを理解しました。名著「CPUの創りかた」で紹介されているCPU、TD4を実装し衝撃を受けました。そこに見たCPUは電気回路として表現された状態機械でした。hour)安全なインターネットサービスを提供するにあたっては、ソフトウェアバグとしての脆弱性対策だけではなく、ビジネスモデル・サービス仕様・アーキテクチャ設計・ソフトウェア設計・実装・サーバーなどの多方面からセキュリティ検証が重要となります。各フェーズに起因する問題とその対策を具体的に紹介します。1985年京セラ株式会社に入社後、ソフトウエアの開発、企画に従事。2008年に独立し、Webアプリのセキュリティを専門分野とするHASHコンサルティング株式会社を設立した。「体系的に学ぶ安全なWebアプリケーションの作り方」がある。hour)フィールディング博士のREST論文に登場する6つのアーキテクチャ制約(クライアントサーバー、ステートレス、キャッシュ、統一インターフェイス、レイヤ、コードオンデマンド)と4つのインターフェイス制約(リソースの識別、表現によるリソース操作、自己記述的メッセージ、ハイパーメディア制約)を解説し、REST(Hypermedia)のAPI設計戦略を検討します。RESTはコンポーネントや創造性を強調するのではなく、適切な制約を構築し抑制と理解を強調する手法で設計されました。RESTそのものだけでなく、RESTの設計手法をも知ることでRESTの深い理解を目指します。API設計者のためのREST解説です。各種ツールについての紹介をします。コーディング規約チェック・静的コード検査・テストツール・リファクタリングを中心に、あまり着目されてない数多のツールを俯瞰します。コーディングやレビューでの参考にしてもらえればと思います。minutes)今年で15周年を迎えたWebサービスにテストコードとCI/CDを導入しました。アプリケーションは何度かのリプレイスを経て、現行はPHP7とLaravelを基盤としたシステムで稼働しています。一方で、データベースは古くから稼働したままのため、システム間の依存が多く見られ「サイトの規模の割にテストコードの実装が十分でなく、改修が怖い」といった課題がありました。今回はマイグレーション管理されていないデータベース環境へのテストコードの導入とCI/CDの設定についてお話しします。複数のシステムリプレイスの間に試行錯誤しつつ育てたテスト環境の歴史、CIによる継続的なパッケージアップデートとセキュリティチェックについてもご紹介したいと思います。PHPは言語としては初学者にもやさしく、入門しやすい言語かもしれません。一方で、実際にWebアプリケーションを作るにあたり、知らなければいけない周辺知識はたくさんあります。このセッションでは、初学者(Web系の言語入門者を含む)にとって、Webアプリケーションを開発することを学ぶにはどこから取り組むのが良いのか?ということを紹介します。60分枠も申し込んでいますが、こちらは短縮版となっています。LiteSpeedを使うと、rewriteルールをそのまま利用することができて、Apache+mod_phpと違って静的コンテンツの処理プロセスとPHPプロセスが分離しつつイベントドリブンな世界に突入できますし、Nginx+php_fpmと違ってそれぞれ別々に管理する必要もありません。いう第3の選択肢があることを説明したいと思います。Application)開発を実現した話をします。API設計、認証周り(JWT、SNS認証など)の工夫点などをお話します。GitlabCIなどの技術を採用する事によるDXの向上。新しい技術を採用する中で、開発コストとのバランスを上手く調整した点。スクラム開発による開発の効率化、チームの開発スピードの可視化などです。minutes)PHPの開発でコーディング規約をどうするかはどの現場でも悩ましい話だと思います。PHP-CS-Fixerに整形を委ねるのも1つの手ではないかと思います。利用中の課題点と自分が感じた「クセ」について、簡単にお話しできればと思います。大規模なカンファレンスでの「初めてのスピーカー」にチャレンジさせていただければ幸いです。minutes)私の携わっているプロジェクトにはテストがありません。それにより、画面変更時に、人手でページを1ページずつアクセスして確認する必要がありました。その確認作業はエンジニアにとっては苦痛です。そこでビジュアルリグレッションテストを導入しました。導入によって得られた知見を話したいと思います。大規模カンファレンスでは初めてのスピーカーとなります。利用できる様になって随分たちました。LambdaにおけるPHPのパフォーマンスと利便性を時間が許す限りトークします。minutes)社会人になってほぼ初めてPHPを触ることになりました。会社でコードを書いていて、まだあまり意識できていない部分、競プロを利用して学べる部分があるのか検証します。minutes)タイトルどおりですが、中途半端に「設計をする」という文化を浸透するためのやり方に不具合が生じるとチームが思わぬ方向へと向かうこともしばしば。今回はそんな失敗した一例と解決した方法について、簡単に発表できればと思います。minutes)既存サービスの運用を行っていると、本腰をあげてリファクタリングをしない限り根本の設計はずっとそのままです。運用がメインで、しっかりとした設計(例えばDDDやクリーンアーキテクチャなど)の実務経験がほとんどない中、新規サービスを開発することになりました。良い設計のサービスにしようと思い立ち、未経験で奥深い「設計」の世界にチームメンバーも巻き込みながら挑戦してみました。私はもともと『落ちこぼれ』でした。自分に全く自信がありませんでした。そんな私が、今Conferenceで登壇したり、勉強会でLTをしたりしています。いやいや、エンジニアこそやると良いと思います。一年間で生活が大きく変わった私から、私の思いを話したいと思います。minutes)ユーザーに素早く価値を届けること、より良いコードを追求すること、ビジネスに向き合うこと。仕事としてコーディングをする上でどれも大事なことです。精神的・物理的な"余裕"が無いためにそれらを犠牲にせざるを得なかった経験はないでしょうか。私が実務で実践してきた"余裕"を生み出すtipsをご紹介します。minutes)レガシーシステムの開発中に訪れるPHPのEOL。バージョンアップ後は全機能テストが待っています。このような状況でユニットテストを書くためには、問題の分割と、テストで担保したいこと(目的)の設定が重要です。18年にわたって運用されているシステムに対して、PHPUnitと、PHPの挙動を操作するuopzという拡張を利用してテストをどのように行ったのかをご紹介します。minutes)このトークは、Hamee株式会社の提供でお送りします。Hameeの開発部では、毎年開発合宿を開いており、はや5年になります。弊社のビジョン「クリエイティブ魂に火をつける」ためにどういう合宿をしているのか?お話したいと思います。