採択
2020/02/10 17:10〜
Track A
ルーキーズLT

「明日からフロントもよろしく!」 と言われたとき備える Atom Design でのフロントエンド設計

akki_megane 秋葉 誠一

UXや、UIの観点からSPAに代表されるリッチなフロントエンドが当たり前になり、
「SPAにしたい」という要望はビジネス観点からして至極当たり前のことです。

サーバサイドのPHPerでも、「明日からフロントもよろしく!」と言われる場面があるかもしれません。
「フロントの設計わからん」、「コンポーネント設計ってどうやるの?」という疑問を
Atom Design を通して解消し、来たるべき日に備える話しができればと思います。

採択
2020/02/10 17:15〜
Track A
ルーキーズLT

Laravelで家電を操作してみよう

akaa07_pg なずな

「エアコン消し忘れた……」
「エアコンをつけたいけどお布団から出たくない……」
「テレビの電源ついてないと録画できないのにうっかり消してきちゃった……」

そのような経験をした方は多いのではないでしょうか?

そんな悩みを解決するために、PHP Webフレームワーク「Laravel」と無線対応のIoT開発ボード「Obniz」を使用した学習型赤外線リモコンを製作して、ブラウザから家電を操作するお話です。

■内容

  • Obnizとは?
  • 赤外線リモコンの仕組み
  • LaravelとObniz間の通信方法
  • 時刻起動で自動操作してみる
採択
2020/02/11 10:25〜
Track A
15分トーク

自作して理解するxUnit

hgsgtk 東口 和暉

普段私たちが触れているPHPUnitなどは、xUnitと呼ばれるテスティングフレームワークの一つです。Kent Beck氏がSmalltalkで実装したものが様々な言語で広がってきた流れで生まれています。何気なく使っているこのPHPUnitを理解する足がかりに、xUnit自体を自分でPHPで実装すると、xUnitの考え方やPHPUnitに対する理解が深まるのではと思います。
このトークでは、そんなxUnitを実装して理解するという話です。聴講者の方々が普段使っているツールの中について考えるきっかけになれば幸いです。

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

ジェネレータで無限を手玉に取る術

tadsan うさみけんた

「PHPでforeachで反復できるものは何でしょう?」配列、オブジェクト、Iterator、そして“ジェネレータ”です。

ジェネレータは言語によってコルーチン、semicoroutineやFiberとも呼ばれるものと同等の言語機能であり、SICPのような計算機科学の教科書で説明されるストリーム・無限リストを簡潔に実現できます。
foreachループで配列を反復するのは既に作成済みのデータを頭から辿っていくだけのものであるのに対して、ジェネレータは配列のキーや要素に相当するものを計算によって生み出すことができるため、省メモリで効率のよい計算が可能です。

このトークではジェネレータの基礎概念と、実際に応用できるパターンについて紹介していきます。

採択
2020/02/11 10:55〜
Track A
15分トーク

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

KentarouTakeda 武田 憲太郎

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

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

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

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

採択
2020/02/11 10:55〜
Track B
15分トーク

実例から学ぶ、最後まで諦めない決済システム移行方法

litencatt 中村光佑

Web業界に転職して約3年が経ち、任されたのは社内4サービス(そのうちの1つは某ハンドメイドサービス)で利用されるクレカ決済システムの移行プロジェクト。

それは2019年4月末頃に移行本番当日を迎えた、約4ヶ月間にも及ぶ決済システム移行プロジェクトのお話。

発表者は前職で火力発電所の監視システム開発を5年半担当し、そこでは何度も失敗できない現場での業務を経験してきました。
そうした経験を持つ自身が今回の移行成功率を高めるために心がけていたことや実際に実施したこと、またそれでも失敗してしまったことなど、そこで得られた知見を全て皆さんにお話ししたいと思っています。

  • 始まりは現行決済サービスの突如終了のアナウンス
  • いざ計画した決済システム移行方法はまさかの打ち合わせ数日後に却下
  • そして決断されるビッグバンメンテによる4サービス一発切り替えという禁断の計画
  • 本番2日前に発覚した重大な設定ミス

移行本番の日、果たしてシステム移行は成功したのか・・・?
乞うご期待ください!

採択
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の利用方法
などについて、実際の取り組みを生の声として話します。

採択
2020/02/11 12:20〜
Track A
ランチセッション

クリーンな実装を目指して

Hamee株式会社

