みなさんモック大好きですよね?
外部依存から隔離してテストの実行を容易にする便利なものですもんね。
しかし、かの名著、オブジェクト指向設計実践ガイドでは、こう言っています。
モックを使用したテストは「夢の世界に生きる」状態を作る可能性があると。
この「夢の世界に生きる」という表現は、モック(スタブ)を使って現実から隔離された環境でテストを行う「理想の世界」を指すメタファーです。
現実世界とは異なる世界を作ってしまえるが故の脆さも表しています。
具体的には、モックの使用で実コードとテスト間のふるまい(インターフェイス)に乖離が生じ、テストの信頼性が落ちる可能性などが挙げられています。
では、モックの使用を避けるべきかというと、そうではないと思っています。
重要なのは、モックとの「上手な付き合い方」を見つけることです。
一緒に夢の世界でモックとの上手な付き合い方を見つけてみませんか?
エンジニア同士の繋がりを作る上でコミュニティの存在は重要です。
私が異業種から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を使うのか?」についてお話ししたいと思います。
巷ではOSSへのコントリビュートを推進するために、「ドキュメント整備だけでもコントリビュートになる」「コメントのタイポを探し出して送ればそれはコントリビュート」といった論調の記事が多く見られます。
プログラミングを始めて1,2年目の初心者であればそれでよいと思いますが、3,4年あるいは10年近くプログラミングをやってきた人がそれをして、果たして胸を張って"貢献"したと言えるでしょうか?
実際に、「OSS 貢献が就職の実績評価として扱われてしまっているので README の修正PR が大量にあふれている」といった記事もあります。
「そうはいっても何をコントリビュートすればいいかわからない」とお困りの方のために!
このセッションではこれまでZennなどへコントリビュートしてきた経験をもとに、本格的にOSSへコントリビュートするネタ探しのコツをお伝えしたいと思います。
コロナ禍を経て、オンライン/オフラインのイベントが以前よりも活況になり、アウトプットとしての「登壇」が重要になっています。
一方で、最初からアウトプットが得意というエンジニアは多くなく、特に「登壇」は経験の数が物を言うため、心理的ハードルが高く、上達が難しいものです。
私たちの組織では、アウトプット経験を養うために社内 LT 会を発足し、研鑽のための環境を作っていきました。
本発表では、発足する際の進め方や組織内の風土作り、開催・継続の中での学びについて話します。
【内容(予定)】
・前提や背景
・発足までの準備
・続けるために考えたこと
・得たものや今後の課題
【トークの目標】
・組織でアウトプットする文化を醸成するためのヒント
・アウトプットで得られる状態の理解
・開発以外の取り組みへのモチベーション
【目標としないこと】
・PHPに関連する技術仕様や設計思想などは話はしません
データ構造、仲良くしていますか?
小難しい、「文系」や独学出身だし触れていない、なんて人も…
特定の問題に特化し、処理を効率的にする存在。
問題に特化する、即ち「意図」が宿る!
何をするコードなのかを表現し操作も簡潔にする、パワフルな選択肢になりえます
「0.001秒を削りたい」場面が少なくても役立つでしょう
数字や式を見ると頭パンク!な人に向け
「コードを簡潔に意図を明確に」という観点から
PHP標準クラス(SPL)でデータ構造の世界に入門するトークです
▼ねらい
仲良くなれそう!のキッカケを作る
▼対象
食わず嫌い、苦手意識を持つ人。1年前の私…
https://php.net/spl.datastructures を見た事がない人
▼話す
データ構造って何が嬉しいの?
SPLには何があって、どんな特徴?
コードを読み易くしてみる、の実践
▼話さない
詳細な計算量やコストの考え方
このセッションでは、チーム開発経験も浅い新卒エンジニアが、新卒研修で初対面のエンジニアとのコミュニケーションで悩み苦戦した経験から学んだことについて話します。
新卒研修では、初めての技術やスクラム開発で苦戦し、チーム開発に不慣れなメンバーで雰囲気が暗くなることやメンバーと衝突することもありました。
しかし、チームで議論やとチームの決断により、「この機能だけ動くようにしよう!」という方針を打ち出し、協力が強まり、開発スピードが向上しました。これがきっかけでコミュニケーションも増加し、開発も順調に進展しました。
以下の3点について重点的に話します。
対象
Cloud Run を使うことで、開発者はサーバーの管理を気にすることなくスケーラブルなウェブアプリケーションを簡単にデプロイできます。
使用量に基づいてオートスケールし、また100ミリ秒単位での課金なので、コスト効率が良い点も特長の一つです。Docker をサポートしているため、既存のコンテナイメージをそのままデプロイすることができます。
Cloud Run は常に進化を続けており、開発者の生産性を高める新機能が継続的に追加されています。
技術イベントでの自己紹介でも「好きなクラウドサービスは Cloud Run です」が連発されるまでになりました。
このセッションでは現在の Cloud Run が提供する機能を使い、実際に PHP のアプリケーションを動かすところまでの実演を行いながら、可能な限りわかりやすく Cloud Run の使いどころを共有します。
プログラミング界の十徳ナイフ、正規表現を使いこなせていますでしょうか!
正規表現は文字列処理において多くのタスクをこなせ、テキストエディタなどPHP以外の場でも利用できる汎用性の高い道具です。
しかしながら正規表現を自信をもって使えるようになることにハードルを高く感じる初心者も多く、曖昧なまま使い続ける中級者も多い技術でもあります。
このトークでは初心者向けの正規表現入門から、中級者にも役立つテクニック、Unicodeとの関連と正規表現の罠まで含めて、基礎を固めて使いこなせるようになるヒントをお伝えします。