WEBアプリケーションを安定的に運用する上で、多くの考慮が必要です。
私たちのチームは、PHPアプリケーションをAWS上で運用しており、コスト削減とセキュリティ向上の
課題に直面していました。
本セッションでは、AWS認定資格を取得する過程で得た知識を生かして、
これらの課題解決に向けての取り組みを、主に下記の内容について具体的にお話します。
・コスト最適化のために検討したサービスや設定の変更点
・セキュリティを強化するための機能やベストプラクティス
本セッションを通じて、明日から実践できる費用対効果の高いソリューションを見つけることができます。
インフラに関わる機会が少ない方でも運用への興味と意識が高まることでしょう。
サービスが成長すると愚直にコードを書いているだけではパフォーマンスの問題にぶつかります。
参照はcacheやリードレプリカを増やすことで対応することができますが、書き込みが多い場合はそういうわけには行きません。
PHPの鬼門ともいえる、書き込み処理を如何に改善していくか。
そのために必要な基本的な考え方や実際のアプローチについて説明します。
手前味噌ですが、私の所属する株式会社リンケージには、PHPのカンファレンスで毎度のごとく登壇するような実績のあるエンジニアが集まっています。
私は23年3月からPdMとしてエンジニアの方々と一緒に働いてますが、よく耳にする一般的なエンジニアとは思考と行動がまったく異なると日々感じています。
この1年間、そのノウハウを盗むべく、気づきがある度にメモを取り参考にしてきました。
今回は、そのメモをもとに、PdMという客観的な視点から実績のあるエンジニアはどのような思考をもってどのような行動をとっているのか、以下3つのベクトルに分けて説明していきます。
①対エンジニア職(開発チーム内)
②対ビジネス職
③対自己
【主な対象者】
・エンジニア/プロダクト開発に関わる方:働き方やチームビルドの参考に
・ビジネス職の方:エンジニアとの関係構築の参考に
・エンジニア採用担当者:エンジニア採用の参考に
私の職種はPdMであり、PHPerでもエンジニア経験者でもありませんが、2023年のPHPカンファレンス福岡を皮切りに、計5回(予定)のPHPのカンファレンスに参加してきました。
知識も経験もない私がカンファレンスを楽しめているのは、間違いなく懇親会を楽しめているからだと思ってます。
これまで、懇親会を楽しむためのインプットとアウトプットを繰り返し、どのような考え方でどのような行動を取ると最高に楽しめるかが分かってきました。
PHP領域において圧倒的ハンデを背負う私が実践するノウハウは、参加経験の少ない方がカンファレンスを身近に感じるきっかけになるのではないかと思ってます。
懇親会前のLTで、ぜひお話させてください!
◆主な内容
・懇親会ってどんな感じ?
・懇親会を楽しむためのコツ(思考編)
・懇親会を楽しむためのコツ(行動編)
・懇親会だけじゃない!より楽しむためのノウハウ
みなさんモック大好きですよね?
外部依存から隔離してテストの実行を容易にする便利なものですもんね。
しかし、かの名著、オブジェクト指向設計実践ガイドでは、こう言っています。
モックを使用したテストは「夢の世界に生きる」状態を作る可能性があると。
この「夢の世界に生きる」という表現は、モック(スタブ)を使って現実から隔離された環境でテストを行う「理想の世界」を指すメタファーです。
現実世界とは異なる世界を作ってしまえるが故の脆さも表しています。
具体的には、モックの使用で実コードとテスト間のふるまい(インターフェイス)に乖離が生じ、テストの信頼性が落ちる可能性などが挙げられています。
では、モックの使用を避けるべきかというと、そうではないと思っています。
重要なのは、モックとの「上手な付き合い方」を見つけることです。
一緒に夢の世界でモックとの上手な付き合い方を見つけてみませんか?
このセッションでは、「何か」を求めカンファレンスや技術イベントに参加して次のアクションに繋げたいと思っている方に「今からできるアクション」をお伝えします。
私は、技術同人誌即売会にスタッフ参加したら、パソコン雑誌に記事を投稿できること知り、記事を投稿したら、掲載していただけました。
参加している最中は、実際に「執筆する」というアクションまで想像できていませんでした。
しかし、参加したことで、「なんとなく執筆してみたい」が「このような記事を執筆したい!」に変化し、次のアクションに繋げることができました。
皆さんも何かを求めてカンファレンスに参加していませんか?その何かに出会うために、PHPカンファレンス福岡2024からできるアクションをお伝えします。
私の
AWS Lambdaは、公式ランタイムにPHP対応はありません。
ですが、Matthieu Napoliさんが開発しているBref(ブレフ)を使うことで、PHPを使えるようになります。
このプロポーザルをご覧になっている、カンファレンス支援システムであるfortee(フォルテ)。
PHPerKaigiやiOSDCを主宰している長谷川さん(@tomzoh)が開発しはじめたCakePHPベースのアプリケーションです。
様々な機能があり、数年の歴史が積み重なったアプリケーションであるforteeを、AWS Lambdaと他AWSサービスと組み合わせてデプロイしてみます。
成功するのか?すんなりデプロイできるのか?
失敗するのか?AWS Lambda用に変更対応が必要なのか?
費用はどの程度になるのか?
forteeデプロイで得られたAWS Lambda/Brefの知見をご紹介します。
フルスタックウェブフレームワークであるPHP(独自見解)には、他言語とはことなり、Version 4からはセッションが標準拡張として搭載されています(拡張なんですよ、知ってました?)。便利ですよね、$_SESSION。
しかしPHPのセッションは様々な罠も多く、Easyではありますが、Simpleではない、安易に頼るとしんどい時もあります(個人の主観)。
今回、PHPのセッションのPros/Cons、アンチパターン、避けてみる話やセッションのマイグレーションの話をできればと思います。
エンジニア同士の繋がりを作る上でコミュニティの存在は重要です。
私が異業種からIT業界への転職を目指した際に、業界内の知り合いが少なく孤独感を感じていました。
そのような背景からエンジニアを目指す人達が一緒に勉強したり、情報共有できる場を作りたいと感じるようになり、
プログラミング学習コミュニティを立ち上げて運営しておりました。
活動内容は、LT会や交流会、勉強会を開催するなど多岐に渡ります。
コミュニティ運営をすることで学習に対するモチベーションを保てたり、繋がりの輪が広がるなど良い面もありましたが課題も多くありました。
本トークではコミュニティ立ち上げから閉じるまでに経験したことや、具体的な事例を運営者目線でシェアすることで、
コミュニティ運営の魅力やメリット、デメリットをお伝えします。
コミュニティ運営に興味のある方や、運営していて課題を感じている方にお届けしたいお話です。
みなさんはWebにおけるPHPランタイムを構築したことはありますか?
ある方もない方も、自分が開発時に使っているPHPランタイムがどのWebサーバーと実行方式の組み合わせで動いているか把握していますか?
把握している方は、なぜその組み合わせで動かしているのか説明ができますか?
私はこれまで、Laravelを使ったPHPランタイムを開発環境の構築も含めて、主にApache, Nginx, Laravelのビルトインサーバーの3パータンで構築してきましたが、きちんと時と場合によって使い分けてきました。
このセッションでは、
について説明しながら、具体的にどのようにPHPランタイム(特にLaravelに焦点をおいて)を使い分けるのがよいのか?についてお話しできればと思います。
普段何気なく使っているであろうORM。Laravelを使っていると、勝手にEloquentという便利なものが一緒についてきますよね。
新卒・中途採用でも初心者のPHPerの方と話していると、「生のSQLは全く書いたことがなくて…ORMでならデータ操作を表現できます」という方も少なくありません。
逆にずっと生のSQLを書いてきた人からは「生クエリならすぐ書けるのに、ORM使ってJoinやサブクエリ書くのめちゃめんどい」という声をよく聞きます。
では…
自由自在にORMがかければ生のSQLを知っておく必要はないでしょうか?
あるいは、生のクエリを自由自在にかければORMは必要ないでしょうか?
といわれると、そんなことはないですよね。
このセッションでは上記の疑問に触れつつ、「なんとなくORMを使っている」人に向けて「なぜORMを使うのか?」についてお話ししたいと思います。
エンジニア組織において、「いかに組織全体で学びの機会を増やすか?」というのは至上命題かと思います。
私はこれまで本業では3社を経験し、その3社ではいずれも「組織の学び盛んにすること」を掲げていましたが、
1,2社目では主体的に勉強会の枠組み作りに関わっていましたがうまくいかず、3社目でようやく組織全体に学びの意識が浸透している状況に遭遇しました。
そこで本セッションでは、私の失敗経験と学びがうまく行っている組織を対比しながら、
といった内容をお話しできればと思います。
巷ではOSSへのコントリビュートを推進するために、「ドキュメント整備だけでもコントリビュートになる」「コメントのタイポを探し出して送ればそれはコントリビュート」といった論調の記事が多く見られます。
プログラミングを始めて1,2年目の初心者であればそれでよいと思いますが、3,4年あるいは10年近くプログラミングをやってきた人がそれをして、果たして胸を張って"貢献"したと言えるでしょうか?
実際に、「OSS 貢献が就職の実績評価として扱われてしまっているので README の修正PR が大量にあふれている」といった記事もあります。
「そうはいっても何をコントリビュートすればいいかわからない」とお困りの方のために!
このセッションではこれまでZennなどへコントリビュートしてきた経験をもとに、本格的にOSSへコントリビュートするネタ探しのコツをお伝えしたいと思います。
コロナ禍を経て、オンライン/オフラインのイベントが以前よりも活況になり、アウトプットとしての「登壇」が重要になっています。
一方で、最初からアウトプットが得意というエンジニアは多くなく、特に「登壇」は経験の数が物を言うため、心理的ハードルが高く、上達が難しいものです。
私たちの組織では、アウトプット経験を養うために社内 LT 会を発足し、研鑽のための環境を作っていきました。
本発表では、発足する際の進め方や組織内の風土作り、開催・継続の中での学びについて話します。
【内容(予定)】
・前提や背景
・発足までの準備
・続けるために考えたこと
・得たものや今後の課題
【トークの目標】
・組織でアウトプットする文化を醸成するためのヒント
・アウトプットで得られる状態の理解
・開発以外の取り組みへのモチベーション
【目標としないこと】
・PHPに関連する技術仕様や設計思想などは話はしません
データ構造、仲良くしていますか?
小難しい、「文系」や独学出身だし触れていない、なんて人も…
特定の問題に特化し、処理を効率的にする存在。
問題に特化する、即ち「意図」が宿る!
何をするコードなのかを表現し操作も簡潔にする、パワフルな選択肢になりえます
「0.001秒を削りたい」場面が少なくても役立つでしょう
数字や式を見ると頭パンク!な人に向け
「コードを簡潔に意図を明確に」という観点から
PHP標準クラス(SPL)でデータ構造の世界に入門するトークです
▼ねらい
仲良くなれそう!のキッカケを作る
▼対象
食わず嫌い、苦手意識を持つ人。1年前の私…
https://php.net/spl.datastructures を見た事がない人
▼話す
データ構造って何が嬉しいの?
SPLには何があって、どんな特徴?
コードを読み易くしてみる、の実践
▼話さない
詳細な計算量やコストの考え方
コロナ禍以来、リモートワークの普及が進み、社内システムやプロダクションサーバへの安全なアクセスとその監査の重要性が増しています。私はこの新たな働き方を支えるため、SSHの多要素認証、短命な証明書による公開鍵認証、そしてWazuhやFalcoを活用した監査基盤の構築に取り組んできました。
特にPHP開発者にとって、セキュリティはしばしば遠い存在と感じられがちです。しかし、実は私たちの日常的な開発プロセスに深く関わるものであり、特にリモートワークが常態化する今、セキュリティ意識は必須のスキルとなっています。このセッションでは、ゼロトラストネットワークの基本概念を踏まえつつ、PHP開発者が容易に取り組めるセキュリティ対策を実践的な視点から解説します。開発プロセスにおけるセキュリティの組み込み方、安全なリモートアクセスの確保方法、そしてアクセス監査の自動化について、具体的な事例と共に紹介します。
このセッションでは、チーム開発経験も浅い新卒エンジニアが、新卒研修で初対面のエンジニアとのコミュニケーションで悩み苦戦した経験から学んだことについて話します。
新卒研修では、初めての技術やスクラム開発で苦戦し、チーム開発に不慣れなメンバーで雰囲気が暗くなることやメンバーと衝突することもありました。
しかし、チームで議論やとチームの決断により、「この機能だけ動くようにしよう!」という方針を打ち出し、協力が強まり、開発スピードが向上しました。これがきっかけでコミュニケーションも増加し、開発も順調に進展しました。
以下の3点について重点的に話します。
対象
Cloud Run を使うことで、開発者はサーバーの管理を気にすることなくスケーラブルなウェブアプリケーションを簡単にデプロイできます。
使用量に基づいてオートスケールし、また100ミリ秒単位での課金なので、コスト効率が良い点も特長の一つです。Docker をサポートしているため、既存のコンテナイメージをそのままデプロイすることができます。
Cloud Run は常に進化を続けており、開発者の生産性を高める新機能が継続的に追加されています。
技術イベントでの自己紹介でも「好きなクラウドサービスは Cloud Run です」が連発されるまでになりました。
このセッションでは現在の Cloud Run が提供する機能を使い、実際に PHP のアプリケーションを動かすところまでの実演を行いながら、可能な限りわかりやすく Cloud Run の使いどころを共有します。
「良いコード」を目指す為の様々な概念が提唱されています
それらを測定し成功に近づける為の尺度も、色々と開発されています
例えば「凝集(度)」。
"触れた事がある"、"聞き覚えはある"という人は多いでしょう
”前に学んだ”という人も、定義と計算方法を覚えて…から入門すると、堅苦しく難解に感じませんでしたか?(私はyes)
もっと!感覚的に、筋道や意義に触れられたら!怖くないのに!!
その為には!難しく考えない!柔らかく触れ合う!!
大事なのは、定義の暗記ではなく感覚のインストール
凝集度とその測定方式である「LCOM」について、視覚や実例を駆使し、直感的に掴んでいくトークです💪
「良いコード」をちょっと説明できるようになりましょう!
プログラミング界の十徳ナイフ、正規表現を使いこなせていますでしょうか!
正規表現は文字列処理において多くのタスクをこなせ、テキストエディタなどPHP以外の場でも利用できる汎用性の高い道具です。
しかしながら正規表現を自信をもって使えるようになることにハードルを高く感じる初心者も多く、曖昧なまま使い続ける中級者も多い技術でもあります。
このトークでは初心者向けの正規表現入門から、中級者にも役立つテクニック、Unicodeとの関連と正規表現の罠まで含めて、基礎を固めて使いこなせるようになるヒントをお伝えします。