30分トーク

SQLServerの操作が辛い?それPHPでコマンドラインクライアント作れますよ?

hanhan1978 富所 亮

SQLServerの操作って大変ですよね。基本GUIのツールを使う必要がありますし。
MySQLみたいに、簡単にクライアントから接続できて、気軽にSQL発行出来たらなぁ...

それPHPで出来ます!
Readlineを使って、mssqlコマンドを作っちゃいましょう!

30分トーク

パワポの操作が辛い?それ PHP で自動化できますよ。

m3m0r7 めもりー

パワポを使用する業務、大変じゃありませんか?全スライドのフォントを整えたり、座標を調節したり、画像の配置を変えたり、本来の業務の時間を割いてやるのは時間がもったいないです。
そこで、自動化をしたいと考えたことはありませんか?でも VBA 難しいしな… と思う必要はありません。
そう PHP でパワポの生成や全スライドのフォントを整えたり、座標を調節したり、画像の配置の変更を自動化すればいいのです。
本セッションでは PHP でパワポのファイル生成をどのようにやるのかを解説します。

30分トーク

ワードの操作が辛い?それ PHP で自動化できますよ。

m3m0r7 めもりー

ワードを使用する業務、大変じゃありませんか?フォントを整えたり、画像の配置を変えたり、本来の業務の時間を割いてやるのは時間がもったいないです。
そこで、自動化をしたいと考えたことはありませんか?でも VBA 難しいしな… と思う必要はありません。
そう PHP でワードファイルの生成やフォントを整えたり、画像の配置の変更を自動化すればいいのです。
本セッションでは PHP でワードファイルの生成をどのようにやるのかを解説します。

30分トーク

エクセルの操作が辛い?それ PHP で自動化できますよ。

m3m0r7 めもりー

エクセルを使用する業務、大変じゃありませんか?方眼紙にして入力したり、セルの枠を調整したり、本来の業務の時間を割いてやるのは時間がもったいないです。
そこで、自動化をしたいと考えたことはありませんか?でも VBA 難しいしな… と思う必要はありません。
そう PHP でエクセルの生成やセルの調整などを自動化すればいいのです。
本セッションでは PHP でエクセルファイルの生成をどのようにやるのかを解説します。

30分トーク

MySQL、令和時代のレプリケーション

yoku0825 yoku0825

MySQLも8.0になって、5.xの頃とはだいぶレプリケーションの定石も変わってきたような気がします。

  • Non-GTIDなレプリケーションを(新規で)選ぶ理由ってある?
  • master.info, relay-log.infoがどっかいった?
  • Cloneプラグイン + GTIDでレプリケーションを増やすのが自動化できそう

令和時代のレプリケーション詰めて「令プリケーション」の現在を紹介します。
(このセッションは割とインフラ寄りです)

30分トーク

CTEとWindow関数で何ができるか考える

yoku0825 yoku0825

MySQL 8.0にはついにCTE(WITH句)とWindow関数が実装されました。
とはいえ「今までなかったもの」は使い方も想像がつかぬもの、どんな用途に使えるのか、そもそもCTEやWindow関数の名前をここで初めて聞いた! みたいな人もいるかも知れません。

それぞれの構文の詳解/説明や「こんなことに使えるんじゃない?」のような提案をしたいと思っています。

採択
2020/02/10 11:25〜
Track A
30分トーク

PHPでつくるインタプリタ入門

budougumi0617 清水 陽一郎

パーサーやインタプリタを作ってみたいと思ったことはありますか?私はあります。
パーサーを作りコードをパースする一連の流れを実装することで、
コンパイラやインタプリタの気持ちを理解できるようになれば、プログラミング言語に対する距離をより縮められると思っています。
「PHPで何を作ろう?」と思ったPHP初心者の私は、この機会にGo言語のインタプリタをPHPで実装することにしました。

本発表では、PHPでGo言語のインタプリタを作成した話をします。
この発表を通して、以下のことを伝えたいと思います。

  • インタプリタを作ると何が得られるのか?
  • 字句解析、構文解析、評価器とはなにか。それぞれの役割
  • 抽象構文木とPHPでの実装方法
  • デモ
  • 今までGoを書いていたPHP初心者がPHPでインタプリタを書いてみて

