チームのタスク管理について、以下のようなお悩みはありませんか?
・ タスクの優先順位がよくわからず、大事なタスクが締め切り直前なのに終わってない!
・ タスクが属人化していて、タスクは計画通りなのか、なにか問題を抱えてしまっているのかを把握するのが難しい!
私たちのチームはこの対策として、チームの開発効率と生産性を向上させるアジャイル開発手法の一つ、スクラムを始めました。
スクラムを活用することで、タスクの優先順位や進捗がチームで共有され、柔軟に見直すことが可能になりました。
また、アジャイルのマインドセットが身につき、日々のタスクへの向き合い方にも良い変化がありました。
こんな良いことづくしのスクラム、軽い気持ちで始めてみませんか?
【このLTで話すこと】
・ スクラムってなに?
・ なんでスクラムを始めたの?
・ スクラムの始め方
・ スクラムを始めたことによるチームの変化
みなさんは開発の際に用語集をつかっていますか?
人によって指す言葉が異なり混乱した経験はありませんか?
そんな悩みを、情報設計とユビキタス言語の定義を行うことで解決してみましょう!
最近、私が所属するチームで新規機能開発をすることがありました。
その際に、情報設計を行いユビキタス言語の定義を、エンジニア、デザイナー、ディレクターのみんなでやってみました。
その結果とても良い効果が得られたので、是非多くの人にそのノウハウをシェアしたいと思います!
本トークでは、実際の新規機能の開発においておこなった、情報設計やユビキタス言語の定義のやり方や進め方、それがその後のアプリケーション開発にどのように寄与したかについて話します。
IDはある要素を一意に特定するものです。まさに識別子です。
みなさんはID(の生成方法)をどのように決めていますか?
WebアプリケーションにおいてはMySQLのAUTO_INCREMENT属性やPostgreSQLのSERIAL型といったデータベースの機能を使った採番結果をIDとする方法がよく知られています。しかし、時にはデータベースによる採番では機能要件を満たせないことがあります。
IDひとつをとっても要件があり設計があります。
最近、私は2つのIDを決める場にいました。
1つはプロダクト内で使うID、もう1つはOSSのツールの中で使うIDです。
どちらも数値の採番では要件を満たせないと判断し、改めてIDの生成方法の検討をしました。
本発表ではそれぞれの事例でどのような課題があり、解決したのかを紹介します。
IDというみなさんに馴染みのある要素で、設計の楽しさを感じてください。
皆さん、コードリーディングは得意ですか?
私には苦手意識がありました…
しかし、仕事で他者が書いたコードをメンテナンスしなければなりませんし、OSSを使いこなすため、あるいは、使いやすくするためにそれを読みたくもあります。
苦手なりに工夫することで、仕事に支障なく、他者が開発したOSSを理解しPRを送ったりできるようにもなりました。
このトークではPHPで書かれたコードを理解するために行なっているプラクティスやツールを共有します。
2020年からモブワークという開発スタイルを継続して取り入れており、そこで感じたメリットについてお話をさせて頂きたいと思います。
またチームの熟練度の向上に伴い、モブワークの形態も進化させていった内容にも触れていきたいと思います。
実際にチームで実践していることや、それを支えているツールについても紹介したいと思います。
PHP カンファレンス福岡 2023にて「APIシナリオテストを書くべき10の理由」というセッションで登壇を行いました。
その登壇までに至る経緯を推しツールであるrunnの出会いからお話したいと思います。
個人的にはOSSへの貢献や取り組み方など、貴重な経験になったと感じており、またカンファレンス駆動開発も大変魅力的でその一部をお伝えできたらと考えています
皆さんAPIテストの自動化を行っていますか?
APIテストでは効率よくカバレッジを上げることができます。ただしE2EでのテストとなるとControllerテストとは異なりそのままではコードカバレッジを測定することが出来ません。
E2Eテスト(APIテスト、ブラウザテスト等)でバックエンドのコードカバレッジを取得する際の方法をお話させて頂きたいと思います。
2022年11月のChatGPT登場以降、AIに関する話題は増える一方です。
PHPからは若干、距離があるとも思える生成AIがどのように作られているかを大まかに理解できることを目標とした発表です。
Webアプリケーションなどを開発するPHPエンジニアを対象として、AIと機械学習の概要をデモを交えて紹介します。
トーク内でお見せするソースコードはこちらです。手元で見ながら動かしたい方は事前にcloneすると理解しやすいと思います。
https://github.com/yandod/php-ml-example
世の中には止むに止まれぬ事情で古いバージョンのPHPを使用することもあります。
世の中にはコンテナという便利な技術がありますが、止むに止まれぬ事情で手元にインストールしたいときもあります。
決してそういう事情があったわけではありませんが、今回はPHP4系から8系まで手元でビルドしインストールしてみようと思います。
弊社はPHP >= 8.1 以上しか使用しないので決してそういう事情があったわけではありません。
つい手続き型の複雑なコードになってしまい、読みづらい、メンテナンス性が低いという問題が起こったことはありませんか?
一方で、デザインパターンは知っていても、いくつかのデザインパターンはPHPでは使えないと思っていませんか?
例えば、オブザーバーパターンはJavaなどの常駐することができるプログラミング言語で使うものであって、PHPでは使えないという声を聞きます。
しかし、実際の世界と向き合って、複雑な問題を解決するプログラミングにデザインパターンは有効です。それがPHPであってもです。
弊社では運送・配送業向けのシステムを作っています。コードが複雑になるという問題を実際にデザインパターンで解決してきました。
このトークではオブザーバーパターンを例にとって、それがPHPでどのように実装できるかを実際のプロダクトにも使った実装方法を紹介しながら伝えていきたいと思います
PHP 8.1 で readonly property が登場したのも束の間、PHP 8.2 では遂に readonly class がサポートされるようになりました。
近年主立った言語でサポートされることが増えた「不変」であることが保証された変数やクラス。
PHP でもこれらの機能がサポートされたことで、中〜大規模なアプリケーションにおいてより堅牢なアプリケーション、つまりバグを生みにくく、保守しやすいコードを書くことができるようになりつつあります。
本トークでは readonly class を使う理由、そして実際に使って日々開発をする中で得たリアルな知見をお伝えしたいと思います。
~君はそのアルファベットの意味を考えたことはあるか?~
技術的な話題には、数多くの"略語"が利用されます。
技術的な名称は英語であるため、「PHP」や「JIT」などアルファベット3文字程度の略称が用いられることが多いでしょう。
しかし、その略語の正式な名称、または語源をご存じでしょうか?
正式名称を知れば、その略語の正体が見えてくる??
本トークではエンジニアになじみ深い"略語"をクイズ形式で紹介します。
「コンピュータは0と1しか処理できない」とよく言われています。
ビット演算があったり、浮動小数点演算があったり、文字コードが16進数だったりと、PHPerのみなさんもなんとなく実感としてはあると思いますが、なぜ「0と1しか処理できない」のでしょうか。
このトークではアナログの世界・電気回路でデジタルの世界・コンピュータ処理がどの様に表現されるのか、私たちがC言語やPHPで書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。
ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。
現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。
このトークでは私たちが愛するPHPをスタート地点にして、「CPUによる"プログラム実行"」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。
コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!
現在、私はPHP5.2で稼働しているレガシーアプリケーションのバージョンを最新の8.2に上げるプロジェクトに参加しています。
このプロジェクトは、7系へのバージョンアップをスキップするという挑戦的なプロジェクトで、さらに、現状は使用中のフレームワークが古かったり、テストがほとんど書かれていないという状況でもあります。
このような制約がある中で、「バージョンを8.2に上げて、アプリケーションを問題なく動かす」という目的を達成するために私が今考えている戦略についてお話しします。
このプロジェクトは今まさに進行中であるため、もっといい案があったり同じような課題を解決したことがある方がいれば助けていただけると嬉しいです!
バージョンアップのプロジェクトは多くの企業で共通の課題であるため、お話しする内容が皆さんの取り組みの一助となれば幸いです!
私はこれまでビジネスロジックとドメインロジックをほぼ同じものとして捉え、ドメインモデルが業務知識を表現できるような実装を意識していましたが、開発を進めていく中でもっと良い構造があるのではないかと思うようになりました。
そして最近では、この2つのロジックを区別しドメインモデルからビジネスロジックを追い出すことでさらに良い構造を作ることができるのでは考えています。
このトークでは、以下のトピックに関する私の考えを共有することを目標とします
ChatGPTの登場以降、関心の高まっている大規模言語モデル。
機械学習に関するツールやライブラリがPythonに多いですが、PHPからそれらのモデルを駆動させる事もできます。
Pythonで注目の集まっているPHP LangChainのPHP実装、PHP LangChainを紹介します。
LangChainは個別のWeb APIやローカルで動作するモデルなどを抽象化した実装で扱う事ができます。
これにより復数のモデルを組み合わせたり、利用するモデルを切り替えられます。
可能な範囲でデモを交えて紹介し、利用したプログラムコードなどは公開する予定です。
予定する内容
・大規模言語モデル入門
・PHP LangChainとは
・PHPからOpenAIのモデルを利用する
・PHPからLLaMAのモデルを利用する
【トーク概要】
『コードレビューやペアプロの文化がない環境で過ごした転職前の5年間』と『チーム開発が活発な職場に転職してからの半年間』では、
確実に後者の方が私に多くの学びや恩恵を与えてくれています。
1人ではなくチームで開発をすること、人を頼ることのメリットについて、お話したいと思います。
【対象者】
・職場にコードレビューやペアプロの文化がなく、基本的に一人で開発している方
・人を頼るのが苦手な人
・スキルアップに伸び悩んでいる人
※大きめなカンファレンスでの登壇は今回がはじめてです。
6月にGoogleが運営するドメイン登録サービス「Google Domains」の売却が発表されて話題になりましたが、一般的にドメインとはインターネット上のURLのことであるくらいの認識で、普段ドメインに関わる機会は少ないと思います。 しかしドメインとは2023年においてもインターネット上においてとても重要な要素です。 そこで普段ドメイン登録サービスの開発に携わる自分がドメインについての入門的な基礎知識から普段あまり知ることがないドメインの管理構造や公表されている管理ポリシーなどについて紹介し、みなさんにドメインについてより興味をもっていただきたい思います。
本トークでは以下についての発表を行います
私はこの1年ほど、趣味プロジェクトとして1980年代に栄華を誇った名作CPUである"Z80"のハードウェアエミュレータを開発しています。
これはZ80で動作しているコンピュータからZ80を取り外して、代わりに自作のハードウェアを取り付けて動作させるというもので、Raspberry Piをベースに開発しています。
PHP Conference Japan 2022では、実際にZ80として動くハードウェアエミュレータをご紹介しました。
このトークでは昨年の大きな課題だった動作速度を改善させるべく意を決して踏み込んだベアメタルプログラミングの世界について利点と欠点、それがもたらすパフォーマンスについてお話します。
CPUを作ってみたい方はもちろん、コンピュータの仕組みを理解したい方や、プログラムが実行された時にコンピュータの中で何が起きているのかを知りたい方などにもお楽しみ頂けると思います。