エンジニアとして始めて少しすると必ず知る概念、それが「デザインパターン」です。
私も新卒の頃、輪読会としてデザインパターンの本を読みました。そして、その知識を持て余したものです。
”デザインパターンを勉強しよう”で知ったデザインパターンは、その適用に失敗することの方が多い様に感じます。
「道具として自然に出てくること」が大事であること、そして「道具としてもう使われないものもあること」を認識するのが大切です。
本セッションでは、新卒の頃の私に伝えたい、デザインパターンとの向き合い方と、共通言語として今でも使うデザインパターンをピックアップしてまとめます。
話すこと
・デザインパターンとの向き合い方(共通言語として”デザインパターン”を知っておく)
・今では使わないデザインパターン、それはなぜか
・今でも使うデザインパターン
※GoFのデザインパターンのことを指します。
自分が作っているサービスの顧客と話したことはありますか?
ユーザーが自分の作っているサービスを触っている所を見たことがありますか?
かつての私はただコードを書いているだけのエンジニアでした。
作ったものが使われない、キョムリリースをしているエンジニアでした。
そしてアジャイル・スクラムと出会い、自分はプロダクト・顧客と全く向き合えていないことに気づきました。スクラムのプロセスを通じて、開発プロセスの改善、そしてその先の”顧客と対話”ができるまでの話をします。
「ただコードを書いているエンジニア」が、「ユーザーと話にいきたい、いくぞ」と一歩を踏みだせる話をします。
話すこと
・キョムリリースはなぜ生まれるか
・エンジニアが顧客とコミュニケーションをする
・顧客との対話を通じて得られた洞察やフィードバックとプロダクトの改善
Webでリアルタイムで双方向の通信をしたいとき、どうしますか?
サーバー上でのデータの更新を知りたいとき、
最もシンプルな方法といえばポーリングですよね。
一定時間おきにブラウザからアクセスをするだけで済みます。
ただ一方で、その通信・処理の大部分が無駄になってしまう方法でもあります。
この問題を解決するのがServer-Sent Eventsです。
SSEは必要な時だけサーバーサイドから通信を行える仕組みです。
このトークではSSEを使うにあたって必要な知識やTipsをお伝えします。
話すこと
・ SSEの基本
・ 他の手法との比較
・ Laravelとの組み合わせについて
こんな人におすすめ
・ ポーリングをやめたいな〜と思っているひと
・ SSEに興味があるひと
APIを作るとき、あなたはどんな技術を使いますか?REST API?GraphQL?えっ、SOAP…!!?
gRPCは、Googleによって開発されたオープンソースのリモートプロシージャコール(RPC)フレームワークで、多くの言語で使用でき、高効率なマイクロサービス間通信を実現できます。
このセッションでは、gRPCのインタフェース記述言語(IDL)であるProtoBufの基本、gRPCの通信パターン、PHPにおける実例と、導入にあたっての注意点についてお伝えします。
WordPressの機能の一つにブロックエディタというものがあります。
ブロックエディタはカスタマイズ性や柔軟性が非常に高く、デザインの編集など、管理画面上で殆どの対応が完結します。
ブロックエディタは管理画面上での編集のみならずコードベースでの管理もすることができます。
しかしながら、コードベースで管理する方法についてWeb上で検索すると不十分な公式ドキュメントしか見つかりません。
機能を十分に使うにはWordPress本体のコードを読むしかなく、ベストプラクティスのようなものも自分が知る限りでは存在していないようです。
今回のトークでは、実際に自分が初期導入から実装までやった経験を踏まえて、どのように開発していけば良いのかの一例をご紹介します。
想定対象者
学生時代からいままでの約10年でITコミュニティの参加、活動の中でよかったことを話します。経験値アップや業界人とのつながりでの良い刺激など魅力をお伝えしたいです。
・過去に参加、活動したイベント、コミュニティ
オープンソースカンファレンス
baserCMSコミュニティ
PHPカンファレンス
その他勉強会など
みなさんフロントエンドのフレームワークは何を使っていますか?
このトークではReactやVue.jsなどに次ぐ
第3のフレームワークとして注目を集めているSvelteをご紹介します。
LaravelとSvelteを組み合わせたときに他と比べてどんな良いことがあるのか、
具体例も交えながらSvelteの魅力をたっぷりお伝えします。
話すこと
・ Svelteの特徴
・ Laravelとの組み合わせについて
・ 他のFWや組み合わせとの比較
こんな人におすすめ
・ Svelteに興味があるひと
・ フロントエンドFWをアップデートしたいひと
・ フロントエンドをもっと簡単にもっと良くしたいひと
私がいるチームであるBASE BANKでは、フルサイクルエンジニア(Full Cycle Developers)のというスタンスを掲げています。
フルサイクルエンジニアは、よりスピーディにプロダクトアウトプットし続けるためにソフトウェアライフサイクルの一連の流れを価値提供に関わるエンジニア、チームが責任を持ち、実行できるようにしようというスタンスです。
今回のセッションでは、フルサイクルエンジニアについて簡単に説明しつつ、BASE BANKではフルサイクルエンジニアとしてどのような取り組みをしているのか具体例をお話します。
今回のセッションで話すこと
パーソナルコンピュータの普及やスマートフォンの普及によって日本語入力をしていない日本人は殆どいないくらいコンピュータに日本語が入力されています。
ソフトウェアへの日本語入力を支えている技術にIME(Input Method Editor)というものがあります。
コンピュータ上ではローマ字入力、スマートフォン上ではフリック入力が一般的ですが世の中には様々な日本語入力方法があります。
本登壇ではIMEの基本的な仕組みについての解説をした上で、SKKや親指シフトや月配列などマニアックな日本語入力を紹介して日本語入力の魅力について話します。
また、今後の日本語入力がどう変化していくのかその可能性や課題について考察します。
想定聴講者
GAE(Google App Engine)は古くからあるPaaSで、PHPが利用可能です。
2024年1月末を持って、gen1 と呼ばれていた古い仕組みのサポートが終了するため、個人開発して細々と運用してきたWebサービスも重い腰をあげて gen2 PHP8.2へ移行することにしました。
そして1年間、隙間時間で少しずつ対応して gen2 PHP8.2 で動作するようになりました。
このセッションでは同じようにまだgen1で動いているサービスをgen2に上げたい人や、
これから GAE gen2 を使ってみたい、興味がある人をターゲットにしています。
について話します。
このトークでは、アプリケーション開発者とデータ利用者との協業をスムーズにするためのアイデアを紹介します。
データベースに蓄積されたデータは、分析や集計、機械学習といったデータ活用を行うことでその真価を発揮します。
データ活用を行うのはWebアプリケーションの開発者ではなく、データアナリストやデータエンジニア、関連部署の社員(あるいは未来の自分)など、そのデータベースにあまり詳しくない人の場合が多いでしょう。
このトークでは、そういったデータ利用者にとって優しい(最短で理解できる)データベースをどのようにしたら実現できるのかについて、アプリケーションエンジニアからデータエンジニアに転身した筆者の目線からお話します。
【トーク例】
・自動でER図を生成! SchemaSpy!
・Enum値は文字列で保存してクレメンス
・データパイプラインが止まっちゃった! XXする時は教えてくれ!
サイボウズのGaroon開発チームは日本とベトナムにそれぞれ拠点があり、ベトナム拠点には70名以上のメンバーが在籍しています。
やりとりは主に英語でしていますが、日本メンバーもベトナムメンバーも英語は母語ではない人がほとんどです。
そんな日本メンバーとベトナムメンバーはどうやってコミュニケーションをとって開発を進めているのでしょうか?
ミーティングはどうしてる?なんでベトナム?ぶっちゃけコミュニケーションコスト高くない?
このトークではそんなGaroon開発チームの開発事情を赤裸々にお話しします!
■ 話すこと
LaravelやSymfonyで開発を行う際、デバッグ時にdd()をよく使います。
様々なオブジェクトを入れても表示してくれるし、ブラウザアクセスやコマンドなど実行形式に応じて表示もよしなに変えてくれるなんで便利ですよね!
ddそのものは各FW側のヘルパ関数として作られていますが、中身を見ると共通してSymfonyComponentであるVarDumper::dumpが呼ばれています。
このトークでは各FWで使われているsymfony/var-dumperライブラリの中身がどのような作りになっているかを追いかけます。
エンジニアにとってドキュメンテーション・技術ブログ・業務でのチャットコミュニケーションなど文章を "書く" 技術は重要ですよね。
とはいえエンジニアは文章の専門家ではありません。そのため文章を書くのに苦手意識を感じつつ悪戦苦闘している人も多いのではないでしょうか。
テキストアウトプットはメリットが多い、にもかかわらず文章術の学び方やノウハウはあまり出回っていません。
今回はブログがバズってるわけでもなく文章で食ってるわけでもない私が、苦手意識を克服して普通に書けるようになるまでに学んだことを振り返ってみます。
普通のエンジニアが普通の文章を書く技術を知って、テキストアウトプットのメリットを享受しませんか。
このトークでは、OSSから学ぶ方法について話します。
学習のためにOSSに触れるとよいと聞きますが、言うは易し行うは難し、学ぶことにもハードルがあると感じたことはありませんか?
私は丸腰ではコードが読めません。環境を整え、道具を駆使して、少しばかり工夫しながら読み進めてゆきます。このトークでは、PHPStanの並列処理を題材に、一定複雑な処理がどのように実装されているのかを紐解いてゆく過程を見てゆきます。
チュートリアルの次のステップとして、既に稼働実績のある実用的なコードから学ぶことで実践力を高めようという試みです。
このトークではOSSから学ぶことのハードルを下げることを目指します。スキルアップへの引き出しが一つ増えれば幸いです。
実行中の PHP スクリプト内の各要素は、それぞれがメモリ上に何らかの領域を占有しています。ローカル変数のための領域、配列の各要素やハッシュテーブルを収めるための領域、文字列のための領域、オブジェクトやそのプロパティを収めるための領域。実行中に様々な領域が確保され、そして不要になると解放されたり、意外とスクリプト終了まで解放されなかったりします。
PHP には標準の組み込み関数として memory_get_usage() や memory_get_peak_usage() といった関数があり、呼び出し時点でのメモリ使用量や実行開始からのピーク値を得ることができます。しかし、これらを呼んでも「どこで」「何が」「何バイト」メモリを使っているかまでは追えません。
このトークではスクリプト内の各要素について、処理系内で何がどうメモリを消費するかを時間の許す限り1つ1つ手当り次第に解説します。
みなさんは動画編集をやったことはありますか?
動画編集とは元来めんどくさく手間がかかるものではあるのですが,普段からWebアプリの開発をしている私は,以下のようなことを考えていました.
HTML/CSSのように複数オブジェクトを一つのコンテナのように扱えたら,CSSのように統括して装飾を指定できたら,HTMLレンダラーが相対値から計算して値を指定するように,動画のオブジェクトの時間長も編集アプリが計算して指定してくれたら,もっと楽に動画編集できるのになぁ,と.
そこで私は,HTML/CSSをベースとした,動画の構成を記述する言語を記述することで動画編集を行えるという技術を開発しました.
↓以下の記事でも紹介しておりますが,ここからの進捗についても発表したいと考えております.
https://qiita.com/PigeonsHouse/items/7e3a3c4ed8473a61f4ac
プログラマーとして生きていると、仕事をする中であるいは日々の生活の中で、ちょっとした自動化のためにスクリプトを書くことがあるでしょう。
そういったスクリプトはすぐに使い捨てるつもりだったり、あとで修正することもなかったりするかもしれません。
このとき、みなさんは「最低限の品質」をどこに置きますか?
いざ、ぱっと聞かれると返答に困るような質問かもしれません。
私のなかではある程度の基準があります。
本トークでは「ちょっとした自動化のためにパッと書いたスクリプト」をいくつかのレベルに分けて、どこまで作り込むかの観点と判断基準の一例をお見せします。
PHPerKaigi 2024で一千を風靡したPHPer向けゲーム、「PHP8.3秒チャレンジ」の企画や開発の裏話をします!
PHP 8.3秒チャレンジとは、PHPの最新版である8.3をみんなで目指そうというコンセプトのストップウォッチゲームです
8.3秒ぴったりに止めるという至ってシンプルなゲームですが、通常のストップウォッチと異なり、途中から数字が消えてしまうので目押しはできません
このゲームをPR TIMES企業ブースで展開したところ、現地でXでも大変盛り上がりました!
本セッションでは以下の観点から裏話をお話しする予定です!
このトークは、イベントで何かブラウザを使った出し物をしたい方の参考になることを目標としています✨
開発時に厄介なのはバリエーション。
PHPerは日々フレームワークごとの違い・バージョンごとの違い・データベースの違い・クラウドインフラの違いといった純粋に技術的なバリエーションに悩むこともあれば、複数の異なる配送業者・複数の異なるAPI接続先・複数の異なる計算方式といった要求・要件のバリエーションにも悩んでいることでしょう。
このバリエーションへの対処法を整えることでエンジニアとして強くなる方法をお話します。