LoginSignup
2
1

More than 3 years have passed since last update.

【サルが書く】CakeFest2019に行ってきた話

Posted at

CakeFestに参加してきたぞ!

わきゃ!

CakePHPの国際カンファレンスが今年TOKYOで開かれるということで、これは行くしかないと思い行ってきました。
メモを取っていないスピーカー等もありますし、雑なメモになっているのをご了承ください。

やはり日本のカンファレンスとは違い、様々な国籍の方が会場にはいて、受付も英語だったのでかなり戸惑ってしまいましたがなんとか受付をすませ着席しました。

来場者特典として、ノートといわゆるぺちぞーがみんなに配られました。
iOS の画像 (5).jpg

途中のbreak timeはなぜかむき出しのバナナが無造作に置かれておりました。

iOS の画像 (4).jpg

日本のエンジニアも英語でのスピーチをしていました。

最後にはCakePHPCakeが振る舞われ、来場者の皆様に配られていました。
iOS の画像 (2).jpg

Conference DAY1

A safer and more helpful CakePHP in 4.0

Mark Story

CakePHP4の開発における最後のブランチを5分前にマージした
bataの状態で、来週リリースになるかもしれない。

  • 今後のCakePHP

2.x系
4のリリース後
アップデートは12ヶ月で終了
セキュリティアップデートは18ヶ月で終了

3.x系
4のリリース後は36ヶ月でセキュリティアップデートは終了

  • CakePHP4系の特徴

safetyになった
stricter
ストリクトモードがある

php7.2以上が必要

templateを呼びだすときにない場合はfatalになっていたのがあるが、メソッド名を変更することで安全に
NULL安全

静的解析機能がよくなった

phpstanに近いけど、完全に一緒ではない
https://qiita.com/qiita_masaharu/items/24bf34579119628eefe2

eaery feedbackを受けられる
早くフィードバックを受け取ることでエラーを早期に見つけることができる

エラーフィードバックを改善
エラーページもアップデートしていった

UPGRADE TOOLを導入
アップデートをサポートをしてくれるCLIを導入
rectorを使用した。
https://fortkle.hatenablog.com/entry/2018/12/16/235830

The CakePHP features I wish you were using more

José Rodríguez

カスタムアソシエーション
自分でアソシエーションを作らなければならないシチュエーションで使ってほしい
HasOneをカスタマイズして作ったりする。

カスタムエクスプレッション
cakephpのclassがsqlになったようなもの
ORMに作るsqlを作ってくれる関数のようなものらしい

12 Factor CakePHP Applications - The Remix

Jose Gonzalez

ScalableAppとはどんなもの?
スケーラブルにするためにはどうすれば良い

組織のパターンによる
どんなパターンに沿ってスケーラブルなアプリケーションを作るか
12 factor appに従ってアプリケーションを作成しよう。

12 factor app
https://12factor.net/ja/

2011年にHerokuが作った

codebase
monorepoの状態は良くない
repositryは複数に分けて管理するべき
1つのcodebaseで複数の環境にデプロイされるべき

Dependencies
composerのバージョンはちゃんと指定しよう
バックアップは取りましょう

config
設定をコードから厳密に分離すること
環境変数をつかえ!
アプリケーションコード内には秘密情報は入れない
CakePHPの場合は環境変数で設定できるので、それを使いましょう
サーバーの外で環境変数を設定できるので安全

backend service
外部のAPIや接続する先も環境変数でしていする
ローカルサービスとサードパーティサービスを区別しない。

build release run
ビルド、リリース、実行の3つのステージを厳密に分離する

process
アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する

port binding
Dont care

Concurrency
並行性をもて
簡単に並行スケールをできるように

Disposability
プロセスを消すときは簡単にできるようにする

parity dev prod
開発環境、ステージング、本番の環境は統一すべき
OSも統一すべき、テスト環境も統一しろ
local環境も本番に親しい環境にしなさい
Docker等を使うことで、簡単に統一することもできるかもしれない。

logs
イベントストリームとして使う
logは標準的なフォーマットでかくべきだと思っている
metadataを入れる
-> timestampはISO8601
-> user情報は誰が見ても特定できるように

admin processes
重要な操作に関してはGUIで操作するのではなく、codeで管理する。
管理ページを作成すれば、developerでなくてもできるので、効率的

Test-driven development to avoid painful of test code

KAZUKI HIGASHIGUCHI

TDDはテスト辛い問題を解決してくれる

テストの辛い理由
テストの知識がない
プロジェクトが忙しい
本番にテストコードがない
テストが膨大である
メンテができない状態になる

テストコードをアプリケーションのオプションとして考えてしまう
アプリケーションを書くときに、テストありきで書けていない
そのためテストが辛くなる

TDDとは
TDDは恐怖をなくすための手法である

TDDのルール
テストのないコードを書くな
重複を排除せよ

