LT(5分)

沖縄対応!PHP製バス停検索サービスの路線バス情報オープンデータ活用

8nohe 福田 匡彦

北海道から沖縄まで(離島含む)全国対応なのに無料の「バス停検索」サービス(全国約26万6千ヶ所のバス停収録)を日々運営しています。

実は2011年のサービス開始当初から、その裏側はPHPとMySQL、JavaScriptで動いています!
(使用フレームワークはCakePHP)
さらに、公開用ページだけではなく、管理画面や多くのメンテナンス用スクリプトまでもがPHP製です。

バス停検索の大きな特徴は、住所や地図上から自由に探せることで、スマホやタブレットのGPS機能による位置情報からも最寄りバス停を探せます。
しかし、公開情報の国土数値情報を利用している関係で、データ精度に大きな課題もあります。

その対策として、「標準的なバス情報フォーマット(通称:GTFS-JP)」によるバス情報のオープンデータ活用を進めています。
(GTFS-JP)形式はCSVテキストファイルです)

今後沖縄県内で公開される予定のバス情報オープンデータ(那覇バスや沖縄バス等)のデータも順次追加予定です。

PHPを使い各バスデータを反映していく過程での技術的な悩みや苦労などを語ります。

レギュラートーク(30分)

成長サービスのDB負荷問題を解決する

yakitori009 金澤 裕毅

スタートアップのサービスが順調に成長していくと、DBの負荷問題に悩まされることが多くなります。
その主な要因として「アクセスの増加」「データ量の増加」「DB負荷がかかる処理の増加」などが挙げられます。
DB負荷問題はSREの中で最も重要で、常に闘っていかないといけないテーマだと考えています。
日々のSRE業務で行ってきた、DB負荷問題の対策についてCakePHPを事例に紹介いたします。

レギュラートーク(30分)

CakePHPの共存バージョンアップ

yakitori009 金澤 裕毅

CakePHP4のリリースが間近になってきました。
CakePHP2のサポートはCakePHP4リリース後18か月間となっているため、それまでにバージョンアップする必要がありますが、未だに多くのCakePHP2のシステムがバージョンアップできずにいます。
CakePHP3からは、ORMの返り値がオブジェクトになることをはじめ、大きな変更が行われているため、バージョンアップには困難が伴います。
ランサーズでは、CakePHP2のバージョンアップに着手しました。
CakePHP1.3→2.8へのバージョンアップはコントローラー単位で1年以上かけて徐々に移行しましたが、これを応用し、CakePHP2.8とCakePHP3or4を共存させながら徐々にバージョンアップさせる方法を紹介いたします。

1
LT(5分)

開発を早くするために、『正しい意味で』プログラムを書く

nyamucoro うゐろう

■対象
プログラミング初心者・中級者

■概要

  1. もし、間違った認識でプログラムを書いたら?
  2. 手法: 日本語を書いてから、プログラムに翻訳する
  3. 手法: アンチパターン・登場人物の洗い出し

1.『ボタンをクリックしたら、このページのclassがspecial_itemsのパーツの色を変えてほしい』
2.『それはこの画面の上から4番目のパーツだ』

こう言われたとき、あなたはどんなプログラムを書きますか?

  1. 対象のclassのパーツの色を変える
  2. 上から4番目のパーツの色を変える

どちらも、正しく動くでしょう。・・・今は。
もし、一番上に新しいパーツが追加されたら・・・?

プログラムは言語です。『本当にやりたいこと』を正しく理解して、そのとおりにプログラムを書かなければ、簡単にバグは発生します。

1+1も、4-2も、結果は一緒なのでプログラムは正しく動きます。
しかし、仕様変更や他のプログラムを合体させると動かなくなり、再修正の時間が発生することがあります。

『正しく意味を理解して、それをプログラミング言語に落とし込む』
バグを減らし、変更に耐えやすくなり、再修正も減って、最終的に開発が早くなります。

LT(5分)

初めてのミドルウェアアップデート(php5.3→7.3)

城間 奏人

新卒2年目にしてミドルウェアアップデートに対応したので、そちらについて話をさせていただきます。

現在進行形で着手中で、発表時期までにはphp5.3→7.3の実装が終わっている段階なので、苦労した点や所感について話していこうと思います。
また案件の進捗次第ですが、今回はCakePHP1→3への対応(Cakeを使用しているのは一部のソースのみ)も行っているので、可能ならそちらも話の内容に含めていこうと考えております。

1
LT(5分)

新卒エンジニアが生PHPに苦しめられた話

1dkiy yabikiyo

新卒1年目に、フレームワークなしのPHPを書いてみて、どれだけフレームワークが有用か感じた話。業務内で困ったコードやファイル構成について話します。未経験から新卒で入社し、実際の業務として困ったこと、肌で感じたエンジニア社会をお伝えします。

1
レギュラートーク(30分)

6年かけてこうなった!我々の開発環境の変遷と現在

blue_goheimochi 大橋 佑太

