「抽象」という言葉に抵抗を感じるプログラマは多くいると思います。抽象的=フワっとしていて理解しづらいという抵抗や、抽象化=プログラムを分かりづらくするという抵抗など。では、プログラムを書く上で、抽象化は不要なのでしょうか?
この講演では、私達人間にとっての抽象化と、プログラミングにおける抽象化について掘り下げ、プログラミングにおいて役立つ抽象化がどのようなものなのかをお話します。
先日、AWSのLambdaでPHPがサポートされました!
しかし…ネイティブサポートというわけではなかったですね(残念)まあ、色々な都合はわかる所です、PHPのバージョンが固定されないという意味ではよいですよね!
※ 別に5.4に長いことロックされていた某サービスに文句をいっているわけではない
それはそうとして、発表直後こそ大喜びした私ですが、公開されたコードを読んで少々うーん?と思う所もありました。
「これはたしかにPHPだ、PHP-ismになるようにしてある。でも、こうしなくてもよいのでは…?」
他の言語バインディングなどを確認し、PHPならではの設計となっていることに疑問を覚えた私。「こういうふうにしたほうが良いのでは?」というお話をいたします。
また、普通のウェブアプリを普段書く方向けに、構造(使い方ではない)や「一見微妙に見えるこの実装」がなぜ良いのか(勝手なエスパーで)等をお話してみたいと思います。
注意: このトーク自体がLambdaを使う上で直接的に役立つかというと、多分役立ちません!
PHPにはhttpdがない(諸説あります)
そうすると様々な方法で、Httpd(ApacheやNginx)と付き合っていく必要がありますね、
そのあたりの設定についてコピペで済ませる人が多いですが、それってどうなのっておもいませんか?(えっ、おもわない?)
実は「よく知られている(検索で出てくる)設定はセキュリティ的にまずい」、「あるフレームワークだとなんか動かない」とか、しばしば見かける話だったりします。
様々な設定項目を確認して、それぞれの意味を見直してみませんか?
秘伝のconfからの脱出を図りましょう!
私には「Packagist監視おじさん」として活動する顔があります(自称です)。@call_user_funcというTwitter botで、Packagistに投稿されるパッケージを日々監視しています。
Packagistに日々大量に登録されるライブラリですが、私が最近気になっているパッケージをたくさん紹介いたします!
※100連発とかいてありますが、これは「たくさん」という意味で当日100連発になるかは不明です!
聞いたこともない、みたこともない、日本では知られていない、本当に流行っているとは思っていなかった様々なパッケージに付いてご紹介いたします。
PHPがまた早くなった!そういう話結構多いですよね。僕もぐんぐんと伸びるグラフやベンチを貼って「PHPははやくなった!他の言語に負けていない!」とか言ってみる事もしばしば(?)あります。
でも、そうなのかな?本当にPHPって速いのかな?本当に速かったら、皆がgoとかに民族移動しなくてもよいのでは…?(無論、速い以外の理由もあるのでしょうが…!)
いやいやでも結構PHPも速い(ような気がする)し…。
ということでPHPでよく見る「ベンチの欺瞞」あるいは「現実との乖離」、「先入観」についてかんがえてみませんか。
みなさんPHPでサービス提供していますか?何をつかって提供していますか?
Nginx+php-fpm?h2o+php-cgi?IIS+php-fpm?swoole?builtin server?HHVM?Roadrunner?PHP-pm?いやいや、Apache+mod_phpですよね?あるいは諸般の事情でapache+php-cgiかもしれない。
Apache+mod_phpはいろんな人が「いまどきApacheとかないわ〜」とか「もうそもそも考えてもいなかった」とか言っています。でもどう考えてもApache+mod_phpで8割のケースは十分ですよね??
(勿論、2割のケースにいらっしゃるかもしれません。勿論そうなら泣く泣く(??)Apacheを使わないのは正しい!!)
これらを比較して、mod_phpを見直してみましょう!
唐突ですがフレームワーク(以後FW)は古代存在しませんでした、よって昭和の人間は自分でFWを書いていたと伝えられています(諸説ある)。
とはいえ今は<?= $php_fw_list; ?>といった素晴らしいFWがありますよね。平成も終わる今、タイトルのようにオレオレフレームワークを書く意味があるのか?その疑問は一理あります。
所でFWとは枠組みで、枠組みは内を支えるものです。つまりFWを書く事で自分の内面を知ることに繋がります。そう、自分を知るためにFWを書くべきです!(?)
平成の終わり、オレオレフレームワークを書き、自分を知りましょう!そして…!
*
弊社はクチコミ掲載数日本最大級を誇る結婚準備クチコミ情報サイトのウエディングパークをはじめ、ブライダル専門の5つのメディアを自社で開発・運営しています(主要技術:PHP/Laravel/MySQL/Goなど)。約1年前にQAチームを立ち上げ、不具合を前年度比で半減させることをミッションに日々活動を行っています。特に2004年から運営するウエディングパークでは、長く運用するWebサービスだからこその課題や悩みが多くありました。その中でQAチームとして取り組んだことから成功したこと・失敗したことなどをリアルにお話しさせて頂きます。
人気沸騰中のLaravel。どんどん追加される新機能。そして、Laravel自体のバージョンアップ(5.3⇒5.4⇒5.5⇒5.6⇒5.7)。
Laravel内で変化を追従しながらも、人知れずレガシー化している自身のコードの書き方。
例えば、私の書式『5.3』、現行『5.7』。
そして、5.3と5.7のバージョン間の互換性のロスト。
この互換性の問題にどう立ち向かえば良いか。ソフトウェア設計の互換性を考慮した私の提案と問題提起を行います。
リファクタリング、ナビゲーション、ファイルの移動、PhpStormをマウスを使って操作していませんか?
マウス、トラックパッドは窓から投げ捨ててしまいましょう。
マウスフリーになるPhpStormの知ってトクするショートカット、並びに便利技100選を紹介します。
このセッションを受講すれば明日から開発速度が100倍くらいになる!かもしれません。
モバイルアプリ向けのAPI開発、今となっては当たり前の開発要件です。しかし、一般的なWebアプリケーション開発しか経験が無かった我々にとっては難しい課題でした。
プロジェクト開始から1年、ホームページ作成サービスグーペのiOSアプリは、2019年1月中旬にリリースする運びとなりました。初めてのRESTful API, 技術選定, 既存サービス向けのモバイルアプリ開発ゆえの課題, クラス設計, セキュリティ対策, プッシュ通知, 認証, チームコミュニケーションなど様々な課題がありました。
本セッションでは我々が経験した課題をどのように解決し何を学んだのか、プロジェクト全体を通じてご紹介したいと思います。特に今後新規でモバイルアプリを開発されるAPI開発者におすすめです。
みなさん試行錯誤してPHPサービスを止めないように努力されていると思いますが、
現実世界上でSLA100%を完全保証することは不可能です
サービスを止めない努力の先の、止まった時に如何にしてPHPを最速で復帰させるのか、僕の考えをお話します
みんながお世話になってるPHP、そのPHPを助ける方法を思考しましょう
Hackには、HTTPの処理に関してPSR-7のように相互運用を可能にするためのインターフェースが存在します。
PSR-7と異なるインターフェースはなぜ用意されたのか、
PSR-7とHackのインターフェースの違いはなにか、
Hackでの実装例と他言語のHTTP処理を比べながら、リクエストレスポンスの表現について理解を深めるセッションです。
マイクロサービスアーキテクチャを実現するために利用される分散型メッセージングミドルウェア。
PHPアプリケーションで導入している方も多いのではないでしょうか?
メッセージングミドルウェアの中でも大規模アプリケーションで導入事例も多いApache Kafkaには、
単純なメッセージングのほかにもストリーム処理を支えるKafka Streamsやデータハブとして機能するKafka Connectなどがあります。
本セッションではKafka Streamsに焦点を当てて、
ストリーム処理のアーキテクチャ設計についてPHPアプリケーションを支えるデータ処理の入り口へ案内します。
3ヶ月でphp5.5のサイトを7.2へバージョンアップリリースした過程の記録と現在のサイトの変化、そこから得た今後の対策についての3つの点からお話しします。
・phpバージョンアップでのプロジェクト体制や取り決めたルールと開発過程での数々のハマった課題を掘り下げリリースまでこぎつけた記録についての紹介。
・リリース後のサイトの品質やパフォーマンスの変化、当時同様にphpバージョンアップをしていた姉妹サイトとの比較や事例紹介。
・php7.3や今後のphpバージョンアップを見据えてやったこと、事前にやりたかったことの共有。
データベースの寿命はアプリケーションより長い。
皆さんも感覚的に理解していても、では実際にどのように付き合っていけばいいのでしょうか。
そこで誰もが経験のあるアンチパターンを題材に正しい設計について紐解いていきます。
そんなヒントを散りばめた濃厚なデータベースのノウハウをお届けします。
今回のアンチパターンは
の3点をお届けします!
みなさんはどのRDBMSをお使いですか?
PHPといえばMySQLという時代から変わりつつあり、PostgreSQLを採用されるケースも目立ってきました。
では実際にPostgreSQLを使うと何が嬉しいのでしょうか。
MySQLと比べたPostgreSQLの基本的な違いやメリットとデメリット、そして最新機能についてお伝えします。
そんな人達のための明日から使いたくなるPostgreSQLの話をします。
オミカレは2011年からスタートした9年目のPHP製Webサービスです。
9年前はモダンなプロダクトでしたが今では多くの技術的負債を抱えています。
このままでは駄目だ!と決意して一大リファクタリングプロジェクトを行っています。
そこで実際にどのようにサービスの開発、稼働を止めずにリファクタリングをしているか。
次のような知見を余すことなくお伝えします。
みなさんはレガシィだからと言って諦めてませんか?
一緒にこの先、10年戦えるプロダクトを作るためのリファクタリングにチャレンジしていきましょう。
弊社はクチコミ掲載数日本最大級を誇る結婚準備クチコミ情報サイトのウエディングパークをはじめ、ブライダル専門の5つのメディアを自社で開発・運営しています(主要技術:PHP/Laravel/MySQL/Goなど)。サービスの成長に伴い開発体制が50名規模と拡大する中で、開発スピードの向上とプロダクト品質の担保するため、約1年前にエンジニアが中心となってQAチームを立ち上げました。今回は、「チーム立ち上げ〜現在」まで、エンジニアならではの視点で課題解決に取り組んできたこと(自動テスト、組織作り、啓蒙活動、障害分析)をお話しします。
「『レイヤードアーキテクチャ』の名前は聞いたことあるけど敷居が高そう……」といった方に向けて、実コードと一緒に各レイヤーの役割/考え方や、Laravel での実装における tips 等をお話しします!
※(Laravel に限らず)web フレームワークを使ったことがあり、オブジェクト指向プログラミングの基本概念(class, interface 等)を理解している方を想定しています。