フレームワークに備わっているようなクエリビルダや ORM、便利ですね。
一方で「この SQL 文はクエリビルダの機能では表現できないな」「長年使われてきた秘伝の SQL 文があってな......」といったケースで生の SQL 文を使わざるを得ない、というケースがあるかもしれません。
そこで今回は以下の 3 つの手段で生 SQL を扱う方法を説明します。
不具合が確認され、丸一日かけて調査したら原因はうっかりミスによる構文エラーだった.......そんな経験ありませんか?
「そんなうっかりミスを実行する前に気づけたらいいな」そう思ったあなたにお勧めするのが静的解析です!
本トークでは PHP 静的解析ツールの一例として PHPStan を取り上げて、それが使えるとどんなことがいいのかをお話します。
フレームワークのドキュメントに従って、あるいはプロジェクトの既存のコードに従ってファイル上部に書いた「namespace」「use」といったキーワード。
この意味、正しく理解していますか?
「ディレクトリ名と対応させて書くやつ」「他の言語でいう import みたいなやつでしょ?」みたいな認識をしていませんか?
実は PHP の機能としては namespace(名前空間)とディレクトリ名、ファイル名には一切の関係はありません!
「じゃあ、なんで require とかを書かずに他のファイルに定義したクラスを使えているの?」と思ったあなたに、その仕組みと、それらを支えている存在をお教えします。
2人月くらいの工数がかかる機能開発を1人で担当することになりました。
必死にコードを書いた結果、気づけば1回で80ファイル分の変更がある地獄のような巨大プルリクが出来上がっていました。
レビューをすり抜けたバグが障害を発生させてしまい、どげんかせんといかん!となった時に改善しなければならないと決意しました。
その結果、リリースを細かくできたり、障害の発生が抑えられたりと良いことづくめで開発品質を上げることができるようになりました。
このLTでは、PRを分割した方法や分割することの得られた効果についてお話します。
PRを小さくしてみんなで幸せな開発ライフを送りましょう。
GraphQL はクエリ言語を用いて、クライアントが必要とするデータを API に 過不足なく伝達できる という、 従来の REST API では実現が難しい機能 が利用できます。
GraphQL はさまざまなプログラミング言語でサポートするためのライブラリが用意されており、 PHP 用のライブラリも用意されています。
本トークでは、 GraphQL の基礎を説明したあと、 Laravel で GraphQL サーバーを実装する方法を紹介します。
Laravel の GraphQL サーバーライブラリとして、 Lighthouse を利用します。
GraphQL の基礎を学び、 API サーバーを実装してメリットを体感してみませんか?
2024年は 各地で PHP コミュニティのカンファレンスが開催されます。
PHPカンファレンス小田原2024 もその一つです。
私はこれまで 一般参加者として カンファレンスに参加してきました。
2024年2月開催の PHPカンファレンス関西2024 では、初めて実行委員という 運営側として 参加します。
本トークでは、 PHPカンファレンス関西2024 の実行委員の経験をもとに、 カンファレンスの舞台裏 について紹介します。
あなたもカンファレンスのスタッフになって、舞台裏での物語をつむいでみませんか?
Laravel では、 ファイル名と namespace を対応させることで、 require 文を書かずとも別ファイルに定義されたクラスを読み込むことができます。
これは、 PHP の autoload という機能で実現されています。
このトークでは、 PHP の autoload の概要について 5分で紹介します。
autoload の例として、 Laravel でどのように別ファイルのクラスを読み込んでいるかも簡単に説明します。
5分という短時間 で autoload についてなんとなく理解してみませんか?
開発をやっていると、ソースコードという「中見を知る」のは便利、もしくは逃げられません。
そして、Web系の開発ではOSS=部外者のコードにお世話になっている事がとても多いです。
──つまり、「スラスラとOSSなコードを読めたら、問題の解決の質や早さが向上する」と言えます!
しかしながら、初めてOSSの中見を読んでいくのには、いくつかの難しさもあると思います。
このトークでは、PHPのOSSパッケージを実例として取り上げ、そうした壁を乗り越えて「やってみる」ためのコツや情報の使い方を共有します。
少し大きめのコードでも臆せず読んでいけるようになるぞ!!
「テストがないコードはレガシーコードだ!」
Webアプリ開発において、テストコードが書かれることは一般的になりました。
ですが、テスト完走までにかかる時間は適切でしょうか?
テストにかかる時間は生産性に直接的な影響を及ぼす重要な要素です。早ければ早いほど良い。
本トークでは、PHPUnitで書かれているテストを高速化するテクニックについてお話します。
速さは正義。Googleもそう言っている。
Webページの表示速度はユーザ体験に直結し、ひいてはビジネスKPI (購買率、アクティブ率、解約率、etc...) にも影響を及ぼします。
本トークでは、Instagram分析ツール 「SINIS for Instagram」 のページ表示速度を約1/3にした事例をもとに、どうやって課題を見つけ、何の改善を試み、その結果どうなったのかについてお話します。
だいぶ市民権を得てきたフリーランスという働き方。
Web開発者界隈でも人気のキャリアになりつつあると感じます。
本トークでは2019年にフリーランスになって4期目を迎え、酸いも甘いも経験してきたわたくしがフリーランスのWebエンジニアとして働くということのメリット・デメリット、理想と現実についてお話します。
みなさん様々な環境にPHPのアプリをデプロイしていることと思います。
PHPコミュニティでは、Azureを使った事例はあまり公開されていないように思います。
AzureにもPHPをデプロイするのに適した良いサービスがたくさんあるのですが、「Azureはどこから手をつけていいかわからない...」といった話を聞くことも多いです。
そこで、このセッションでは、AzuereでPHPを含む今時なWebアプリケーションを動かすことのできる様々な環境を比較しつつご紹介しようと思います。
想定する聴講者
PHPをAzureで利用する環境に興味がある方
Azureには興味があるが、どこから手をつけて良いかわからない方
Azure初心者〜中級者の方
現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。
このトークでは私たちが愛するPHPをスタート地点にして、「CPUによる"プログラム実行"」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。
コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!
PHPでメールサーバからメールを取り込みたいと思ったことはありますか?
メールと言えばPOP3/IMAP4ですのでPOP3やIMAP4を使えば良さそうですが自分でPOP3/IMAP4を喋るのはややシンドイですね。
このトークではPHPでメールをメールを取り込むにはどうしたら良いか、そして最も広く使われているであろうメールサービスのGmailからメールを取り込む方法をお話します。
インターネット黎明期から存在するインターネットメールに放たれる自由奔放なメールは素手で立ち向かうにはやや手強い。
このトークがメールと戦うみなさんの力となることを祈っています。
Gmailからメールを取り込みたいと思ったことはありますか?
GmailはPOP3/IMAP4をサポートしているのでPOP3やIMAP4を使えば良さそうですがIDやパスワードは何を使えば良いでしょうか。
実はGmailはXOAUTH2という規格に対応しており、XOAUTH2を使ってWebベースの画面遷移でパスワードを取得することができます。
このトークではGmail + XOAUTH2を想定して以下の様なトピックをお話します。
なかなか情報が少ないIMAPやGmailのXOAUTH2対応ですので、このトークが同じ課題に立ち向かうみなさんの力になることを祈っています。
PHPのビルトインウェブサーバーを使ったことはありますか?
Laravelユーザーの方ならおそらく「php artisan serve」というコマンドで使ったことがあるかもしれません。
HerokuやAWS ECSのLaravelデプロイ時に「php artisan serve」を使用する例もちらほら見受けられますし、公式サイトでもこのようなサンプルが紹介されています。
しかし、php公式では本番環境での使用を禁止しています。
https://www.php.net/manual/ja/features.commandline.webserver.php
本トークでは、ビルトインウェブサーバーの注意点について実例を踏まえてその弊害についてお話しします。
PHPには公式野良含め数多の拡張が存在しています。
その中の一つに、プロセス制御を行うための公式の拡張機能であるpcntlがあります。
知られている使い方の一つには、Laravel Jobのタイムアウト処理やPHP-FPMでの利用があります。
このトークでは、pcntlの導入方法と実例を交えた利用方法について話します。
WordPressの機能の一つにブロックエディタというものがあります。
ブロックエディタはカスタマイズ性や柔軟性が非常に高く、デザインの編集など、管理画面上で殆どの対応が完結します。
ブロックエディタは管理画面上での編集のみならずコードベースでの管理もすることができます。
しかしながら、コードベースで管理する方法についてWeb上で検索すると不十分な公式ドキュメントしか見つかりません。
機能を十分に使うにはWordPress本体のコードを読むしかなく、ベストプラクティスのようなものも自分が知る限りでは存在していないようです。
今回のトークでは、実際に自分が初期導入から実装までやった経験を踏まえて、どのように開発していけば良いのかの一例をご紹介します。
想定対象者
当トークは、
聴取者にとって「自分は本を読むべきか、どう読書をすれば良いのか」を発見するヒントになることを目指します。
──本を読むのは良いぞ!!
それは何故でしょうか?
読書による学習方法には、例えば次のような特徴があると考えます
ここから色々な旨みが生じます
私自身は、こうした特性に助けられてきました。
実際、読書を通じて「壁を突破できた」ような経験をする場面が何度もあります。
当トークで、その想いや分析を共有できるでしょう。
「成長したい」「楽したい」を叶えたい人に聞いて欲しいです。
読書ができると何を得られ、どう活かすかを一緒に考えてみませんか?
NotionにはデータベースにCSVでレコードを一括投入するための 「CSV取り込み」 という機能が標準で搭載されています。
が、少なくとも2023年11月現在においては正直だいぶ貧弱な機能で、本当に最低限のことしかできません。
(例えば、インポートできるプロパティの種類が限られている、ページ本文はインポートできない、「名前」カラムの値が重複している行があると正常にインポートできない、など)
そこで最近、必要に迫られてPHPでNotionのデータベースにCSVをおインポートするフォームを自作しました。
このトークでは、このフォームの具体的な実装手順を、デモを交えつつサクッと解説します。