ここ数年でQAエンジニアという名前を聞く機会が増えてきたかもしれません。
QAエンジニアは、会社によって持つ役割が大きく異なります。
また、テストエンジニアとQAエンジニアは何が違うのでしょうか?
テストエンジニアは、主にテストの実施に特化しています。
一方、QAエンジニアはプロジェクトやプロダクトなどの品質向上に貢献します。
私は10年間テスター(テストエンジニア)をして、その後、転職によりQAエンジニアとなりました。
私のテストエンジニア・QAエンジニアとしての経験から、このセッションでは、QAエンジニアの仕事内容について詳しく説明します。
■概要
2018年のPHPカンファレンス福岡でしたテストライブをします!
今回のテスト対象は別のものを用意するよていです!
2018年の様子はこちらからご覧ください
https://underscore42rina.hatenablog.com/entry/2018/06/17/004141
2018年のPHPカンファレンス福岡でテストライブを行います。今回のテスト対象は、別のものを用意する予定です。
■詳細:
私は、PHPカンファレンス福岡でテストライブを行う予定です。今回のテスト対象は、現在検討中ですが、最新の技術を使用したプロダクトを用意する予定です。
このテストライブでは、参加者は探索的テストを目にすることができ、その方法や手順について学ぶことができます。
探索的テストとは、テスト計画やテストケースを事前に作成せず、テスターが自由に操作しながら、問題点や改善点を発見するテストのスタイルのことです。このテストは、想定外の問題点や改善点を発見することができるため、プロダクトの品質向上に貢献します。
さらに、探索的テストは経験ベースのテストと言われ、その手法は本などで技術を得られづらいため、参加者はこの機会に知識やスキルを見ることができます。
みなさまのご参加をお待ちしております。
仕事と家事と育児との分業をこなして15年目を迎え、感じたことをお伝えします。
分業のバランスを取るため、phperフリーランスという働き方を選択しました。これまで満足に分業の両立ができていたことはありません。今でも葛藤の毎日です。安心してください、分業のバランスが取れてなくて当たり前です。
今では子供達はある程度手が離れてきたので、仕事の比率を上げるべく、また決意を改めるため、昨年法人化しました。逃げれない状況を作って馬車馬のように働いています。
分業のモデルケースとしてお聞きいただけると嬉しいです。
ファーストリリースが3ヶ月後という状況の新たなWebアプリケーション開発プロジェクトに参加する中で、目の前のスケジュールに間に合うような高速開発と、ファーストリリースの先も破綻せずに改善しつづけられるよう中長期的な持続可能性を意識した開発を両立させることが求められました。
このトークでは、全力で走りながらレールを敷くようなWebフロントエンド開発を支えるために工夫した点、導入したテクニック、うまくいったことやいかなかったことなどをお話しします。
※本トークの内容は PHP に関連しません。
Webフロントエンドのテストは書けていますか?テストを書いたほうがいいのはわかっているけど面倒でサボりがち、UIを変更するたびにテストも壊れてしまうし、いずれメンテナンスされなくなるくらいなら最初から書かないほうがいいんじゃないか...そんな気持ちになったことがある人も多いと思います。
このトークではDOMのテストに特化したオープンソースのJavaScriptテストユーティリティライブラリ Testing Library を紹介します。
Testing Libraryのおかげで、これまで億劫だったDOMのテストは、むしろ真っ先に書きたいテストに変わるかもしれません。テスト駆動開発との相性も抜群です。さらに、Testing Library を使ってテストを書いていくとWebアクセシビリティの改善にも役立ちます。
普段あまりDOMのテストを書いてない人もDOMのテストに苦手意識がある経験者もぜひ知ってほしい、Testing Libraryの世界を案内します。
※本トークの内容は PHP に関連しません。
Laravelで多機能なアプリケーションをモジュラモノリスとして開発・メンテナンスしていこうとする時、Modelの依存は悩ましい点になっていると思います。AモジュールにあるModelがUserを、UserがBモジュールにある別のModelを参照してしまうと、結局疎結合にできず、メンテナンス時に依存を排除できません。
LaravelであってもORMとしてEloquentではなくDoctrineを使うことで、モジュール同士が依存しない、疎結合なモジュールによるモジュラモノリスが実現可能です。
実践的なモジュラモノリスLaravelのサンプルコードとともに、LaravelからDoctrineを使う実装についてご紹介します。
皆さん。
皆さんは型を書いていますか?
私は書いています。
なのに、いつの間にか型情報は消えているんです。
mixedになっているんです。
不思議ですね?
最近のPHPはバージョンアップのたびに型付けに対するサポートがどんどん厚くなっています。
それに合わせて開発環境が型情報をもとに補完候補を適切に表示したり、
静的解析によるチェックが高精度になり、
開発体験・開発速度が良くなっているはずです。
なのに、大切な型情報は消えてしまいます。
悲しいですね?
そこで、
どんな時に型情報が消えるのか、
どうやって回避するのか、はたまた回避は無理なのか。
主にLaravel・PHPStanとVSCode環境を例に最近の型にまつわる開発支援環境について発表します。
スプラトゥーン3やってますか?
スプラトゥーン3って魅力的なブキが多く、どのブキ使うかつい迷っちゃいますよね?
今流行りのChatGPTに直接聞けば教えてくれますが、ChatGPTのおすすめブキ以外にも自分にあったブキがあるんじゃなイカ?
そう思って、ChatGPTとPinecone使ってスプラトゥーン3ブキのレコメンド機能をSymfonyで作りました。
機械学習の知識がほぼない状態で、どのように作っていったか5分でお話しするでし。
使用技術
SPA全盛の時代ですが、まだまだ古き良きMPA(Multi Page Application)のシステムを触る機会は多いですし、
凝ったUIを必要としない社内システムなどでは、新規開発でもMPA構成を採用することは普通にあります。
MPAだとビューのテストは基本的にPHPフレームワークが提供してくれる結合テスト基盤を使って行うことになると思いますが、
結合テストで検証できるのはあくまでHTTPレスポンスの内容までで、その後ブラウザ上でJavaScriptを使ってある程度複雑な処理が行われる場合に、その部分をテストすることができません。
MPAであっても、一部の画面にだけちょっとしたDOM操作や非同期処理が必要になるケースは多く(例えばいいねボタンとか)、
このようなJSの処理は上記の理由から自動テストがサボられがちです。
このトークでは、こういったMPA上のJavaScriptの処理を楽にテストする方法を、Laravelにおける実装例をもとに解説します。
(例としてLaravelを取り上げますが、他のフレームワークにも容易に応用可能な内容です)
既存のMPAに後付けで簡単に導入することが可能なので、すぐにでも実務に活かせる内容になると思います。乞うご期待。
SPA全盛の時代ですが、まだまだ古き良きMPA(Multi Page Application)のシステムを触る機会は多いですし、
凝ったUIを必要としない社内システムなどでは、新規開発でもMPA構成を採用することは普通にあります。
MPAだとビューのテストは基本的にPHPフレームワークが提供してくれる結合テスト基盤を使って行うことになると思いますが、
結合テストで検証できるのはあくまでHTTPレスポンスの内容までで、その後ブラウザ上でJavaScriptを使ってある程度複雑な処理が行われる場合に、その部分をテストすることができません。
MPAであっても、一部の画面にだけちょっとしたDOM操作や非同期処理が必要になるケースは多く(例えばいいねボタンとか)、
このようなJSの処理は上記の理由から自動テストがサボられがちです。
このトークでは、こういったMPA上のJavaScriptの処理を楽にテストする方法を、LaravelおよびSymfonyにおける実装例をもとに解説します。
(例としてLaravelとSymfonyを取り上げますが、他のフレームワークにも容易に応用可能な内容です)
既存のMPAに後付けで簡単に導入することが可能なので、すぐにでも実務に活かせる内容になると思います。乞うご期待。
本LTでは、3ヶ月の新卒研修を経た新米エンジニアの私が、研修中に直面した課題や失敗、それから得た学びを紹介します。
そして、少しだけ未来の自分に伝えたいメッセージをお話します。
ここ数年で、エンジニアを取り巻く環境は目まぐるしく変化しています。
GPT-4を始めとするGenerative AIの台頭が、モノづくりの生産性や、エンジニアという職業そのものに与えるインパクトは計り知れません。
数ヶ月、半年のような短いスパンでも、私たちをめぐる世界は大きく変化しているかもしれません。
エンジニアとして成長し生き残るために、私自身が大切だと感じたことをお伝えしたいと思います。
本LTは、PHPに直接関連する内容ではありません。
しかし、多くのエンジニア(社会人・学生問わず)の方に共感していただけるようなお話をしたいと考えています。
「新卒エンジニアあるある」的な体験談や失敗談で、エンジニアの方々に懐かしんでいただけるように。
これから社会人エンジニアになろうとしている学生の方には、少しだけ近い目線でお話ができるように。
そして、今を生きるエンジニアとして、未来の自分に送るタイムカプセルになるようなLTができればと思います。
現代では「動的な」ウェブサイトを作ることが当たり前になっています。しかしなぜ「動的」なものを作らないといけないのでしょうか。
「ウェブサイト」とは、かつてはサーバー上にある静的なドキュメントにアクセスするためのものでした。
しかし、CGI の開発により動的なコンテンツを扱うメディアとして進化を遂げていきます。
HTML 内で動的な値を表示することができる「ページインライン」モデルの PHP が生まれ、
データベースと接続したウェブアプリケーションが普及していきます。
全世界のウェブサイトの多くが WordPress によって作られるようになっていきました。
今は動的な値を扱うウェブサイトにおいて、いかに早くユーザー体験を損なわずに必要な情報を届けられるかの工夫がされるようになります。
本発表ではそうしたウェブサイトの歴史的背景に加え、動的なウェブサイトにおける課題と改善のために生まれた技術・手法について触れ、今後のウェブサイト・ウェブアプリケーションの開発動向についても考えていきます。
PHPカンファレンスに参加される方の中には、またプログラミング経験がほとんどなく
これからPHPを勉強しようと考えているという方も多くいらっしゃると思います。
そんな方々へ向けて、Webアプリケーション開発に必須の知識である
データベースやSQLというものを、世界一分かりやすく解説します。
このトークのゴールは、
・データベースという概念をなんとなく理解すること
・簡単なSQLを自力で書けるようになること
です。
私自身が初心者の頃にこういう説明をしてほしかった…と思うような
順序と言葉遣い、例示を用いて、初心者向けに本当に世界一丁寧に(当社調べ)解説します。
初心者の方の「データベースってなんだか難しそう」という印象を吹き飛ばせたらと思います。
※データベース/SQLというものを全く知らない方に基本のキを腑に落としていただくことが目的のトークなので、
分かりやすさを優先して厳密さを多少犠牲にする場面があります。上級者の方はご注意ください。
※このトークはPHPに直接関連しない汎用的なトークとなっています。
この発表ではSREの概念や手法をDevOpsに適用するための具体的なアプローチを紹介し、組織に適したSREの実践方法を探求していきます。
2022年9月29日に発表されたState of DevOps 2022は、ソフトウェアデリバリーパフォーマンスに関する調査結果レポートであり、年に1回Google Cloud内のDevOps Research and Assessment(DORA)チームが公表しています。このレポートでは、ソフトウェアデリバリーパフォーマンスを評価するFour Keysの指標や、Four Keysを改善する上で効果が高いとされるケイパビリティについて、さらにソフトウェアサプライチェーンのセキュリティに関する調査の詳細が記載されています。
DevOpsは、開発(Development)と運用(Operations)の連携を強化し、ソフトウェア開発プロセスの効率化を目指すアプローチです。一方で、SREは開発と運用双方に取り組み、システムの信頼性や効率性を高めるエンジニアリング手法です。DevOpsとSREは相互に補完的な関係にあり、DevOps実践を具体的で効果的に進める指針を提供します。
ただし、SREの概念や手法を盲目的に適用すると、DevOpsの本来の目的や価値が見失われる可能性があります。自社の状況やニーズに合わせてSREの考え方や手法を適切に採用し、DevOps実践を効果的に推進することが重要です。
この発表では、State of DevOps 2022を紹介しつつ、組織に適したSREの実践方法を探求します。具体的には、SRE導入時のコミュニケーション戦略、チーム構成や役割の再定義、適切なツールや技術の選択など、効率や生産性を向上させる具体的なアプローチに焦点を当てます。
昨今WEBの開発現場では当たり前になりつつある、フィーチャーフラグですが、PHP○の時代では一般的ではなかったために、環境変数などで機能リリースを行うことも少なくありません。
古いPHPほどテストがなく、リリースに対する不安が大きいのが世の常ですが、PHP○でもフィーチャーフラグを利用する方法があるので、紹介します。
Domain Modeling Made Functionalは、静的型付けによる関数型プログラミング言語でのドメインモデリングの手法について説明した書籍です。重要なコンセプトは、業務ドメインを型で表現し、異なる概念には異なる型を作成することです。静的型付けによる関数型プログラミングとは対照的に、PHPは動的型付け言語ですが、業務ドメインを型で表現することは可能です。本講演ではそのメリットについて検証し、具体的なコードを使用して説明します。
ドメインモデリングとは何なのかという点についても、冒頭で説明しますので、馴染みのない方もぜひ参加してください。
新しく入社した会社で任される仕事は既存のシステムの技術的負債の返済。このような経験をほとんどの方が受けているのではないでしょうか。
「なんて醜いコードなんだ」と思ったり「こんなコード,メンテナンスしたくない」と思う時もあるはずです。
さらに言えば「なぜ初めからもっと丁寧に書けるエンジニアを採用しなかったのか」と思うこともあるでしょう。
そして「自分はこのようなコードを絶対に書かないぞ」と決心するはずです。
しかし,技術的負債は,なぜ生まれるのでしょうか。「採用力がなかったから」「経営陣の実力不足」「経営陣がエンジニアへの理解に乏しいから」など様々な理由を思い浮かべるはずです。
また,技術的負債を作った当人達は,人事評価で好印象を与えやすく,逆に後から入社したエンジニアは技術的負債を返済し,堅牢なアプリケーションを作っているのにも関わらず,満足行く人事評価を得られないことがあるなどして,軋轢が生まれやすところです。
技術的負債が生まれないようにするには,技術的負債が生まれる理由を知らなければ根本的な解決は望めません。
本トークでは,CTO という経営に近い立場から,技術的負債が生まれる原因を解明していきます。
そして,本トークを経て,オーディエンスの皆様が技術的負債と前向きに向き合うキッカケの一つになれば幸いです。
※本トークは,PHP に関連するトークではなく,汎用的なトークとなっています。
昨今のWEBサービスにおいてはインフルエンサーによる広報や、ニュースサイトでの掲載により、突然の大量アクセスが発生することがあります。そのような場合に、サイトがダウンしてしまったり、やむなくレートリミットをかけることがあります。
このような状況において、WEB上に仮想待合室を作ることで、ユーザーを待ち行列に並ばせることで、効率的にリソース制御しながらサービスを提供することができます。
本セッションではngx_mrubyとGoで作成した高速な待合室APIを用いて、かんたんに仮想待合室を実現する方法を紹介します。
技術的なトピックとしては、Nginxの詳細な仕様や、機能に触れながら、Go、Redisを用いて高速なAPIを作る方法について紹介します。
昨年11月のPHP TechCafe、『PHPerのための「PHPフレームワーク」を語り合う』でLTした、『それぞれの特徴から考えるフレームワーク選び』。それをもうちょっと深掘りし、今までWebアプリケーション開発で経験して感じた"Laravel", "CakePHP", "Symfony"それぞれのフレームワークの特徴と適している利用シーン、今後のプロダクト作りのフレームワーク選定する際に注目するポイントについてお話しします。
LT時のスライド:
https://speakerdeck.com/ippey/soresorenote-zheng-karakao-eruhuremuwakuxuan-hi
発表者のチームではPull Request毎にProduction同等の動作確認用の環境を自動的に生成してリリースサイクルをスムーズに回せるようにしています。
GitOpsを用いたシンプルなインターフェイスと通知によって、デザイナーなどの非エンジニアでも簡単に利用できる工夫があります。
本発表では、その工夫について紹介するとともに、発生した課題に対してOSSを開発したり、ArgoCDに機能追加をした話を交えてお話します。