Nuxt.js + Netlify + ヘッドレスCMS「microCMS」のJAMstack構成でコーポレートサイトをリニューアルした話をします。
この構成で開発することによって、サイトの表示速度の改善、UXの向上、開発スピードの向上に繋がりました。
また、microCMSは管理画面上でユーザの操作に必要な部分だけを見せるような構成になっており、ユーザ目線でもとても便利だと思います。
ユーザ投稿型の音声配信サービス内のひとつの機能として、あるユーザにとって好きな投稿をレコメンドすることになりました。
分析の結果、「好きな投稿=よく聴く投稿に似ているもの」であるだろうと仮定し、似ている投稿とは何なのかの研究が始まりました。
投稿データは音声の波形データであるので、その音声データを解析して特徴ベクトル化し、それを用いて似ている投稿を学習により推定することにしました。
そして最終的に、音声知識が皆無である中、音声データの解析手法やベクトル化手法とその実装について試行錯誤し、最終的にはサービスにそのまま組み込むのではなくGCP上でマイクロサービス化することで疎結合なシステムを作り上げました。
これは、Pythonを用いて、音声知識がゼロの状態から、数多の音声データを聴き様々な手法を試し学習させマイクロサービスを完成させた、PHPerによるトークとなります。
具体的には以下のような内容を予定しています。
基本的にPythonを使って実装しており、PHPの話は一切出来てきません!
想定している対象者
話さないこと
ユーザ投稿型の音声配信サービス内のひとつの機能として、あるユーザにとって好きな投稿をレコメンドすることになりました。
分析の結果、「好きな投稿=よく聴く投稿に似ているもの」であるだろうと仮定し、似ている投稿とは何なのかの研究が始まりました。
投稿データは音声の波形データであるので、その音声データを解析して特徴ベクトル化し、それを用いて似ている投稿を学習により推定することにしました。
そして最終的に、音声知識が皆無である中、音声データの解析手法やベクトル化手法とその実装について試行錯誤し、最終的にはサービスにそのまま組み込むのではなくGCP上でマイクロサービス化することで疎結合なシステムを作り上げました。
これは、Pythonを用いて、音声知識がゼロの状態から、数多の音声データを聴き様々な手法を試し学習させマイクロサービスを完成させた、PHPerによるトークとなります。
具体的には以下のような内容を予定しています。
基本的にPythonを使って実装しており、PHPの話は一切出来てきません!
想定している対象者
話さないこと
新規サービスの立ち上げに伴い新しいチームが発足しました。
これまではデータベースの設計であったりAPIエンドポイントの設計であったりはもちろんしっかりとやってきましたが、恥ずかしながらアプリケーションコード自体の設計はしっかりとはやってきませんでした。
ファットなコントローラーにテストも不十分という環境が当たり前のなか、新しいチームでの開発が始まるにあたり、せっかくなら良い設計のサービスにしようと思いたちました。
設計指針として様々な選択肢がありますが、今回はクリーンアーキテクチャを採用することにしました。
私自身も含めて設計に明るいメンバーはおらず、リリース日も決まってしまっているなかで、新たな「設計」を取り入れることをチームに受け入れてもらうために奔走し、挑戦しました。
これは、ひとりの設計初心者であるPHPerが、設計初心者チームに受け入れてもらうために取り組んだことに関するトークとなります。
具体的には以下のような内容を予定しています。
チームに受け入れてもらうために行ったことがメインで、設計手法自体はサブになる予定です。
PHPの話も少しだけ出てくると思います。
想定している対象者
話さないこと
新規サービスの立ち上げに伴い新しいチームが発足しました。
これまではデータベースの設計であったりAPIエンドポイントの設計であったりはもちろんしっかりとやってきましたが、恥ずかしながらアプリケーションコード自体の設計はしっかりとはやってきませんでした。
ファットなコントローラーにテストも不十分という環境が当たり前のなか、新しいチームでの開発が始まるにあたり、せっかくなら良い設計のサービスにしようと思いたちました。
設計指針として様々な選択肢がありますが、今回はクリーンアーキテクチャを採用することにしました。
私自身も含めて設計に明るいメンバーはおらず、リリース日も決まってしまっているなかで、新たな「設計」を取り入れることをチームに受け入れてもらうために奔走し、挑戦しました。
これは、ひとりの設計初心者であるPHPerが、設計初心者チームに受け入れてもらうために取り組んだことに関するトークとなります。
具体的には以下のような内容を予定しています。
チームに受け入れてもらうために行ったことがメインで、設計手法自体はサブになる予定です。
PHPの話も少しだけ出てくると思います。
想定している対象者
話さないこと
第4のWebサーバーといわれる LiteSpeed ですが、PHP の実行の仕方が ApacheModule、cgi/fcgi、fpm とも違った独自の SAPI になっています。
LiteSpeed Web サーバーとPHPプロセスはそれぞれ独立プロセスでありながら、うまく連携しながら動作をしています。
この独自の LiteSpeed SAPI を使って、どのようにWebサーバーとPHPプロセスがやりとりしているのかを深堀りしていきたいと思います。
グリーグループのリミア株式会社で開発を担当しています。
リミアでは、aws ec2の上でfpmを乗せています。
開発速度向上のため、aws ecsに移行しようとしています。
しかし、様々な問題にハマりました。
ハマった問題と解決方法について発表します。
PHP の仕様はどうやって決められているかご存じですか?
PHP の仕様は PHP のコミュニティに参加する人々によって作成される RFC にて議論、決定されています。
この RFC は技術ブログや Twitter などでときどき取り上げられますが、実は自分で読んだことがない方は多いのではないでしょうか。
RFC は大抵の場合、我々より PHP に精通した人が提案し、議論し、要否を決定しているため、RFC を読み、その提案理由を考えることは、PHP 上級者への一歩です。
本セッションでは、そんな PHP の RFC について、基礎知識と読み方を紹介します。
「PHP の仕様は RFC によって決められている。」これは PHPer ならご存知かと思います。
技術ブログや Twitter でときどき取り上げられる RFC ですが、実は自分で読んだことがない方は多いのではないでしょうか。
RFC は大抵の場合、我々より PHP に精通した人が提案し、議論し、要否を決定しているため、RFC を読み、その提案理由を考えることは、PHP 上級者への一歩です。
しかし、RFC は英語で記述されていますし、そもそもの仕組みを理解していない場合はどこから手をつけていいのかわからないなど、ハードルが高くないでしょうか。
本セッションでは、そんな PHP の RFC について、他の言語とも比較しながら、仕様が決定されるまでの基本的な仕組みや、読み方を紹介します。
働き方改革、すすんでますか?
子供がいると、どうしても母親に無理がかかってしまいがちですよね?しかもシングルマザーという不利な境遇。
そんな中、わたしは約1年前に転職してから、かなり柔軟な働き方ができるようになりました。
子供がいて全国各地に飛び回りながら楽しく仕事をしている母さんエンジニアはいったいどんな働き方をしているのか?
小難しいソースコードの話は出てきません。
女性も男性も、子供がいる方もこれからと思っている方も、まだまだ自分には子供なんてムリなんて思っている方でも、休憩がてら聞きにきてください。
「AWS Fargate の上で PHP (Laravel/Lumen) でAPIを提供する」
「Amazon API Gateway 経由で Lambda Function を Web APIとして提供する」
巷ではよくあるパターンですよね。
ではみなさん、これらを組み合わせて使ったことがあるでしょうか?
実際に使ってみると、たくさんのメリットがあったのでご紹介します。
※ Lambdaの話は出てきません
OpcacheはコンパイルされたPHPのソースコードを共有メモリにキャッシュすることで、PHPの実行スピードを上げてくれる拡張です。現在のほとんどのPHPアプリケーションはOPCacheが有効化された環境で動いていると思います。さらに、PHP7.4ではOpcacheのpreloadが導入され、OPCacheは今後ますますの活躍が期待されています。
本トークでは、このOPCacheの仕組みを基本から解説することで、どのようにPHPの速度向上が行われているのか、また各種設定値がどのように速度に影響するのかを解説します。OPCacheの中身が知りたくてしょうがない方々に贈ります。
PHP 7.4からFFI(Foreign Function Interface)拡張が導入可能になりました。FFIによりネイティブの共有ライブラリ呼び出しが簡単になったので、PHP-GTKと組み合わせることで、PHPでデスクトップアプリケーション作成が捗ります。
本トークでは、PHP-FFI、PHP-GTKの簡単な使い方から解説して、PHPでもデスクトップアプリケーションが作れる!そんな可能性をお見せできればと思います。
もしも、PHPのソースコードが読めたら....。var_dumpがどんな風に実装されているのか、explodeはどのように動いているのか、Closureオブジェクトの実装はどうなっているのか?そんな疑問を、自分で直接見て理解することが出来るようになります。 でも、いざ読もうと思っても、C言語のソースコードを読むのは難しそうだし、そもそもどこから手を付けていいか分からないです。
本トークでは、PHPのソースコードを読みこなしていく方法を、手順化して丁寧に解説します。PHPのソースコードを読むことが、一部玄人の特権ではなく、誰でも出来るんだと感じていただきたいです。
ユーザのログイン、リダイレクト後のエラーメッセージの表示等、現代のウェブアプリケーションで多用されているセッションですが、セッションとは何かと聞かれた時に正しく答えられますか?
初心者に近いPHPerがセッションを多用すると、中堅エンジニアから「セッションは危ないから多用しないように」とアドバイスされることも多いと思いますが、それは何故でしょうか?
本トークでは、ウェブアプリケーションにおけるセッションについて、その正体を分かりやすく解説します。また、セッションの正体を知ることで、ウェブアプリケーションのアーキテクチャーに対してセッションが及ぼす影響についても解説します。セッションにまつわるアレコレを明らかにすることで、初心者と中堅エンジニアの間に存在する知識と経験の差を少しでも埋めることが狙いです。
プログラミング言語を実装したことはありますか?
本トークではPHPでPHPを実装していくことで、プログラミング言語が動く仕組みを紹介していきます。
静的解析でもよく利用されているnikic/PHP-Parserを使うと、字句解析・構文解析をパスして処理部分に集中してPHPを実装できます。
PHPを再実装するだけではなく処理内容を変えて「自分だけのPHP」を実装することもできちゃいます。
また、プログラムを表現するオブジェクトであるASTを扱えるようになると、静的解析などWebサービス開発の幅も広がります。
例えば、PhanやPHPStanなどの静的解析ツールやそのプラグインを自作できるようになったり、より堅牢なPHPの世界を作ることができます。
本トークではプログラミング言語を実装する楽しさを伝えるとともに、ASTに慣れ親しむきっかけになれば良いと思います。
我々が普段慣れ親しんでいるアプリケーションの最新の状態をデータストアに記録するという考え方をステートソーシングと呼びます。
対してイベントソーシングは、操作による状態の変更差分をイベントとして記録し、最新の状態を過去のイベントによる変更を積み重ねた結果として捉える考え方です。
PHPにも、Prooph、Broadway、EventSauceなどイベントソーシングに基づくアプリケーション作成を支援するライブラリが存在します。
本セッションではイベントソーシングの考え方を解説した上で、EventSauce (https://eventsauce.io/) を利用した実装についてご紹介します。
お話ししたいこと
話さないこと
みなさんは「バーチャルYouTuber(VTuber)」と呼ばれる人たちをご存知でしょうか?
3Dモデルやイラストのキャラクターを用いて、バーチャル世界から動画投稿・配信をする人たち。
その撮影方法は人によって様々です。
モーションキャプチャー専用機材を使う人。VR機材を使う人。Webカメラや、iPhoneのカメラでフェイストラッキングをする人。
Unity、Unreal Engine、FaceRig、Live2D、JavaScript…いろんな技術が……
PHP…我々のPHPは?みんな大好きなPHPは…?
PHPでも…PHPでもできるもん…できるもん…!
そんな熱い想いからはじまる物語をお届けします。
きっかけは、オフィスの会議室で行った、PHPerKaigi2019の発表の上映会でした。
上映会後に参加者から様々な意見が飛び交い、活発な議論が生まれたことから
「デザインパターンの話に興味がある人、結構多いのでは?」という気づきを得て勉強会を開始することにしました。
勉強会を実施して継続していくにはいくつか工夫が必要だと思います。
・主催側の負担を減らす
・参加者がまた来たいと思える内容にする
社内勉強会を開いてみたいがなかなか開始できないという方や、始めてみたが、なかなか長続きしなかった、
といった方を対象に、スモールステップから始める社内勉強会の進め方についてお話できればと思います。
皆さんは勉強会を主催してみたいと思ったことはありませんか?
私は不定期でPHPで学ぶデザインパターンの勉強会を開催しています。
きっかけは、オフィスの会議室で行った、PHPerKaigi2019の発表の上映会でした。
昨年のPHPerKaigiに参加し、非常に勉強になったので、社内のメンバーにも内容を共有したいと思いました。
上映会は大盛況で、参加者と発表内容について様々な議論を交わしていくことで、より理解を深めることができました。
このことがきっかけで、「自分が学ぼうとする領域を他の人と一緒に勉強することで、より効率的かつ楽しみながら勉強できるのではないか」と思い、
上映会でも盛り上がっていたデザインパターンをPHPで学ぶ勉強会を開催することにしました。
この発表では、勉強会を主催しようなんて思いもしなかったエンジニアが、自主的に勉強会を開くようになるまでのマインドの変化と自身の環境の変化についてお話できればと思います。