対象の言語仕様によってパース処理は異なりますが、インタプリタを実現するまでのステップや流れは同じになるはずです。
この発表を通して聴衆のみなさんが自分の興味がある言語のインタプリタを作り始められるようになるのが、本発表のゴールです。

採択
2020/02/10 14:45〜
Track A
30分トーク

forteeに脆弱性診断をかけてみた

cakephper cakephper

phperkaigiを支えているイベント管理システムfortee。
我々はforteeのソースコードを入手することに成功。そこでforteeに対して脆弱性診断を実施、その結果とは・・・

forteeの開発者 @tomzoh にVAddyによる脆弱性検査の実施を依頼されたため、ローカル環境にforteeを立てて検査してみました。
本発表では、脆弱性検査の種類、検査内容、実際の検査のデモ、検査しやすい箇所としにくい箇所の紹介、
フレームワークを使っていても脆弱性を生みやすい箇所の紹介を行います。
あまり馴染みがない脆弱性検査を少しでも体験して、セキュリティテストは一般的なテストと同じように重要であると理解してもらうのがゴールです。

採択
2020/02/10 10:40〜
Track A
30分トーク

E2Eテストに向き合う

sizuhiko 岸田健一郎

E2Eテストは"遅い"や"不安定"という理由で実施を諦めていませんか?
また、E2Eテストは大変すぎる、と思っていませんか?
おおくの現場でE2Eテストの範囲や実施内容に対する理解は、単体テストや結合テストと比べて曖昧になっているような気がします。
このセッションでは、Testing Pyramidと、その中でもE2Eテストの範囲や実施内容に対する理解を深め、どのようなツールを使うと良いのか?
といったプラクティスを解説していきます。

30分トーク

Protocol BuffersでAPIに型を導入する

sizuhiko 岸田健一郎

PHPでAPIサーバーを作っていますか?
APIの仕様書は書いていますか?何を書いていますか?
たとえばJSONデータをPOSTするときに、JSONデータの仕様書も書いていますか?
APIサーバーをPHPで作り、フロントエンドをTypeScriptで作っていれば型を導入できますが、APIで送受信するJSONデータについて共通した型定義は導入できません(JSONスキーマを使っていれば別ですが)。
Protocol Buffersを使うことで、APIで送受信するデータに型を導入できるようになります。
このセッションでは、Protocol Buffersの紹介から、実際にPHPやTypeScriptでどのように使うのか、サンプルコードを交えて解説します。

1
30分トーク

ライブラリに振り回されないライブラリの使い方

strtyuu 吉田あひる

みなさんのアプリケーションはたくさんのライブラリの力を借りて実装されていると思います。
しかし、安易にライブラリに依存した実装をすると、ライブラリをアップデートしようとしても変更箇所が多すぎてなかなかアップデートできないなんてことがままあります。
では一体どうですればいいのでしょうか?ライブラリを使わずに実装すればいいのでしょうか?

いいえ、そんなことはありません。
このトークでは、ライブラリへの依存を極力抑えたままライブラリを活用する方法について解説します。

1
採択
2020/02/10 16:15〜
Track A
30分トーク

知らないWebアプリケーションの開発に途中からJOINしたとき、どこから切り込むか?

k1LoW 小山健一郎

エンジニアをしているとプロジェクトに途中からJOINすることはままあると思います。
前提条件はいろいろあるとは思いますが、
今回、新しいプロジェクトに途中からJOINしたので、
そのとき私がどのように切り込んでいったのかを共有したいと思います。

具体的には

  • サービス概要をスコープを絞って把握する
  • データベースの設計をスコープを絞って把握する
  • 開発環境を手に入れる
  • リポジトリの雰囲気を感じる
  • ソースコードを読み解く

ということについてお話したいと思います。

本発表のゴールは、本発表をきっかけに「私ならこうする」「私はいつもこうしている」「私はいつもここに気をつけている」ということをみなさんが共有してくれることです。

途中JOINのノウハウを共有していきましょう!

30分トーク