・なんでそのクラスにそのメソッドをもたせたの?
・そもそもどうしてそのクラスを作ったの?
・どうしてインターフェースを作るの?

実装していてこんな質問を受けた時
体系的にわかりやすく答えることって難しいですよね

「この場合〇〇になってしまうから」とか「こうやって実装したときに後々いいから」といった具体例を挙げた回答だけではなく、設計の観点からお話します。

このセッションでは、レガシーコードに新機能を追加するにあたってどうすれば変更に強く、理解しやすい実装ができるのか。弊社サービスのある機能開発を通して学んだことを実例を交えて紹介します。主にドメイン駆動設計の視点から設計やリファクタリングについて「やってよかったこと」「こうするともっとよかった」という話をします

採択
2020/02/11 13:30〜
Track A
15分トーク

Zend VMにおける例外の実装

hnw hnw
hnw

PHPスクリプトの実行時には「コンパイル」と呼ばれる処理が行われ、スクリプトはZend VM(PHPの仮想的なCPU)の命令列に変換されてから実行されます。このZend VMは本物のCPUと似た命令も持っていますが、本物のCPUではあり得ない命令も持っています。その一つが例外処理に関わるものでしょう。

本講演では、例外処理をZend VMはどのように実現しているのか、Zend VMと本物のCPUとの違いは何か、といった実装の詳細をPHPのCソースコードを交えて紹介します。

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

PHPでPHPを実装する 〜プログラミング言語実装入門〜

tzm_freedom ふりーだむ

プログラミング言語を実装したことはありますか?

本トークではPHPでPHPを実装していくことで、プログラミング言語が動く仕組みを紹介していきます。
静的解析でもよく利用されているnikic/PHP-Parserを使うと、字句解析・構文解析をパスして処理部分に集中してPHPを実装できます。
PHPを再実装するだけではなく処理内容を変えて「自分だけのPHP」を実装することもできちゃいます。

また、プログラムを表現するオブジェクトであるASTを扱えるようになると、静的解析などWebサービス開発の幅も広がります。
例えば、PhanやPHPStanなどの静的解析ツールやそのプラグインを自作できるようになったり、より堅牢なPHPの世界を作ることができます。

本トークではプログラミング言語を実装する楽しさを伝えるとともに、ASTに慣れ親しむきっかけになれば良いと思います。

採択
2020/02/11 14:00〜
Track A
15分トーク

もしもPHPソースコードが読めたなら...

hanhan1978 富所 亮

もしも、PHPのソースコードが読めたら....。var_dumpがどんな風に実装されているのか、explodeはどのように動いているのか、Closureオブジェクトの実装はどうなっているのか?そんな疑問を、自分で直接見て理解することが出来るようになります。 でも、いざ読もうと思っても、C言語のソースコードを読むのは難しそうだし、そもそもどこから手を付けていいか分からないです。

本トークでは、PHPのソースコードを読みこなしていく方法を、手順化して丁寧に解説します。PHPのソースコードを読むことが、一部玄人の特権ではなく、誰でも出来るんだと感じていただきたいです。

採択
2020/02/11 14:00〜
Track B
15分トーク

ぼっちからはじめるレガシーカルチャー改善ガイド 〜はじめの一歩編〜

blue_goheimochi 大橋 佑太

勉強会やカンファレンスに参加するとムクムクと湧いてくるカイゼン意欲。
「よっしゃ明日からやってやるぞー!!」と思って気持ちよく寝ても、
いざ翌日出社すると「あれ・・・どこから手をつけたらいいか分からない・・・」となったりしていませんか?
わたしはそうでした。(いまでもそんな時はあります)

会社の制度やチームの文化を変えるための「銀の弾丸」はないと思っています。

わたしの会社やチームもまだまだカイゼンの余地がありますが、
様々なアプローチを試行錯誤し、少しずつ少しずつカイゼンが進んでいっているなという実感を持っています。

今回のセッションでは特に「カイゼンをまず1人ではじめよう!」と思った時に、わたしが実際に行なったアプローチを時間の許す限り紹介したいと思います。
聞いてくださったみなさんが、明日(明後日?)に出社して、もっと気軽にカイゼンをはじめるためのヒントとなれば幸いです。

採択
2020/02/11 14:30〜
Track A
15分トーク

今だからこそ振り返る register_globals

gongoZ gongo

かつて

Q.「セキュアなWebアプリケーションを作るにはどうすればいいか」
A.「まず PHP を避ける」

