みなさんは PHP で並列処理や非同期処理をする方法を知ってますか?以前は pthreads といった拡張機能があり、 PHP で並列処理を実現するには主にこの拡張を使用していました。一方で非同期処理に関しては、libevent だったり最近だと Swoole が注目されており、容易に PHP で非同期処理を行うことができます。
pthreads はデータの受け渡しが難しかったり、導入にはいくつかのハードルがありましたが、Swoole は一般的な拡張機能の導入の方法がほぼ同じなため導入しやすいです。
本セッションでは、 phtreads と Swoole を比較しつつ、実際に今まで触れてきたり、 pthreads の導入に挫折はしたもののプロダクションに導入しようとしたり、
Swoole を使って実際にアプリケーション開発をした過程をノンフィクションでトークできればと思います。
Chatworkでは10年近く前から運用されているプログラムがメインのシステムとして稼働しておりますが、近い将来に限界を迎えそうになっています。
システムがなぜ限界を迎えるのか、どういうタイミングで限界が訪れるのか。長く運用されているシステムだからこその理由や、PHPだからこその事情を踏まえ、将来に向けて継続的にシステムを運用していくために今後どうしていこうとしているのか について話します。
弊社バックエンドは、PHPエンジニアのみで開発を行なっていました。
PHPからgoへの移行を行ったところ、トレーニング、開発環境構築、障害対応など想定外の問題が発生しました。
時代の流れとともに、goへの移行が選択肢に上がるケースが増えて来ているかと思います。
これらの知見を共有することで、goに移行した方が良いケースと悪いケースを明らかにしたいと思います。
【アジェンダ】
【登壇暦】
PHP で実装された Web アプリケーションでも Kubernetes 環境が使われることが増えてきました。せっかく本番環境を k8s 化したのならば、開発環境も k8s にしたくなるのが人情です。
本セッションでは、開発環境を Kubernetes で構築した経験や Tips をご紹介します。
ここ数年で向き合った「技術的」「組織的」な課題について振り返ります。
弁護士ドットコムはサービスを開始した2005年からPHPを使い続けています。
開発プロセスの整備やメンバーの入れ替わりなどを経て、紆余曲折ありながらも前進してきました。
その中で、我々は「弁護士ドットコム」という自社サービスをどのように開発・運用しているのか、事業会社としてのエンジニアリングをどのように考えているのか。
その経験や結果を再確認しつつ、現状と、そしてこれからの展望についてお話します。
PHP7はブラウザゲーム『グラブル』の大規模アクセスにも恩恵をもたらしました。
本セッションでは、PHP5.6からPHP7.2へのバージョンアップを行った際のパフォーマンス変化をお伝えするとともに、なぜ大きな効果が現れたのか、その理由を紐解いていきます。
皆さんは普段テストコードを書いていますか?もしくはこれから導入しようと奮闘していますか?はたまたテストコードというのを初めて聞きましたか?
テストコードと一口に言っても、ユニットテスト、featureテスト、APIテスト、E2Eテストなどたくさんの種類のテストコードがあります。
テストコードを導入する前に「なぜそのテストコードを書くのか」を話せることを目的として、テストそのものやテストコードについてお話ししていきます。
当セッションでは、以下のような話をする予定です。
・そもそもなぜテストを書くのか
・なぜテストコードを導入するべきなのか
・それぞれのテストコードの特徴
・それぞれのテストコードのメリットデメリット
サイボウズの大企業向けグループウェアのGaroon(ガルーン)は、PHPで開発されている17年目の製品です。
PHP 4からPHP 7までアップグレードを追従したり、もともとオンプレミス製品だったものを、クラウドでも提供を行うようにしたりと、今でも現役で開発されており、サイボウズの主要製品の一つとなっています。
17年の開発の中では、多くの「歴戦の勇者」がGaroonという巨大な製品に対して、改善を試みていました。
しかしながら、他のビジネス要件やQAのテスト工数との兼ね合いから、多くの改善が軌道に乗せられていませんでした。
このような改善の難しさの一つとして、開発チームの体制の問題がありました。
プログラマーはプログラマー同士で、QAはQA同士でコミュニケーションをとることが多く、職能を超えたコミュニケーションは決められた場所・決められた人が中心になって行われていました。
そのため一つコードを改善しようと思っても、この開発体制が邪魔をして、思うように進められないことが多くありました。
そんな中、それまでのウォーターフォールでの開発から、スクラム開発に移行しました。
このスクラム開発への挑戦をきっかけに、プログラマーとQAのチーム統合や、プロダクトオーナー・ビジネスサイドとの対話が進み、今ではプロダクト開発に関わるメンバー全員でこのレガシーさに立ち向かい改善が行えるようになってきました。
このセッションでは、そんなサイボウズGaroon開発チームの経験をお話しします。
この度、株式会社グレスアベイルは、2019年8月13日に、イー・ガーディアングループへの参画を決定しEGセキュアソリューションズのグループ会社となり、それに伴い、徳丸浩が同社の社外取締役に就任いたしました。
今回は、徳丸監修のもと株式会社グレスアベイルが新たに開発した新しい概念のWAFのご紹介をとおして、クラウドネイティブ時代のセキュリティについてお話しします。
Composerは、もはやPHPの現場に無くてはならない存在です。
内部構造に興味をいだいたことはないでしょうか?
ソースコードを読みましょう。今まで良く分からなかった「このエラーって何💢」に親しみを感じるかも知れません。
このセッションでは、 composer install
を例にして、パッケージ名の解決・バージョンの解決・.lockファイルの吐き出しといった普段利用するComposerの挙動を読み解いていきたいと思います。
このトークは『スキルエンジン株式会社』の提供でお送りします。
--
数百以上のプロジェクト開発経験を踏まえ、プログラマに必要なスキルとは?
数年後、10年後先を見据えどのようなスキル・考え方を身につければ
プログラマとして圧倒的に成長できるか?
上記について徹底的に分析し、成長するためのエッセンスを凝縮した
教育カリキュラムを紹介いたします。
そのカリキュラムを実践した弊社メンバーは
未経験から2,3ヶ月程度でSE/PGとして数千万レベルプロジェクトに参画
<一部抜粋>
・超高速PDCA??(当日までに名前を決めます汗)プログラム開発
1.現状把握
正確に現状を捉える。捉え方についてはエラー文/ログ解析など。
正確に捉えるには、正確な知識が必要。
正確な知識を習得する為はどうしたらいいか?など
2.根拠に基づいた仮説を立てる
複数の仮説を洗い出しする。その中から実現可能性の高い仮説を選ぶ。
3.コーディング
2で洗い出したパターンを実装する。
一気に作らない、細かく動作確認しながら実装していく。
1行1デバッグを行う。
・スクラッチ開発
いきなりフレームワークから入ると、応用力が身につきにくい。
スクラッチ開発を通して、応用力のつく学習の流れを紹介。
ビジネスを実現するために我々はさまざまな技術から選択する場面に出くわします。技術選択は適材適所で行うべきと問われつつもその技術に開発運用の知見がない場合、短期的に見た自分たちの慣れという優位性に引っ張られ、より適しているとは言えない選択をしてしまうというのは一般事象としてみうけられることだと思います。知見のない言語・フレームワークの採用における大きな懸念点は、短期的に見れば学習コスト・コード品質を保てるのか、長期的に見ればその技術で構築されたサービスを保守できるかという点が挙げられます。
このトークでは、BASEの新規事業において、知見のない言語を選択し、列挙された懸念を監視設計・コード検査・テストなどを駆使して乗り越えリリースしていった際の知見を話します。次の技術選定に立ち向かう戦略・ひとかけらの勇気をお持ち帰りいただければ幸いです。
PHPの言語仕様は変化の歴史であり、常にほかのプログラミング言語の特徴を取り入れることで発展してきました。その変化はときに断絶を生んできましたが、同時に我々に多くの可能性をもたらしてきました、このトークでは一人のプログラミング言語好きとしてPHPの言語仕様の歴史的経緯と強力な機能を紹介していきます。
この話は、オレオレフレームワークで作られたアプリケーションに秩序をもたらすべくヒィヒィ言いながらリファクタリングをし続けた男の5ヶ月間の記録である。
この話には以下のような内容が含まれる予定です
・OSSのフレームワークを使っていないアプリケーションの泳ぎ方
・テスト環境が整っていない状況でいかにテストを書くか
・テストとリファクタリングはどの程度のバランス感でやって行くといいのか
・リファクタリングにコストをかける意味はあるのか
※大規模なカンファレンスでの登壇は初となります
Webアプリケーションの脆弱性は、どこに潜んでいて、いつ狙われるのか分かりません。ひとたびサイト改ざん・情報漏えいが発生したらビジネスに及ぼす影響は甚大です。
未然防止策として外部脆弱性診断・検査ツールなどがあり、脆弱性の発見・事前検知ができます。WAFを導入することで、外部からの不正な攻撃からWebアプリケーションを守ることも出来ます。
しかし、それで本当に万全でしょうか? いえ、そうは思いません。根底として大切なのは、エンジニア自身がWebセキュリティの正しい知識を持ち、安全なアプリケーション開発を行うことであると考えます。
Webアプリケーションエンジニアの皆さん、今改めてWebセキュリティを一緒に見直しませんか。本セッションでは、Webアプリケーションエンジニアが遭遇しやすい脆弱性の概要と危険性、そして対策方法についてお話します。
「クリーンアーキテクチャ」とは、DDDの文脈における「ドメインモデル」をシステムの中心にすえ、「入力」「永続」「出力」などの多方面で抽象化を行うことで、高度に変化への強さを獲得できるアーキテクチャです。昨今の変化の早さに対応するべく「アジャイル開発」や「マイクロサービス」が叫ばれているように、「クリーンアーキテクチャ」もまた日増しにその注目度は上がっているように感じます。
しかし、やや取っつきにくいアーキテクチャであることからか、現状参考になる資料が無数に転がっているというわけでもありません。そこで、エキテンで現在Laravelベースで開発中の新しい予約システムを題材に、実際にアーキテクチャを形作っているコンポーネントの紹介や、開発する上で行ってみたちょっとした工夫、開発フェーズにおける現場の生の声などをお話しようと思います。
PHPスクリプトの実行時には「コンパイル」と呼ばれる処理が行われ、スクリプトはZend VM(PHPの仮想的なCPU)の命令列に変換されてから実行されます。このZend VMは本物のCPUと似た命令も持っていますが、本物のCPUではあり得ない命令も持っています。その一つが例外処理に関わるものでしょう。
本講演では、例外処理をZend VMはどのように実現しているのか、Zend VMと本物のCPUとの違いは何か、といった実装の詳細をPHPのCソースコードを交えて紹介します。
中学生の頃にMSXというパソコンのCPUであるZ80のプログラミングを体験していました。
その約25年後、2016年にPHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80ベースであり、エミュレータで実装されていたのはまさにZ80の命令だったのです。この体験で、エミュレータがハードウェア仕様をソフトウェア的に表現したものであることを理解しました。
そしてさらにその3年後。名著「CPUの創りかた」で紹介されているCPU、TD4を実装し衝撃を受けました。そこに見たCPUは電気回路として表現された状態機械でした。
このトークではPHPでTD4のエミュレータを実装し、マシン語実行環境、エミュレータの対象、そして電気回路としてのCPUがどの様に動作するのかをメモリアクセスを中心に解説し、CPUの魅力をみなさまにお伝えします!
Quality Assurance 各種ツールについての紹介をします。
コーディング規約チェック・静的コード検査・テストツール・リファクタリングを中心に、あまり着目されてない数多のツールを俯瞰します。
コーディングやレビューでの参考にしてもらえればと思います。
章立ては以下の予定です
取り上げる予定のツール·用例は、
phan / phpstan とプラグイン / psalmとスタブ、 infection、rector、slevomat/coding-standard、roave/you-are-using-it-wrong …