Microsoft Azureで作る Full Serverless Application

seike460 清家史郎

Serverless は僕達をサーバー管理から開放してくれます。

未来の投資として非常に有益だと考えているのですが、構築するには様々な知識が必要になります。

今回はMicrosoft Azureを利用した Full Serverless Applicationを構築する為の方法をご紹介しようと思います。

このトークによりみなさんがサーバー管理から解放される一歩を踏み出せればと考えています。

■お話する内容

  • アーキテクチャ説明
  • 開発手法
  • 認証
  • テスト
  • CI/CD

■関連技術

  • Azure Functions
  • Azure Storage
  • Azure Cosmos DB
  • Azure Active Directory
  • Azure Resource Manager
1
30分トーク

ビジネスサイドとエンジニアが協力してBigQueryとSQLを活用する

gamu1012 斉藤裕気

プロダクト開発に置いて、様々なデータを集め、取得し、分析、活用していくのが当たり前になってきました。
しかし専属の分析担当/チームがある会社もまだ多くはないかもしれません。

そういった場合に取得と分析を誰がどうやっていくのかがいいのでしょうか。

例えば下記のようなケースもあるかと思います。

  • エンジニアが分析担当を兼任し、ビジネスサイドは関与しない
  • ビジネスサイドから欲しいデータの抽出をエンジニアに依頼、ビジネスサイドが分析していく

私達はスピードと柔軟性のためにビジネスサイドもエンジニアも一緒にやっていくことを選びました。
それを実現するにはビジネスサイドもSQLを活用できないといけません。

ビジネスサイドとエンジニアが協力をして実際にどういうことを行ったか、
ビジネスメンバーはどういうことからはじめて、どれくらいのことができるようになったのか、エンジニアとどういう分担をしているのか、
そしてそれらを行っていく中でうまくいった点や改善点についてPHPerのエンジニアが話します。

※ 具体例としてDBはBigQuery,データはFirebaseで収集したアプリのイベントを使います。

想定する聴講者

  • 経験や職種関係なくSQLを活用して、データ抽出を行いたい、ダッシュボードを作りたい方
  • SQLの活用を他のメンバーにも広めたいエンジニア

話さないこと

  • PHP
  • 分析の詳細
  • SQLの詳細の文法
1
30分トーク

GitHub Actionsで始めるPHPアプリケーションのCI実践入門

fortkle 高野福晃

2019年11月、GitHub Universe 2019で「GitHub Actions」がついに正式版になったことが発表されました。
これまではベータ版として公開されており、v1, v2と大きな仕様変更を経て正式版公開となったわけですが、興味はあるもののしっかりとキャッチアップできている人はまだまだ多くないのではないでしょうか?

本トークではGithub Actionsを1から解説し、実際にこれまでCircleCIやTravisCIで行っていたPHPアプリケーションのCI/CDを、Github Actionsを利用して実現できないかを検証します。
Dockerコンテナを活用しつつ、PHPUnitによるテストや、phpcs・phpstanといったQAツールを実行する具体例として参考となるものにできればと思います。

1
30分トーク

PHP Code Snifferのルールを自作する

o0h_ きんじょうひでき

PHP Code Snifferはコミュニティで広く支持を得て、活用されています。その為の仕組みや資産、例えばCI上での活用tipsに始まり、IDEとの連携・支援も拡がりました。これらの状況は、導入を考える人たちを強く励ますものです。
多くの場合は、「そのまますぐ使える」という土台が整っているとも言えます。フレームワークが提供しているrulesetを用いたり、PSR-12を適用するのは合理的な判断です。

しかしながら、このツールはあくまで「開発者を支援する」ものであり、「開発者を支配する」ものではありません。世間の標準に乗っかるだけでなく、チームやプロダクトの事情に応じて、本当に欲しいルールを手に入れるべきです。

そう考えた際に、独自のルールを作成できると夢が広がりませんか?
例えば、「PHP Code Sniffer」「PHP_CodeSniffer」「PHP CodeSniffer」正しいのはどれでしょうか?少なくとも言えるのは、チームでの正解はチームが決めれば良いのです。

