北海道から沖縄まで(離島含む)全国対応なのに無料の「バス停検索」サービス(全国約26万6千ヶ所のバス停収録)を日々運営しています。
実は2011年のサービス開始当初から、その裏側はPHPとMySQL、JavaScriptで動いています!
(使用フレームワークはCakePHP)
さらに、公開用ページだけではなく、管理画面や多くのメンテナンス用スクリプトまでもがPHP製です。
バス停検索の大きな特徴は、住所や地図上から自由に探せることで、スマホやタブレットのGPS機能による位置情報からも最寄りバス停を探せます。
しかし、公開情報の国土数値情報を利用している関係で、データ精度に大きな課題もあります。
その対策として、「標準的なバス情報フォーマット(通称:GTFS-JP)」によるバス情報のオープンデータ活用を進めています。
(GTFS-JP)形式はCSVテキストファイルです)
今後沖縄県内で公開される予定のバス情報オープンデータ(那覇バスや沖縄バス等)のデータも順次追加予定です。
PHPを使い各バスデータを反映していく過程での技術的な悩みや苦労などを語ります。
スタートアップのサービスが順調に成長していくと、DBの負荷問題に悩まされることが多くなります。
その主な要因として「アクセスの増加」「データ量の増加」「DB負荷がかかる処理の増加」などが挙げられます。
DB負荷問題はSREの中で最も重要で、常に闘っていかないといけないテーマだと考えています。
日々のSRE業務で行ってきた、DB負荷問題の対策についてCakePHPを事例に紹介いたします。
CakePHP4のリリースが間近になってきました。
CakePHP2のサポートはCakePHP4リリース後18か月間となっているため、それまでにバージョンアップする必要がありますが、未だに多くのCakePHP2のシステムがバージョンアップできずにいます。
CakePHP3からは、ORMの返り値がオブジェクトになることをはじめ、大きな変更が行われているため、バージョンアップには困難が伴います。
ランサーズでは、CakePHP2のバージョンアップに着手しました。
CakePHP1.3→2.8へのバージョンアップはコントローラー単位で1年以上かけて徐々に移行しましたが、これを応用し、CakePHP2.8とCakePHP3or4を共存させながら徐々にバージョンアップさせる方法を紹介いたします。
■対象
プログラミング初心者・中級者
■概要
1.『ボタンをクリックしたら、このページのclassがspecial_itemsのパーツの色を変えてほしい』
2.『それはこの画面の上から4番目のパーツだ』
こう言われたとき、あなたはどんなプログラムを書きますか?
プログラムは言語です。『本当にやりたいこと』を正しく理解して、そのとおりにプログラムを書かなければ、簡単にバグは発生します。
1+1も、4-2も、結果は一緒なのでプログラムは正しく動きます。
しかし、仕様変更や他のプログラムを合体させると動かなくなり、再修正の時間が発生することがあります。
『正しく意味を理解して、それをプログラミング言語に落とし込む』
バグを減らし、変更に耐えやすくなり、再修正も減って、最終的に開発が早くなります。
新卒2年目にしてミドルウェアアップデートに対応したので、そちらについて話をさせていただきます。
現在進行形で着手中で、発表時期までにはphp5.3→7.3の実装が終わっている段階なので、苦労した点や所感について話していこうと思います。
また案件の進捗次第ですが、今回はCakePHP1→3への対応(Cakeを使用しているのは一部のソースのみ)も行っているので、可能ならそちらも話の内容に含めていこうと考えております。
新卒1年目に、フレームワークなしのPHPを書いてみて、どれだけフレームワークが有用か感じた話。業務内で困ったコードやファイル構成について話します。未経験から新卒で入社し、実際の業務として困ったこと、肌で感じたエンジニア社会をお伝えします。
みなさんの開発環境は現在どんな感じでしょうか?
今風だとDockerなどのコンテナを駆使して開発環境を構築するのがモダンなのかな?いやいやVagrantもまだまだ健在!漢は黙ってXAMPP!!など皆様の開発環境はまだまだ様々なのかな?と思っています。
我々は6年前の2つのバージョンのXAMPPを使った開発環境の時代から今現在はDockerを使った開発環境のように大きく開発環境を変化させてきました。
開発環境を改善するの正直とても大変でしたが、トライ&エラーを繰り返しながらチーム全体に取り入れられたことで、それによるメリットもたくさん得られたと思っています。
我々がどんな方法で開発環境の改善を進めてチームに浸透させてきたか?最終的にどのような環境になったのか?といった私やチーム全体で取り組み、変化を起こしてきたことをお伝えすることで、お聞きいただいたみなさまの現場における開発環境改善のヒントになれば幸いです。
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.
結婚や子育て、起業、留学などの局面でお金があると選択肢が増えます。PHPerの収入調査データとどうすれば稼げるのかを提案します。
サーバーレスは一般的な技術になりつつあります。
それに伴い私達PHPerが選択出来るサーバーレスバックエンドは進化し続けています。
各種クラウドベンダーが提供するランタイムの利用、コンテナの利用等、
各サーバーレスの環境の利用方法と比較を行います。
お話すること
- Serverlessの魅力
- PHPにおけるServerless環境の選択肢
- 各Serverless環境の比較
利用する技術
- コンテナ
- 各種クラウドベンダー提供のServerless環境
- AWS Lambda
- AWS Fargate
- GAE
- Knative on GKE
- Cloud Run
実際の開発経験の話を交えながら、Laravelでの設計のベスト・プラクティスについて考察・提案します。話すトピックの候補は以下の感じです。
最近、設計に対する関心高まりを感じています。
その一方で「名前は聞いたことあるけど、敷居が高そう......」「本は読んだけど実際に実装するイメージがつかない......」と感じている方もいらっしゃるのではないでしょうか?
本セッションでは設計に関するテーマとして「クリーンアーキテクチャ」を扱い、セッション前半ではクリーンアーキテクチャのコアとなる考え方を説明します。
後半では「フレームワーク非依存」を謳うクリーンアーキテクチャの考え方を、Laravel のプロジェクトに適用する方法を提案します。
※本セッションは、PHP カンファレンス福岡 2019 でお話した「Laravel でやってみるクリーンアーキテクチャ」を再編した内容になります。
スタートアップ企業(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の向上。
新しい技術を採用する中で、開発コストとのバランスを上手く調整した点。
スクラム開発による開発の効率化、チームの開発スピードの可視化などです。
Laravelのイベントとリスナを使ってObserverパターンを実装した話をします!
Observerパターンとは、デザインパターンの一つで、
監視される側と監視する側の関係を持つプログラム構造で、
イベントをリスナーがキャッチして処理を行うものです。
総合認証プラットフォームAuth0を用いて、Laravel + Nuxt.jsで簡単に複数のSNS認証機能を実装した話をします。 Auth0はWebアプリやモバイル、APIなどに対して認証・認可のサービスをクラウドで提供している、いわゆるIDaaS (Identity as a Service)ベンダーです。
■対象の人
■内容
私はもともと『落ちこぼれ』でした。自分に全く自信がありませんでした。
そんな私が、今Conferenceで登壇したり、勉強会でLTをしたりしています。
『エンジニアがアウトプットしろというの意味わかんない』
『アウトプットとか絶対続かない』
いやいや、エンジニアこそやると良いと思いますよ。
一年間で生活が大きく変わった私から、私の思いを話したいと思います。
■対象
プログラミング初心者・中級者
■概要
1.『ボタンをクリックしたら、このページのclassがspecial_itemsのパーツの色を変えてほしい』
2.『それはこの画面の上から4番目のパーツだ』
こう言われたとき、あなたはどんなプログラムを書きますか?
プログラムは言語です。『本当にやりたいこと』を正しく理解して、そのとおりにプログラムを書かなければ、簡単にバグは発生します。
1+1も、4-2も、結果は一緒なのでプログラムは正しく動きます。
しかし、仕様変更や他のプログラムを合体させると動かなくなり、再修正の時間が発生することがあります。
『正しく意味を理解して、それをプログラミング言語に落とし込む』
バグを減らし、変更に耐えやすくなり、再修正も減って、最終的に開発が早くなります。
当時新卒2年目、PHP歴1年の私が、Laravelのバグ修正に至った理由・そこで起こったことを話そうと思います。
(ちなみに現在新卒3年目です)
■対象
・PHP、Laravel初心者の方
・OSSコントリビュート未経験
■内容
・バグ発見のきっかけ
・Laravelのコードを追い方
・コントリビュートして起こったこと
・コントリビュートの面白さ
・新人エンジニアと指導する方に伝えたいこと
■ターゲット
PHP初級者、中級者、Laravelのバージョンが低い方
■題材
Laravel
(他のフレームワークでも応用できる説明もします!)
■話の大枠
funcName()
検索やdie()など)■初心者の方へ
私はLaravelのコード読んでたら、コントリビュート出来たり、登壇出来たりしました。
ちょっと違うレベルアップをしたい時、ソースコードリーディングは良いです。
■古いバージョンを使っている方
私半年で5回くらい、バージョン上がれば大丈夫だったのに・・・って悩みにぶつかってます。
元コード読むと、解決することは多分にあります。
もし、新しくLaravelのプロジェクトに入るけど、元コード読んだこと無い方は、ここで学びましょう。
明日の自分は、公式ドキュメント読むより、ソースコード読めば良いじゃんって言っているかもしれません。
PHPは言語としては初学者にもやさしく、入門しやすい言語かもしれません。
一方で、実際にWebアプリケーションを作るにあたり、知らなければいけない周辺知識はたくさんあります。
ではまず、Webアプリケーションフレームワークのチュートリアルをやっておけば良いのでしょうか?
また、どこから学んだら良いかわからず、入門書っぽい本で学習するのが良いでしょうか?
このセッションでは、初学者(Web系の言語入門者を含む)にとって、Webアプリケーションを開発することを学ぶにはどこから取り組むのが良いのか?ということを紹介します。