クラウド型のWeb脆弱性検査ツール VAddyを開発しています。
SaaSを4年間開発、運用してきた中でたくさんの失敗をしてきました。
今回は価格設定やサービス設計など、ビジネス上の失敗を元に何が間違ってどう動いてきたのか、その中で起こる技術的な課題をお話します。
未経験スタッフやスクール卒で、 FizzBuzz もかけない…みたいなスタッフを
業務で活躍できるレベルまで持っていくために必要なものはなにか、みたいなお話をします。
技術知識と業務知識は違うよ、みたいなお話とか、社内教育のプロセスについてなど
普段の弊社はレガシーな環境で開発をしている。web系の企業なのにサーバーは未だオンプレだし、phpのバージョンをあげるにも四苦八苦しているし、slackを使い始めたのもつい半年前だし、フレームワークは使っていない。そんな弊社は社員が40人程度しかいないのにコミュニケーションエラーが多く、営業からのリクエストも開発側では聞いてないなど不毛な議論をしている。なのでDDDを導入して営業側もドメインマスターとして開発に関わってもらう体制に変更中。この体制変更を営業に理解してもらう上で躓くところ、こう話すと理解してもらいやすいよといったTIPSになります。
Webアクセシビリティに取り組むのはディレクター?デザイナー?フロントエンドエンジニア?
いえ、私たちPHPerもしっかりと取り組んで行かなければなりません。
アクセシビリティと聞くと障がい者向けの取り組みかと思われますが、一概にそうとは言えないでしょう。
もしかすると、あなたが作っているWebサイトは身近な誰かがアクセス出来ないかもしれません。
今回のトークではAPI設計の際に考えるべきWebアクセシビリティについて話します。
PHPerだからWebアクセシビリティについて考えるのは関係ないとは言わせません!
最近なにかと話題の「心理的安全性」ですが、私が過去に10以上の本や記事をインプットした結果で、できるだけわかりやすくイメージがつきやすいように説明します!
・心理的安全性とは(一般的な定義と、間違った定義を解説!)
・心理的安全性は誰のもの?(心理的安全性を作り出す人は誰なのか、誰であるべきなのかを解説!)
・心理的安全性の高め方3選、壊し方3選(実例含めて、デザインパターンとアンチパターンを紹介!)
・明日からできる心理的安全性確保活動
15分を目一杯使って、「心理的安全性」のことだけひたすら話し、考える時間にしようと思います。
最近ではPHPアプリケーション開発において、自動テストを入れるのが普通な状況になってきましたが、一方で外部ライブラリをどうやって扱おうかが悩みどころです。mockを使ってライブラリを置き換え、インターフェースのテストだけで済ませてもいいのですが、ライブラリの仕組みを使って、より突っ込んだテストができないかとも思います。そこで、ライブラリの通常処理に、別の処理を割り込む仕組みを利用することで、より意味のあるテストをかけることを、GuzzleやSwiftMailerを例にとって解説していこうと思います。
アプリケーション開発をしてれば忘れがちなネットワーク周り。
そんなネットワークからパケットを操作し、色々と実験をしてみました。
内容としては障害、攻撃、冗長化をメインにそれぞれの実装方法と挙動について見てみたいと思っています。
パケットを操作することで改ざんをしたり、クライアントにバレずにサーバを切り替えたりなど自分の興味の赴くままにやってみました。
カオスエンジニアリングにも挑戦してみたいと思いその入り口として、障害実装もしています。
実装方法は自作ソフトウェアルータを利用してその中でL3、L4のパケットを操作して実装してみました。
言語はErlang、Elixirを使って実装をしています。
実装する中で気づいたこと、気をつけること、今後やりたいことなどについても話せればと思います。
これまで、AWSのサーバレス実行環境であるLambdaで実行できる言語は限りがあり、場合によっては新たな言語を習得しなければなりませんでした。
しかし、昨年の追加されたLambdaのカスタムランタイム機能により、(ある程度の準備こそ必要ですが)PHPを初めとする自分が今まで使い慣れている言語で開発及び実行できるようになり、より手軽にサーバレス開発が行えるようになりました。
本セッションでは、Lambda+PHPという環境を通じて、
・PHPカスタムランタイムの動かし方や作り方
・どのように動くのか
・どのような用途に向いているのか
といった概要や、各種フレームワークを動かしてみた結果といった調査結果などについてお話します。
PHPStanは優秀な静的解析ライブラリではありますが、あらかじめ提供されているRuleの利用に留まってはいませんでしょうか?
同ライブラリにはCustomRuleという独自のルールを作成できる機能があります。
自分でルールを書けば外部のツールと連携したチェックなども可能で、例えばGitと連携させることで新しく追加されたクラスのみチェックして「これから新しく作るクラスは戻り値型宣言必ず書いて!」みたいな複雑なルールも作れます。
CustomRuleはあまりドキュメントに記述は無いので、基本的に自分で既存のコードを調べて作る必要があり少し面倒です。
今回は「こんなのだったらすぐ出来る」みたいなPHPStanの解析機能を列挙することでみなさんに独自ルールを作ることの一助になれればと思います。
設計への意識の高まりとともに、クラスの依存関係をコントロールすることに関心を持つエンジニアが増えてきましたが、現状依存ルールを順守するには人間の目で確認せざるを得ません。
クラスの依存関係を人間の目で一瞥するのは基本的に難しく、うっかり循環依存になってしまってないかレビューするのも手間です。
そこでPHPStanをベースに依存関係を解析するライブラリを作成しました。
これによりルールの順守を機械的にチェックすることが可能になるほか、そのリポジトリの依存ルールを設定ファイルとして管理し、ルールを明示することができるようになります。
また全クラスの依存関係を解析してグラフ化することも可能(予定)ですので、初めて見るリポジトリを解析する時にその依存関係から大まかな構造を把握できるような使い道もあります。
今回はこのライブラリの紹介をさせていただければと思います。
昨年度まで登壇経験 0 だった開発組織が、昨夏の PHP カンファレンス関西 2018 を皮切りに、今年度、国内 3 つの PHP 系カンファレンスに社内から延べ 5 名のエンジニアが登壇を果たしました。この発表では今年度の取り組みの総まとめとして、開発組織の思惑とエンジニアとしてのやっていき、業務としてイベント登壇を推進するための取り組み、そしてこれからの目標など、今年度のできごとを余すことなくお話します。この発表が今後社外への発信に取り組んでいきたい開発組織やエンジニア個人にとっての後押しとなれば幸いです。
PHPでSocketを使ったネットワークプログラミングを自作すると、Unix系OSの非同期IO・ブロッキングIOについて理解が深まります。PHPでブロッキング、ノンブロッキングなWebサーバを書いて、Webサーバへの理解を深めましょう。
社内ベンチャーやスタートアップでは少ない人的リソースで高速にプロダクトを開発していくのが重要です
しかしながら、大きなピボットや急な仕様変更の可能性も高く、こういった状況でのAPI開発は様々な課題があらわれます
このセッションでは上記の課題にどういう解決策を考え、BEAR.Sundayでどういったかたちで解決していったのか
そして、少し珍しいフレームワークであるBEAR.Sundayでの実務例をご紹介いたします
専門学校の講師として3年、Laravel を使ったアプリケーション開発の講師をやってきました。
エンジニア教育とはちょっと違う、専門学校でのIT教育みたいな話をします。
Zaim はオンライン家計簿のアプリですが、運用上 PHP の役割が大きいです。
今回の発表では、Zaim における PHP アプリケーションの運用において、使用しているツールや直近の困ったことなどを共有させていただきたいと思います。
アセンブリがわかればコンピュータがわかる。
コンピュータが動く仕組みを知りたいと思ったことはありますか?
コンピュータが直接理解できるのはマシン語だけですが、それを少しわかりやすくしたのがアセンブリ言語です。
アセンブリは高級言語とぜんぜん違います。
変数、IF文、ループがありません。そんな言語で何ができるのか?
何でもできる!
アセンブリ言語はまた、多くのコンパイラの出力データとしても使われています。
実際に私はこの知識をつかってC言語コンパイラとGo言語コンパイラをある程度書けるようになりました。
一介のWebエンジニアにすぎなかった私がアセンブリを学んで読み書きできるようになった体験をもとに、わかりやすく解説します。
本トークを聞いたあと、あなたは「アセンブラ難しいと思ってたけど、意外とやればできるのでは」という感覚を得られるでしょう。
Fargateとかそろそろキャッチアップしておきたいという方向けの発表です。AWSサービスにおいてECS/EKS等コンテナベースでのアプリケーション運用の事例が出てきたかと思います。12 factor appsなどの設計アプローチなどがあるようにコンテナでの運用においてログ・設定情報の扱いなど、アプリケーション設計においても影響がありうります。今回、業務でGoをECS/Fargateで運用している知見をベースに、PHPアプリケーションをFargateで使うにあたった基礎知識と検討ポイントについてまとめてみようと思います。