テストをなんのために書くのか?
この目的設定はとても大事なことだと気づいてしまった。もう後戻りはできない。
エンジニアが果たす努めとはソースコードを書くことではないかもしれない。でもソースコードを書くことを辞めることはできない。
私達が果たすべき目的は、コードを書くことでもなくJSONに色をつけることでもない。
顧客に届ける価値を取り巻く様々な開発手法を織り交ぜながら、テスト駆動開発について紹介する。
弊社M&Aクラウドでは会社や事業を売却したいユーザーと、その会社や事業を買いたいというユーザーがマッチングするプラットフォームを提供しています。
そのシステムでは、マッチングした場合のみに特定の情報が閲覧開示されます。
しかし既存の実装ではほとんどUIに近い層で情報をコントロールしていたためヒヤリとする実装となっていました。
このトークではその実装を堅牢な仕組みに作り直す事例を紹介したいと思います。
PHPStanも活用し、コーディングの時点で開発者が迷うことなくオブジェクトを利用できる設計を紹介します。
※本トークでは実際のコードではなく参考コードで紹介します。
みなさんの作っているアプリケーションは様々なライブラリに依存していることと思います。
その依存しているライブラリに脆弱性の報告があった場合、適切にパッチを当てる取り組みが行われていますか?
このLTではDependabot Alertを用いて脆弱性アラートの検知と、パッチを当てるために私の所属している会社が行っている取り組みを紹介します。
受託開発PHPerがインフラエンジニアとして転職しました。
福岡在住の方も多いでしょうし、福岡から東京の会社でフルリモートする話や、転職についてどんなツールを使い、どんな思いで転職先を選定していったかなどを話せたらなと思います。
スクリプトがサーバ全体のメモリを食いつぶさないようにするための安全装置として、PHP にはプロセスごとのメモリ消費を memory_limit という設定値で制限できる仕組みがあり、制限を超えた時には "Allowed memory size of N bytes exhausted" というメッセージが出ます。
世には PHP 製の OSS が星の数ほどあり、GitHub を "Allowed memory size of" で検索すれば、そういった PHP 製の OSS プロジェクトでメモリ問題に悩まされているものを見つけられます。
それらを適当に拾い食いして辻斬りのように解決していく活動を通じ、PHPのメモリ問題の基本的な解決方法を紹介していきます。PHP の基本的なメモリ管理機構やメモリ消費量の計測方法、参照関係のたどり方、メモリを食いがちな部分といった話もあわせて解説します。
過去、PHPerKaigi 2022のパンフレット記事に「日本語で開発してラクしよう」を掲載していただきました。
記事では、「英語について考える時間がもったいないよね」という主旨でした。
日本語でコーディングすることで、設計・実装をよりよくしていくスピードを上げようというアプローチです。
想定以上に好評なフィードバックをいただきましたが、皆さん現場で日本語コーディング使ってますか?
かくいうぼくは使う機会が無いんですが。
今回のトークでは、実務的に日本語で開発作業がどこまでできるのか試した結果を共有します。
ファイル名は?RDBは?ORマッパーは?Gitは?など、詰まりそうなところはどうなるのか。
日本語のほうが、英語よりはいくらか得意な人は多いと思います。
なら、日本語コーディングが認知される世界のがラクですよね…?
マネーフォワードでは、各サービスが1つの大きなDBに依存している状態を抜け出し、各サービスごとに別々のDBを持つように再構築していくプロジェクト(桃園脱却プロジェクト)が進行しています。
桃園脱却プロジェクトにおいて、私が担当した業務の1つに、Money Forward クラウド経費の会計データ参照の分離がありました。この対応では、サービスの停止やビッグバンリリースをすることなく、共通DBへの依存を切り離せました。
本登壇では、この分離の進め方や採用した技術・手法についてお話します。
話す内容
・桃園脱却とは?
・featureフラグを活用したリリース
・Rubyを使っているMoney Forward クラウド経費上でgRPCを使用した会計データの参照手法
・リモート環境下での、複数人の開発者で分離を進めるためのissueの切り方やコミュニケーション
・コードを書かない選択肢
私は普段からAWSの構築など、クラウドインフラに関する技術支援を行っていますが、PHPは"ド"初心者です(>_<)
ですので本セッションでは、PHP・Laravelのキャッチアップを兼ねて、AWSクラウドインフラ上にLaravelのAPIサーバーを構築してみたいと思います。
Laravelアプリ開発の際には、PHPのコーディングはもちろんのこと、
ホスティング先(仮想サーバー・コンテナ)、サービススケーリング、RDSやファイルサーバーを用いたデータ永続化、CI/CDパイプラインの構築、ロギングやモニタリングなどの運用監視、セキュリティ対策などなど、
本番運用レベルのガチ構成で構築して、Laravelアプリケーションの良さを最大限引き出してみます。
PHPプロのみなさんからのツッコミもお待ちしております!
アジャイルのプラクティスにプランニングポーカーというものがあります。
タスクのストーリーポイントをみんなで見積り、今までのスプリント履歴からベロシティを計算し、今回のスプリントで行う作業を決める。スプリントが終わるときれいにタスクが完了し、デリバリー出来ている。。。本当にそんなにうまく運用できていますか??
でも、不確実性コーンというものがあって、初期のソフトウェア見積りは、4倍から1/4倍まで工数がブレてしまって信用度が低い。。。本当でしょうか??
実はよく知られていない不確実性コーンの歴史を紐解き、現代の統計データからどれほどソフトウェア見積りが可能になっているのか?
古典的ソフトウェア見積りを再考した調査結果を発表いたします。
皆さんはPHPのDockerfileを書かれておりますでしょうか。プロジェクトに一人、Dockerfile職人がいらっしゃいませんか?PHPのDockerfileはいろいろな書き方があり、秘伝のタレになっていませんか?秘伝のタレを脱して、自信を持ってかけるようになりたくないですか?
「テストを書く時間がなくてぇ」「違うよ〜時間がないからテストを書くんだよぉ〜」
なるほど人はそんな風に言いますが、一体どうしたら…
鶏卵の問題にせずに、やれる所から始めていく事が重要です
テストを使って早く書くとは、楽してコードを書く技術です
長い目で見た「早さ」もありますが、決して「未来の為に歯を食いしばれ」と言う訳ではありません
今日のタスクを早く。その為に使えます
「うちにはテストを書く土壌も仕組みもなくて…」で諦めたくない!
「書いた方が早い」「書いた方が楽」の感覚を、小さくても掴める事を狙いとします
私は普段AWSの構築など、クラウドを中心としたAWS技術支援を行っています。仮想サーバーを立てたり、データベースやロードバランサーなどのリソースをAWSクラウド上に構築しています。
しかし普段からクラウドインフラを扱っていると、サーバーに乗せるアプリケーションへの関心がどうしても薄くなってしまいます。
そこで本LTでは、AWSによるクラウドインフラからPHPアプリケーション(WordPress)まで、上から下までぜ~んぶ構築・開発してみたいと思います。
私は大学時代にJavaScriptやTypeScriptでWeb開発に従事していましたが、PHPもぺちこんも初心者になります(>_<)
ですので、PHPやWordPressをどれだけキャッチアップできるかなど、AWSエンジニア兼PHPビギナーとして、技術的に突っ込んでいきたいと思います!
PHPプロによるツッコミもお待ちしています!
このセッションでは、PHPとDockerで様々な言語をブラウザのフォームから実行できるアプリを作ったので、アプリの仕組みや特徴をお話しします。
プログラミング学習サイトではブラウザにコードを入力すると実行結果が分かるようなサービスを提供しています。以前、このようなWEBサイトをPythonとDocker(Docker outside of Docker)を用いて自作しました。
こちらの解説は月刊I/O 3月号4月号に掲載されています。
今回は、Pythonで作成した上記のアプリのPHPバージョンを作成しました。
本セッションでは、上記のPHPのコードを解説し、デモもします。
対象
Webアプリケーションは繁盛するとどんどん機能が追加されていきます。Laravelを代表とするWebアプリケーションフレームワーク(WAF)は、機能が少ない間は開発スピードも早く、比較的理解も用意なプログラムが書けますが、年を重ねるごとに複雑化していきます。
このように肥大化したウェブアプリケーションのことを巨大泥団子(Big Ball of Mud)と呼びます。運用・保守性が下がってしまったレガシーでモノリシックなWebアプリケーションはどのように改善すればよいのでしょうか?
本トークで話す内容
日本でも大人気のウェブアプリケーションフレームワーク「Laravel」 ある程度のデータ量までは、割と速い速度で動いてくれる Laravel をあの手この手で低速化させてみようという試みです。
PHPカンファレンス2022で一度低速化については発表しましたが、今回はさらに、あの手この手で遅くしてみようという試みです。
このトークでお話すること
PHPに限らず、プログラムは繰り返しても劣化しない正確さと速さが持ち味です。人間は繰り返すと集中力が落ち、集中力が落ちると正確さと速さが劣化しがちですよね。
私は素早く開発することを突き詰めた結果、定型的なPHPコードは自分で書くよりPHPに書かせた方が早いと考えるに至り、さまざまなコード自動生成を日々試しています。
まだまだ実験途上の試みではありますが、私がどういう不便を解消したいと考えているのか、その不便を解消するために使っているツールのアップデートの履歴、PHPカンファレンス福岡当日までの成果を発表したいと思います。
PHPにもっと詳しくなりたいなぁ〜と思っていた2022年の4月、ふと思い立って PHP のメーリングリスト(Internals)を読み始めました。途中、しんどすぎて中断したこともありましたが、段々と体が慣れてきて、最近は安定して週1でまとめを発表するまでになりました。
当然ですが、メーリングリストの中身は PHP の話題で満載です。知らない機能、使ったことのない関数、初見の仕様などが盛りだくさんです。
本 LT では、Internals を読むとどんな知識が得られるのか、そしてそれが実際にエンジニアリングにどのように役に立つのか、Internalsの魅力をお伝えします。
「エンジニアもオーナーシップを持とう」、「エンジニアにオーナーシップを持ってもらうには?」
プロダクト開発をするエンジニアがオーナーシップを持つに越したことはないというのは既に共通認識だと思います。
しかし、オーナーシップとは何で、どうしたら持てるものでしょうか。
福岡の奥地まで探しに行ってみたいと思います。
約1年前に主だったメンバーの退職を機に組織体制が大きく変更されました。
様々な組織イベントの移り変わりがあるなか、私達のチームは社内LT会という文化の重要性を理解し、この文化を残し発展させることを選びました。
旗振り役がいなくなった後、この社内LTの文化をどの用に引き継ぎ継続していったのかを話します。
話す内容
非同期処理やマイクロサービス間の通信などで利用頻度が増え続けているQueuingシステムを、PHPとAmazonSQSでの実装を用いて解説します。
Queueの基本であるFIFOの考え方から、それをコンピューティングに応用する方法、AmazonSQSの設定でQueuingシステムを制御する方法までが本発表の対象となります。
扱うトピック
・Queueの基本とFIFO
・Queueって何が嬉しいの?どう利用されてるの?
・Queuingシステムに欠かせない「ポーリング」について
・Dockerでマイクロサービスをローカルに再現し、通信をSQSで管理するデモを動かす
SQS操作を通じてQueuingシステムについての理解に集中していただく為に、LaravelデフォルトのJobクラスなどのフレークワーク依存ではなく、PHPのみでサンプルを記述して解説を行います。