とまで言わしめた 古い PHP が活躍していた時代、その中心的機能である register_globals を知っていますか。この機能を on にしたが最後、リクエストパラメータは問答無用でグローバル変数に展開されてしまうという、お手軽且つ凶悪な機能でした。変数汚染攻撃の温床ともなり、「PHP is 脆弱性」とまで言われるようになった所以です。

そんな register_globals も PHP 5.4 で姿を消し、この機能を使ったことのある人の方が少ない時代になっていると思います。
しかし、そんな時代だからこそ皆さんと振り返っていきたいです。

・ register_globals とはどんな機能なのか
・ ドキュメントには載っていない register_globals の動き
・ PHP 5.4 以上でも使える! register_globals

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

Webアクセシビリティを支えるための技術

shiori_pk 有木 詩織

昨今では、アクセシビリティというキーワードを耳にすることが多くなってきました。
Webアクセシビリティとは、Webコンテンツに誰もがいつでもどこでもどんな状況でもアクセスができるようにしていくことです。

Webアクセシビリティは、デザイナーやフロントエンドエンジニアが取り組むものと思われがちですが、サーバーサイドエンジニアでもできることはあります。
私たちサーバーサイドエンジニアは何ができるでしょうか?

Webコンテンツをアクセシブルにするための指標に、Web Content Accessibility Guidelines (WCAG)というガイドラインがあります。
WCAGには、コントラスト比や画像の代替テキストなどが挙げられていますが、そもそもWebコンテンツが表示できるかどうか、レスポンスが遅すぎないかどうかなどの必須条件に関しては言及されていません。

このトークでは、Webアクセシビリティを支えるためにサーバーサイドエンジニアができることにフォーカスを当てて話します。

採択
2020/02/11 15:00〜
Track A
15分トーク

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ツールを実行する具体例として参考となるものにできればと思います。

採択
2020/02/11 15:00〜
Track B
15分トーク

Serverless Pattern

seike460 清家史郎

Serverlessは一般化してきています。

Serverless においてある程度決まったPatternがあります。

ServerlessなArchitectureを組むことでそのシステムはどの様なメリットを享受出来るのでしょうか。

今回はAWSを利用したServerless Patternを適用することで、
そのシステムが享受出来るメリットと構築する上での注意点を解説します。

・想定する聴講者
 - Serverlessに興味のあるWEBエンジニア
 - AWSを利用しているクラウド系エンジニア

・お話する内容
 - AWS Lambdaを中心としたServerless Pattern
 - Serverless Patternを構築するうえで考えるべきAWSリソースの特徴
 - Serverless Patternを構築することで得られるメリット
 - Serverless Patternを利用するうえで注意すべき事項

・お話しない内容
 - GCP、Azureの話
 - PHPを利用したServerless Pattern

採択
2020/02/11 15:30〜
Track A
LT

PHPでもVTuberになりたい!

hico00 ひかる

みなさんは「バーチャルYouTuber(VTuber)」と呼ばれる人たちをご存知でしょうか?

3Dモデルやイラストのキャラクターを用いて、バーチャル世界から動画投稿・配信をする人たち。
その撮影方法は人によって様々です。

モーションキャプチャー専用機材を使う人。VR機材を使う人。Webカメラや、iPhoneのカメラでフェイストラッキングをする人。
Unity、Unreal Engine、FaceRig、Live2D、JavaScript…いろんな技術が……

PHP…我々のPHPは?みんな大好きなPHPは…?
PHPでも…PHPでもできるもん…できるもん…!

そんな熱い想いからはじまる物語をお届けします。

採択
2020/02/11 15:35〜
Track A
LT

PHPでleetCodeのeasyレベル100問ノック

yamotuki yamotuki

PHPでも競技プログラミングは学べるんだ。
競技プログラミングのズブの素人が、PHPで簡単な問題を中心に100問やってみた結果を共有する。
PHPの懐は広い。便利関数を使って楽できることもある。しかし便利関数の裏の動きを想像しないと実行が遅すぎたりするのだ。

採択
2020/02/11 15:40〜
Track A
LT

PHP未経験者を育てる独自フレームワークの作り方

kanbo0605 カンボ@沖縄

弊社ではPHP未経験者の採用もやっております。その中の研修カリキュラムで独自フレームワークを作ってもらっており、研修用のPHP独自フレームワークの作り方を一挙公開します!
具体的に自作する内容は下記です。

  • routing
  • CSRF対策
  • Cotroller
  • Model
  • バリデーション