みなさんの開発環境は現在どんな感じでしょうか?
今風だとDockerなどのコンテナを駆使して開発環境を構築するのがモダンなのかな?いやいやVagrantもまだまだ健在!漢は黙ってXAMPP!!など皆様の開発環境はまだまだ様々なのかな?と思っています。

我々は6年前の2つのバージョンのXAMPPを使った開発環境の時代から今現在はDockerを使った開発環境のように大きく開発環境を変化させてきました。

開発環境を改善するの正直とても大変でしたが、トライ&エラーを繰り返しながらチーム全体に取り入れられたことで、それによるメリットもたくさん得られたと思っています。

我々がどんな方法で開発環境の改善を進めてチームに浸透させてきたか?最終的にどのような環境になったのか?といった私やチーム全体で取り組み、変化を起こしてきたことをお伝えすることで、お聞きいただいたみなさまの現場における開発環境改善のヒントになれば幸いです。

1
レギュラートーク(30分)

How Swoole Blows Your Mind about PHP?

Albert Chen

Swoole is a production-grade async framework for PHP. It makes high concurrency possible for PHP in coroutine pattern like Go lang. The combination of PHP and Swoole can improve the performance of your PHP projects significantly.

What's more, not only web, developers can also build TCP/UDP server with Swoole easily. This talk will walk you through the lifecycle, server structure, coroutine and use cases of Swoole.

2
レギュラートーク(30分)

PHPエンジニアが稼ぐためには

_yoshimasa 吉政忠志

結婚や子育て、起業、留学などの局面でお金があると選択肢が増えます。PHPerの収入調査データとどうすれば稼げるのかを提案します。

2
レギュラートーク(30分)

PHPにおけるサーバーレス環境

seike460 清家史郎

サーバーレスは一般的な技術になりつつあります。

それに伴い私達PHPerが選択出来るサーバーレスバックエンドは進化し続けています。
各種クラウドベンダーが提供するランタイムの利用、コンテナの利用等、
各サーバーレスの環境の利用方法と比較を行います。

  • お話すること
     - Serverlessの魅力
     - PHPにおけるServerless環境の選択肢
     - 各Serverless環境の比較

  • 利用する技術
     - コンテナ
     - 各種クラウドベンダー提供のServerless環境
      - AWS Lambda
      - AWS Fargate
      - GAE
      - Knative on GKE
      - Cloud Run

2
レギュラートーク(30分)

Laravelで設計する際のベストプラクティスを探る

実際の開発経験の話を交えながら、Laravelでの設計のベスト・プラクティスについて考察・提案します。話すトピックの候補は以下の感じです。

  • Serviceクラス
  • Repositoryパターン
  • 例外処理のハンドリングをする場所のベストプラクティスは?
  • 関数の命名について
  • 開発経験時のよかった設計や悪かった設計の話
1
レギュラートーク(30分)

クリーンアーキテクチャの考え方に基づく Laravel との付き合い方

okashoi 岡田 正平/おかしょい

最近、設計に対する関心高まりを感じています。
その一方で「名前は聞いたことあるけど、敷居が高そう......」「本は読んだけど実際に実装するイメージがつかない......」と感じている方もいらっしゃるのではないでしょうか?
本セッションでは設計に関するテーマとして「クリーンアーキテクチャ」を扱い、セッション前半ではクリーンアーキテクチャのコアとなる考え方を説明します。
後半では「フレームワーク非依存」を謳うクリーンアーキテクチャの考え方を、Laravel のプロジェクトに適用する方法を提案します。
※本セッションは、PHP カンファレンス福岡 2019 でお話した「Laravel でやってみるクリーンアーキテクチャ」を再編した内容になります。

1
レギュラートーク(30分)

Laravel + Nuxt.js + FirebaseでDXと開発コストを意識したSPA開発

kanbo0605 カンボ@沖縄

スタートアップ企業(Re:Build)が自社サービス「Tadoru」を開発するにあたって、
Laravel、Nuxt.js、Firebaseを使用し、開発コストとエンジニアのDX(Development Experience)も意識し、
SPA(Single Page Application)開発を実現した話をします。
技術的な面では、Laravelとどのように組み合わせて、全体のプロダクト設計したのか、
API設計、認証周り(JWT、SNS認証など)の工夫点などをお話します。
開発体制で工夫した点としては、Nuxt.js、Firebase、cypress(e2eテスト)、
GitlabCIなどの技術を採用する事によるDXの向上。
新しい技術を採用する中で、開発コストとのバランスを上手く調整した点。
スクラム開発による開発の効率化、チームの開発スピードの可視化などです。

2
LT(5分)

LaravelでObserverパターンを簡単に実装!

kanbo0605 カンボ@沖縄

Laravelのイベントとリスナを使ってObserverパターンを実装した話をします!
Observerパターンとは、デザインパターンの一つで、
監視される側と監視する側の関係を持つプログラム構造で、
イベントをリスナーがキャッチして処理を行うものです。

1
レギュラートーク(30分)

Laravel + Nuxt.js + Auth0で複数のSNS認証を簡単に実現

kanbo0605 カンボ@沖縄