TDDのサイクル
テストを追加
テスト実行させて失敗させる
変更を加える
テストを実行して成功させる
重複をリファクタリングする

TDDのやり方
開発サイクルに入れることで、テストを書かざる負えない状態になる
テストを最初に書くことで、テスト設計を加味したコードになるので、テストの実装が容易になる

まとめ
テストがコストかかるからと言って、やらないのではなくうまくやる

Working with Database Replication

Tadahisa MOTOOKA

SPOF(単一障害点)

レプリケーションラグどうすんの?
コミットされてから、レプリケーションに追加されるまでの時間

UNITTEST
ローカルで一番気をつけなければならないのは、replicaDBに書き込んでしまうこと。なのでread only userを作るのは有用な対策である。

Conference DAY2

Beyond unit testing: How to make your applications more reliable

José Rodríguez

単体テストはほとんど無駄になっているのではと思う。

単体テストの問題
一部のテストしかしない
100%カバレッジのものでもテストしたということしか残らないし、100%にするために削除したものや、通らなかったものはテストがおかしいと疑い始める。

テストもコードであり、コードにはバグがあるものだ。

1年間失敗しないテストに関しては削除してしまったほうが良い、メンテにかかる工数のほうが高くなってしまう。
無駄なテストは削除せよ。

明らかなテストは削除せよ。

テストをすることで減るリスクと、メンテナンスにかかるコストを天秤にかけて判断をせよ。

単体テストをアサーションに変換していくことを個人的には推奨している。

静的解析ツールを入れていくことを勧める。
PHPstanやSonarQube等のツールでやってみては?

Baking with Vue.js

David Yell

David YellがjQueryより素晴らしいといった瞬間に軽いブーイング

それに対して、"Sorry, jQuery"と応答

cakephpで使うときは/srcと同じ仮想に/vueを作成する。

デバッグはchromeのエクステンションを入れよう。

vueの基本的な機能とvuex, axios, moment.jsの紹介

Twitterの実況では「現在ではaxiosを使うのではなくFETCH APIを使うのが標準です」ともコメントがありました。

詳しくはハッシュタグを追ってください!!
#cakefest2019

FETCH API

SSRを考慮すると、まだaxiosライブラリを使用しているようです。
サーバーとクライアントで日付を取得するためです。

Building interactivity with websockets

Wim Godden

websoket

1つのコネクションを使ってコミュニケーションを取ることができる

http, httpsを使用する

同じコネクションを使えるし、同時複数送信もできる。

websocketの知識が自分にあまりなく、理解しきるのはなかなか難しかった。

日本語の記事で改めて学ぼう。

https://qiita.com/chihiro/items/9d280704c6eff8603389

https://triple-underscore.github.io/RFC6455-ja.html

Life after CakePHP

Andrej Griniuk

2005−2006

CakePHPと私

自分のエンジニア人生とCakePHPの関係性を述べていった

Let's start your first OSS with CakePHP

Sho Ito

OSSをやってみたいというヒトは多いけど、やってみたことある人は少なくなってしまう。

1.どうやってOSSに貢献するか。

2.OSSを改善するための視点

3.企業としてのOSS活動への取り組み

1.どうやってOSSに貢献するか。

実際に自分はeasy queryというプラグインを作りました。

https://github.com/itosho/easy-query

repositoryを作った時点で半分作業は終わっているようなもの

  • OSSを改善するための視点

OSSを改善していくためには、有名OSSがどんなものかを見ていった。

人気の3C利便性、明瞭、継続性が目立った。

コンビニエンス=OSS使ったときのベネフィットについてです。

多くの人に使ってもらうためには利便性を持たなければならない。

easy queryのベネフィットはパフォーマンスです。

クラリティ=明瞭さ

かんたんに迅速に使うことができる。

エコシステムが必要だと思う。

インストールが無駄に難しいとか、標準機能とインターフェースが大きくかけ離れているのは避けるべき。

continuity=継続性

starに引きづられてはいけない。

ダイナミックに変化する業界なので、常に変化をしないといけない

  • 企業としてのOSS活動への取り組み

OSSのコントリビューション等をすると、マイルが溜まっていく

このマイルはインプット目的(資格取得や国際カンファレンスの旅費等)に使うことができる。

お金のモチベーションは長続きしない。

インプットのためのマイルの使いみちはみんなで議論する。

CMSでスマイルカウンターを作って運用している。

なぜこのような仕組みを作ったのか

→OSSを通じてお返しをしたいと考えていたため

エンジニアコミュニティへの貢献(カンファレンスのスポンサード等に使う)

個人の感想

正直賭けでしたが、通訳の方がいらっしゃたのでなんとか話している内容は理解できました。
初めて国際カンファレンスに参加したので、海外の方が多く参加さあれており、気圧されていましたが、結果参加してよかったなと思いました。
将来的に自分も登壇側で参加できるように頑張っていこうと思えるカンファレンスでした。
ありがとうございます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1