私は、学生時代に地方の大学で技術コミュニティー(サークル)の運営に取り組んできたので、地方大学のコミュニティーについてお話ししたいと思います。
私は新卒のエンジニアですが、昨年まで地方の大学で技術コミュニティの運営に取り組んできました。私が大学生の頃、2019年12月からコロナが流行し、大学はリモート授業になり、サークル活動も対面で行うことが難しくなりました。また、「地方のITコミュニティー」と「大学のサークル」では特性が異なりオンライン化に伴い、それぞれのコミュニティーで苦戦したことがあると思います。
このような環境の中で行ったことや、苦戦したことや上手くいかなかったことについて発表します。また、「大学生のコミュニティー特有の課題」や「地方大学のコミュニティーの課題」についてもお話ししたいと思います。
今年のLaraconUSでLaravelの環境構築ツールとしてLaravel Herdが紹介されました。
Laravelの環境構築ツールとしてはLaravelValetが既に存在しますが、
Valetよりも簡単にすぐ導入できるところにメリットがあり、
どれくらい簡単かというと動かすだけならHerdをインストール後、create-projectをするだけでブラウザで表示させることが可能です。
またそれだけではなく、動かすPHPのバージョンもクライアントツールで簡単に切り替えられ、
様々なバージョンで試すことも容易になります!
このLTではLaravel Herdの紹介とValetとの比較、実際に使ってみての所感をお話しします!
現在私はプレイングマネージャーという形で、複数の案件を掛け持ち自身も開発をしながらメンバーを管理し、加えて会社の組織設計や雑務も行っています。
様々な仕事を行う中で、特にシステム開発という仕事は楽しくやりがいがあり、集中した時にはあっという間に1日が終わってしまいます。
そして後から気づくのです。「開発以外の仕事全然できてない」と。。
この問題を打破すべくタイムトラッキングを導入し、自分が何の仕事にどれだけ時間を使っているか可視化することで本来やるべきことに時間を使えるように改善を進めていきました。
このLTでは実際に発生した問題から始まり、タイムトラッキングツールの導入、実際に可視化して気づいた点や自身の作業の改善内容、導入してみて良かった点/反省点をまるっとお話します!
アジャイルソフトウェア開発宣言の中に「包括的なドキュメントよりも動くソフトウェアを」と記載がある通り、アジャイル開発において「動くソフトウェア」というものは非常に重要視されていると思います。
そのため、普段の開発業務で「動くソフトウエア」を素早く提供することを求められる場面は、きっと多いのではないでしょうか?(むしろ、常にそういう期待値を持たれているかもしれません。)
本トークでは、そんな「動くソフトウエア」を素早く提供するために実際にスクラムチームで取り組んだことについて、実体験をベースにした知見をご紹介します。
このトークでお話すること
・「動くソフトウエア」とは何か
・どうやって価値提供のスピードを上げたのか
・内部品質を保つためにどんなことをしたのか
・まだ改善していく余地はあるのか
アジャイルソフトウェア開発宣言の中に「包括的なドキュメントよりも動くソフトウェアを」と記載がある通り、アジャイル開発において「動くソフトウェア」というものは非常に重要視されていると思います。
そのため、普段の開発業務で「動くソフトウエア」を素早く提供することを求められる場面は、きっと多いのではないでしょうか?(むしろ、常にそういう期待値を持たれているかもしれません。)
本トークでは、そんな「動くソフトウエア」を素早く提供するために実際にスクラムチームで取り組んだことについて、実体験をベースにした知見をご紹介します。
このトークでお話すること
・「動くソフトウエア」とは何か
・どうやって価値提供のスピードを上げたのか
・内部品質を保つためにどんなことをしたのか
・まだ改善していく余地はあるのか
数年間で成長してきた自社プロダクトですが、モノリスの複雑化の増大に対して軽減・改善していくために、モジュラーモノリスを導入することにしました。
そんな話を度々耳にしたことがあるのではないでしょうか。
ただ、実際にやってみたら「こんなはずしゃなかった」「予想外にいいことがあった」みたいなことになる、そんな経験がきっとあると思います。
本トークでは、モジュラーモノリスを導入した際の現場目線での知見や体験談をお話します。
モジュラーモノリスの1歩目を踏み出そうと思っている方や、レガシーコードに日々向き合っている方に聞いていただけると嬉しいです!
このトークでお話すること
・Pakege By Feature について
・導入するに至った背景
・モジュール構成とその中身について
・導入してみてよかったこと/苦労したこと
・これからの展望
Web アプリケーションフレームワークを使ったプロジェクトを新規作成し、自動生成されるファイル郡の中にある config というファイルまたはディレクトリ。
いったいこいつは何なのか?
どうやら項目を自分でも追加できるようだが、一体何を追加してよくて、何を追加すべきでないのか。
本トークはそんな疑問にお答えします。
不具合が確認され、丸一日かけて調査したら原因はうっかりミスによる構文エラーだった.......そんな経験ありませんか?
「そんなうっかりミスを実行する前に気づけたらいいな」そう思ったあなたにお勧めするのが静的解析です!
本トークでは PHP 静的解析ツールの一例として PHPStan を取り上げて、それが使えるとどんなことがいいのかをお話します。
PHPのソースコードでよく empty($hoge)
を見ることは有りませんか?
ドキュメント( https://www.php.net/manual/ja/function.empty.php )にて仕様は書かれていますが、腹落ちしていますか?
このLTでは、emptyの挙動を理解できるように、php-srcを読んでどのようなことをemptyは行っているかを説明します。
追記
注意: これは、関数ではなく 言語構造のため、可変関数 や 名前付き引数 を用いてコールすることはできません
https://www.php.net/manual/ja/function.empty.php
とのことで、関数と表記をしてしまいました。お詫びして訂正いたします。
ScalaにはOptionクラスがあるのをご存知でしょうか?
これは何らかの処理結果(オブジェクト)を返すメソッドにおいて、通常時は子クラスのSomeに結果を返し、処理できなかった場合は子クラスのNoneを返してくれるものです。
この仕組みがあれば、nullableのドメインプロパティを利用する際に制御が容易になったり、値がないかもしれないことを明示的に表現できるのでコードの可読性と保守性が向上します。
ただOptionクラスはPHPにないのです...ではどうするのか?
自分たちで用意するしかないですね!
このトークではPHPでOptionクラスを用意するところをご紹介します。
資料に余裕があれば、
弊社のプロダクトはこれまでnullableのドメインプロパティをどう扱っていたのか経緯を踏まえつつ、なぜOptionクラスに行き着いたのかも合わせてご紹介できればと考えています。
私は学生時代に学園祭実行委員会に所属し、PHPを用いた学園祭Webサイトの開発・運用や情シス業務に携わっていました。その頃の経験を振り返り、学園祭というドメインならではのWeb開発の過去と未来に触れつつ、一般のエンジニアでも他人事ではない技術選定や教育に関する話をします。
こんにちは!
PHPerTeaNight運営メンバーの久保田です。
PHPerTeaNightはPHPer(PHPを愛するプログラマ?)のためのIRT形式による勉強会です。
2022年7月から開始し、ほぼ毎月開催する勉強会です。
ぜひ、PHPerコミュニティとして輪を広げたいと思い番宣ならぬ、会宣をさせていただきたいと思います!
以下のような内容をトークしたいと思います。
このトークを聞いた人がPHPerTeaNightに参加してくださったり、他のPHPコミュニティの勉強会なども参加してくださると嬉しいです。
近年、ECサイトなどにおいてクレジットマスターと呼ばれる、ランダムにクレジットカード番号を生成してECサイトのクレジットカード入力欄を用いてオーソリチェックをかけまくるという迷惑極まりない攻撃が増加傾向となっています。
私の関わるサービスでも例に漏れず攻撃を受けたことがあり、その対策に追われました。
今回はLaravelの機能を用いての対策や、もう一歩踏み込んだ対策を行ったのでご紹介してみようと思います。
内容
こんな人向け
みなさんは普段開発している際、バグに遭遇することがあると思います。そしてそのバグの発生要因が PHPDoc のメンテナンス不足であると考えると怖くないでしょうか。
私は実際に Laravel を使用して開発している際前述したような経験をしました。そして PHPDoc の修正を行い、Laravel のコントリビューターとなりました。
私はこの一連の出来事からコードリーディングがとても大事であることに気付かされました。
この発表では PHPDoc の不足をどのように見つけたのか、どう修正したのか、そしてコードリーディングが世界の誰かに役に立つかもしれないということを話します。
多くの現場でコーディング規約が策定され、それに沿った開発が行われています。
私のチームでもコーディング規約があり、実装者とレビュー者がそれぞれチェックを行っていました。
しかし守るべきルールの数は80を超え、人間が限られた時間の中目視でチェックするのは無理がありました。その結果見落としも頻発していました。
大変なことは自動化するのがプログラマの美徳。そこでPHP_CodeSnifferをIDEとCIに導入し、人間の負荷を下げることに成功しました!
しかしその裏では、既存プロジェクトであるが故のいくつもの障壁がありました。
「独自の規約なので、定義済みのルールセットを利用できない……」
「既存コードに違反があるせいで、毎回CIがエラーになる……」
このトークでは、約半年をかけてPHP_CodeSnifferをチームに導入した経験談と、直面した障壁の乗り越え方についてお話しします。
大きなソフトウェアを一人で作ることは難しく、エンジニアには常にコミュニケーションスキルが求められます。
ましてや外国のチームと開発 "オフショア" においては必須スキルと言ってもいいでしょう。
オフショア開発では意思疎通の問題から予想できないハプニングや思いがけないアクシデントが多々生じます。
私は、現在所属しているチームにてベトナムチームとの窓口を4年担当し、
情報共有不足や、遠隔メンバとの温度感の違いによる認識齟齬をはじめとする様々な出来事を経験しました。
その中には、後から考えれば「ここでちゃんと伝えておけばよかった」と後悔するものもたくさんあります。
本セッションでは、そんなオフショアにおけるハプニングやアクシデントを紹介し、それらを回避するノウハウなどを実例を交えてお伝えすることで、
齟齬の発生しないコミュニケーションや、相手への意図の伝え方をお伝えできればと思います。
「推測するな、計測せよ」という言葉は、改善策を探す時だけでなく、新機能をリリースする時も同様で、「計測」することは重要です。
開発環境の少量のデータを扱う場合は問題なく動作するクエリも、本番環境の大量のデータではパフォーマンス低下し、スロークエリになる可能性があります。
今回は、フィルターによる約160万行削除とNested Loopのトータルコストが約12万、実行時間が約600msかかるクエリを、サブクエリを活用し、Nested Loopを無くし、実行時間を約0.2msに改善をした事例を取り上げます。
話すこと
注意:このトークではPostgreSQLを使用しています。
現在私が BABYJOB 株式会社で開発を担当している保活サービス「えんさがそっ♪」では、バックエンドは PHP で Laravel、フロントエンドに Laravel の Blade テンプレート + jQuery で構築しています。
最近ではフロントエンド開発への課題感から React の導入を積極的に行っています。
React 導入の経緯としては...
①肥大化した jQuery の管理に限界を感じていた
②流行りの SPA に挑戦したかった
今回は Laravel 製のサーバサイドレンダリングアプリケーションに React を部分導入してみて、感じたメリットとデメリットをお話ししたいと思います。
Laravelのアップデートを、Laravel Shiftを使いながら行ってきました。
実際にどのようなことを行ってきたかをお話しできればと思います。
アップデートをいずれ行う予定の方や、Laravel Shiftの導入を検討している方に
経験したことをシェアすることで、何かしらの参考になればと思います。
Java 6 のバックパックを背負ったまま、PHP 8 の山を登ろうとしたらどうなるでしょうか?このライトニングトークでは、私のそんなエピソードをご紹介します。
①スタート地点: Java の世界から出発し、PHP 8 の新たな土地を目指した時のお話。
②サバイバルギア: 新しい世界を生き抜くために、私が手に入れたリソース、ツール、そして秘密の武器についてお見せします。
③オンザロード: 途中で出くわした難問や驚きの発見、そしてそれらをどうクリアしたかのエピソードをシェアします。
まだトレッキング途中ではありますが、私の経験が、新しい技術にチャレンジしようとしているあなたの背中を押す一助となれば幸いです。