総合認証プラットフォームAuth0を用いて、Laravel + Nuxt.jsで簡単に複数のSNS認証機能を実装した話をします。 Auth0はWebアプリやモバイル、APIなどに対して認証・認可のサービスをクラウドで提供している、いわゆるIDaaS (Identity as a Service)ベンダーです。

1
LT(5分)

エンジニアがブログや登壇で、アウトプットするとどうなる?

nyamucoro うゐろう

■対象の人

  1. アウトプット続かない
  2. アウトプットの良さわからない
  3. アウトプットで何かが変わる未来が見えない

■内容

  1. アウトプットって本当に意味あるの?
  2. 『あなた』はアウトプット『すべきか』
  3. 私が本当に起こったこと
  4. アウトプットはいいぞ

私はもともと『落ちこぼれ』でした。自分に全く自信がありませんでした。
そんな私が、今Conferenceで登壇したり、勉強会でLTをしたりしています。

『エンジニアがアウトプットしろというの意味わかんない』
『アウトプットとか絶対続かない』

いやいや、エンジニアこそやると良いと思いますよ。
一年間で生活が大きく変わった私から、私の思いを話したいと思います。

2
レギュラートーク(30分)

開発の速度と設計に関わる、『正しい意味で』プログラムを書く

nyamucoro うゐろう

■対象
プログラミング初心者・中級者

■概要

  1. もし、間違った認識でプログラムを書いたら?
  2. 正しいと嬉しいことは?(完成が早くなる等)
  3. 手法: 日本語を書いてから、プログラムに翻訳する
  4. 手法: アンチパターン・登場人物の洗い出し
  5. 抽象化・命名・設計は、全て『正しい意味』が重要
  6. 『間違えた意味』で設計した場合は?(分離していなかった時の恐怖)

1.『ボタンをクリックしたら、このページのclassがspecial_itemsのパーツの色を変えてほしい』
2.『それはこの画面の上から4番目のパーツだ』

こう言われたとき、あなたはどんなプログラムを書きますか?

  1. 対象のclassのパーツの色を変える
  2. 上から4番目のパーツの色を変える

どちらも、正しく動くでしょう。・・・今は。
もし、一番上に新しいパーツが追加されたら・・・?

プログラムは言語です。『本当にやりたいこと』を正しく理解して、そのとおりにプログラムを書かなければ、簡単にバグは発生します。

1+1も、4-2も、結果は一緒なのでプログラムは正しく動きます。
しかし、仕様変更や他のプログラムを合体させると動かなくなり、再修正の時間が発生することがあります。

『正しく意味を理解して、それをプログラミング言語に落とし込む』
バグを減らし、変更に耐えやすくなり、再修正も減って、最終的に開発が早くなります。

1
レギュラートーク(30分)

新卒2年目がLaravelコントリビュート出来た理由とその面白さ

nyamucoro うゐろう

当時新卒2年目、PHP歴1年の私が、Laravelのバグ修正に至った理由・そこで起こったことを話そうと思います。
(ちなみに現在新卒3年目です)

■対象
・PHP、Laravel初心者の方
・OSSコントリビュート未経験

■内容
・バグ発見のきっかけ
・Laravelのコードを追い方
・コントリビュートして起こったこと
・コントリビュートの面白さ
・新人エンジニアと指導する方に伝えたいこと

レギュラートーク(30分)

初心者と古いバージョン使いに捧げる、Laravelの元コードの読み方

nyamucoro うゐろう

■ターゲット
PHP初級者、中級者、Laravelのバージョンが低い方

■題材
Laravel
(他のフレームワークでも応用できる説明もします!)

■話の大枠

  1. PHP歴1年でも出来る。難しくない
  2. Laravelわりとバグがある。ドキュメントで解決しない
  3. ソースコードの読むテクニック (funcName()検索やdie()など)
  4. 私に起こった、OSSコントリビュートと登壇について

■初心者の方へ
私はLaravelのコード読んでたら、コントリビュート出来たり、登壇出来たりしました。
ちょっと違うレベルアップをしたい時、ソースコードリーディングは良いです。

■古いバージョンを使っている方
私半年で5回くらい、バージョン上がれば大丈夫だったのに・・・って悩みにぶつかってます。
元コード読むと、解決することは多分にあります。
もし、新しくLaravelのプロジェクトに入るけど、元コード読んだこと無い方は、ここで学びましょう。

明日の自分は、公式ドキュメント読むより、ソースコード読めば良いじゃんって言っているかもしれません。

1
レギュラートーク(30分)

PHPを学ぶということ

sizuhiko 岸田健一郎

PHPは言語としては初学者にもやさしく、入門しやすい言語かもしれません。
一方で、実際にWebアプリケーションを作るにあたり、知らなければいけない周辺知識はたくさんあります。
ではまず、Webアプリケーションフレームワークのチュートリアルをやっておけば良いのでしょうか?
また、どこから学んだら良いかわからず、入門書っぽい本で学習するのが良いでしょうか?
このセッションでは、初学者(Web系の言語入門者を含む)にとって、Webアプリケーションを開発することを学ぶにはどこから取り組むのが良いのか?ということを紹介します。

3