ルールを自作する力を得て、より踏み込んだ活用の可能性を見つけませんか。

1
採択
2020/02/11 11:25〜
Track A
30分トーク

PHPerがこれから「型」とお付き合いしていくために

penguin_no_045 やなせ たかし

PHPでも「型」に関する議論が盛り上がっている今、一度「型」についておさらいしてみませんか?
近年、主要なプログラミング言語の「型」を取り巻く環境が変化しています。もちろんPHPも例外ではなく、7.0以降「型」に関する機能を強化しています。
PHPでは型ヒントの強化や、Javaではローカル型推論が導入されるなど、さまざまな言語で「型」に関する機能が拡張されています。
この拡張の傾向としては、動的型付け言語(PHP,Python)は漸進的型付けを導入する、静的型付け言語(Java,C#)は型推論を導入するというのがよくみられます。
その結果、言語の型付けの方式に寄らず、必要な個所に型を記述するというスタイルに収束していきそうな気配すらあります。
しかし、両者の間で「型」そのものの扱いには明確に差があります。その差とは何でしょうか?その差は何をもたらすのでしょうか?
そして、PHP上で「型」と向き合う時が来たとき、どのように付き合っていくのがいいのでしょうか?
このセッションでは、両者の「型」の進化をおさらいしながら、PHPがこれから「型」と付き合っていく上で得られるものや課題、PHPerが「型」とうまく付き合っていくための基礎知識についておなしします。

採択
2020/02/11 11:25〜
Track B
30分トーク

PHPシステムをコンテナで動かすための取り組みのすべて

takakiku きくもと

PHPで稼働しているサービスをクラウド移行に向けてまずはコンテナ化し、現状のオンプレ上で動かそうとしています。
実際にコンテナ化しようとすると、Dockerfileが長大になったりとか、デプロイの方法に悩むことが多いのではなかいと思います。
そこで、このトークではPHPコンテナを動かす過程での私たちの
・itamaeを利用したDocker Image作成
・LVSを利用したBlue-Greenデプロイメントの方法
・AWS Systems Manager RunCommand を利用したデプロイの方法
・開発環境でのDocker Imagerの利用方法
などについて、実際の取り組みを生の声として話します。

30分トーク

マスターデータの管理運用と実装について

KentarouTakeda 武田 憲太郎

パフォーマンス・スケーラビリティ・開発・運用、
これら多角的な観点から「マスタデータ」を考えます。

都道府県マスタ : 1:北海道/2:青森/3:岩手/4:宮城 …
金融機関コード : 1:みずほ銀行/5:三菱UFJ銀行/9:三井住友銀行 …
ポケモン一覧 : 1:フシギダネ/2:フシギソウ/3:フシギバナ/4:ヒトカゲ …
カテゴリ一覧 : general:一般/social:世の中/economics:政治と経済 …

変わらないデータでしょうか?変わるデータでしょうか?変わるとしたらいつでしょうか?運用するの誰でしょうか?

データの特性を捉えた適切な実装により、開発と運用の双方を効率化できます。その方法をご紹介します。

1
30分トーク

バージョンアップで心が折れた話

nyamucoro ういろう

注)この話はフィクションです。きっと。

■対象
・今最新を使っている人(メインターゲットです)
・これからやる人
・もうやって、あるある話を聞いて涙したい人

皆さん、バージョンアップしてますか?
PHPや、Laravel、古くなってきたからバージョンアップしよう。
よくある話ですね。

でも、何も考えずにプログラムを書くと、あとで痛い目を見ます。

これは、本当にあったかはわからない、バージョンアップで悲しみを背負った人の話。

■内容
・vendor配下をいじった報い
・コードをコピペで拡張した悲しみ
・Laravelを見捨ててPHP上げたらLaravelがお亡くなりに
・テストコードなんてなかった
・このライブラリはもう居ない
・消えた機能
・見つからない変更点
・再度襲いかかるコピペの悲しみ
・見えない終わり
・把握できない予算、見積もり
・PHPのアプデは簡単だったという圧力
・本当はマイナーバージョンアップではない誤解
・把握できないバージョンアップの利点

1