共通コンポーネントのテスト実装方法にあえてVRTを選択した話 / why do we choose VRT for testing shared components
PHPカンファレンス沖縄2022の登壇資料です。 発表時間の関係で収まりきらなかった内容を大幅に加筆しています。 以下プロポーザルの内容を転記。 ---- テスト書いてますか? テストを書く理由と実際のテストコードを紹介する実践編に分け、TDD を3年間実践してきた経験に基づいてお話しします。 テストを書いたことのない方が、テストを書いてみたいと思ってもらえることを目指します。 サンプルコードは PHP + PHPUnit ですが、他言語でも通用する考え方を紹介します。 ■ 概要 ・なぜテストコードを書くのか ・レガシーコードとは、テストのないコード ・テストはコストが安いフィードバックループである ■ 実践編 ・テストケースは日本語で書こう ・いろんな assertion を知ろう ・arrange / act / assertion のテストコード実装パターン ・set up / te
TL;DR PHPで動くファミコンエミュレータを作った php-terminal-nes-emulator画面描画は点字を使って文字出力コントローラは標準入力からfread() 経緯 2016年の2月にPHPで動くゲームボーイのエミュレータ、php-terminal-gameboy-emulator に衝撃を受けて、その実装の解説を勉強会やカンファレンスでトークしたりSoftware Design誌に書いたりしました。(*1) カンファレンスでのトークでは時間の都合もあって全体のごく一部しか話が出来ないのですが、Software Design誌では誌面をたっぷり頂いてCPU、メモリアクセス、画面表示とphp-terminal-gameboy-emulator のほぼ全域を解説出来たので満足し、その熱は落ち着いていました。 そんな中、9月に開催されたbuilderscon tokyo 201
PHPプログラミングも快適に! VS Codeの二大拡張機能:Visual Studio Code+PHPの可能性を探る(1/3 ページ) VS CodeとPHPでWebアプリ開発はどこまで簡単になるのかを探る新連載。今回はVS Codeを利用したPHPによるアプリ開発に必須の拡張機能を2つ紹介する。 連載「Visual Studio Code+PHPの可能性を探る」 本連載では、Visual Studio Code(以下、VS Code)を使ってPHPプログラミングする際の基本事項を紹介していく。ただし、PHPの構文や文法については取り上げない予定だ。これらについては、@IT内の連載「Web業界で働くためのPHP入門」やPHP公式サイトの「PHP マニュアル」などを参考にしてほしい。また、VS CodeのGUI構成や、基本的な使い方については「Visual Studio Codeの使い方
久方ぶりにPHPのレガシーなシステムを触りましたが、なんというか。。。 名前空間とcomposerが無いだけで、こうも大変になるのかと思いましたね というわけで、もはやデファクトスタンダードとなったcomposerを使用した開発について、その有り難みを噛み締めつつ、まとめていきたいと思います composer composerは依存性管理ツール composerは依存性管理ツールです。。。ってナンノコッチャですが、例えば以下の状況を考えてみましょう 便利そうなライブラリAを使用したいのだが、このライブラリは更に別のライブラリB, Cを必要としている。さらに、ライブラリBはライブラリD, Eを。。。 そう、ライブラリの依存性地獄です。 使用したいのはAなのに、そのために必要なライブラリがボコボコ必要になる こんなのは日常茶飯事です。 でもcomposerがあればどうでしょう。 ライブラリAが
予備知識 スーパーグローバル変数とは? 「スーパーグローバル変数って何?」って感じの駆け出しPHPプログラマのために念のためマニュアルへのリンクを記載しておきます.全然知らない人は軽く読んでおいてください. PHP Manual - 変数のスコープ PHP Manual - スーパーグローバル HTTPとは? リクエストヘッダー・レスポンスヘッダー と聞いてピンと来ない人はまず下記サイトにて予習をお願いします.細かいことは覚える必要は無いので,大雑把に「ヘッダーとはどんなものか」ということを理解してください. Qiita - 【PHP超入門】HTTP(GET・POST)について Qiita - 【PHP超入門】Cookieとセッションについて @7968さんによるQiitaの記事です.右も左もわからない人はまずこれで. とほほのWWW入門 - HTTP入門 最初の記事をもう少し体系的にまと
「ポカヨケ」を知っていますか? 製造業で使われるヒューマンエラーを防ぐ仕組みのことですが、プログラミングにも応用できる考え方です。PHP開発を例として具体的なポカヨケの手法を紹介します。 中規模または大規模なチームでコードベースを共有すると、お互いのコードや使い方を理解するのが大変です。解決策は、一連のコーディング規約にのっとることで相手が読みやすいコードを書くことや、全員が知っているフレームワークを使うことなどがありますが、この対策では不十分なこともあります。 特に、少し前に書かれたアプリケーションの一部のバグを直したり、新たな機能を追加したりするときに不十分さを感じます。あるクラスをどう動作させたかったのか、ほかの機能とどう組み合わせて使うつもりだったのか、すべて覚えているのは容易ではなく、知らないうちに副作用やバグを作り込みがちです。 副作用やバグは品質保証ツールで見つかるはずですが
【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース
With the rise of mobile development and JavaScript frameworks, using a RESTful API is the best option to build a single interface between your data and your client. Laravel is a PHP framework developed with PHP developer productivity in mind. Written and maintained by Taylor Otwell, the framework is very opinionated and strives to save developer time by favoring convention over configuration. The
※2017/05/29現在Repositoryの章までしか聞けていません。聞いている際に浮かんだインスピレーションが揮発しないよう永続化する為に書いた記事です。 php-genba.shin1x1.com まさか日本語でこの内容を聞けるコンテンツがあるとは思わなかったです。 これは英語をマスターすれば Sound of Symfony The Laravel Podcast Ruby on Rails Podcast JavaScript Air devchat.tv などのPodcastからより多くの興奮を得られる事を意味します。 プログラミング経験3年、細かい修正ばかりで設計レベルの経験値が全くない自分ですが、各章について以前から個人的に思っていた事、お三方の知見からインスピレーションを得た内容を書き残します。 1. DI 「依存性の注入(Dependency Injection)」と
FacebookやTwitterなどのアカウントを使ったソーシャルログイン(SNSログイン)。個別に実装しようとすると結構手間ですが、Socialiteを使えば実装の手間を減らせますね。 Laravel Socialiteは複雑なSNS認証を高機能で使いやすいインターフェイスとして手軽に組み込めるパッケージです。 SocialiteがOAuthプロバイダーとしてサポートしているのはGoogle、Facebook、Twitter、LinkedIn、GitHub、Bitbucketです。サポート対象が拡大される予定はないものの、コミュニティーが開発を進めているコレクション、Socialite Providersを使えば非公式ですが多くのSNSをSocialiteのOAuthプロバイダーとして使えます。詳しくは、後で説明します。 この記事では、Laravelアプリケーションのインスタンスが稼働し
この記事は何か 挑発的な文言になってる箇所はあるものの、内容としてはそれなりにまじめに書いたつもり。むしゃむしゃしてやった。いまでは反芻してゐる。 PHPDocは必ず書け あらゆる再利用可能な手続きは、他人が容易に応用できるように型が明示的でなければいけない。メンバー全員が実装コード全てを把握できるものならそれが理想だけれど、残念ながら時間は有限だ。ヘッダだけを読んでメソッドの仕様が理解でき、またはコードを読む助けになるようなコメントが良い。 有名な事実を紹介すると、多くのコードは数か月(早ければ数日!)も経てば、他人が書いたコードに感じられるほど理解できなくなることがしばしばある。もちろん設計の練度にもよらうが、設計判断について注意を要した点などをコメントに残しておくことで、ひいては未来の自分の役に立てることができる。 お前の先輩は「PHPには型がない」などと知ったかぶって意味不明1なこ
BASEは、昨年末のメルカリ社との関係性が高まったことを期に改めて採用を強めている。中心となるのは、強力に事業を推進するところにコミットしてくれるエンジニアの募集だ。 先日、リブセンスの桂さんに当社にお越しいただいて、結構ハードな対談を収録した。 BASEえふしん×リブセンス桂 CTO対談(前編)―今求められるエンジニアは、自分の会社から「はみ出ている人」― 桂さん、バシバシ、突っ込んでくるもんだからついついハードな発言をしているかもしれない。 最近、思っているのがどうやってPHPを扱う会社で優れた人材に来ていただけるか?という部分。 PHPは、多分、今も昔も中心なんだか周縁なんだかわからない立ち位置にいる。PHPをPHP市場だけで捉えると、高トラフィックなサービスを経験するという、「良い経験をしてきたエンジニア」は、藤本さんところのグリー社、グリー出身者、最初からPHPを活用していたYa
先日別のチームから、 「PHPで作成したWebアプリの速度が遅いので助けてくれー」 という相談を受けた。 対応したものの、結構時間がかかって面倒だったので、 今後こういった問題が起こった時に使えるよう、チェックリストをまとめてやった。 基本的な内容だけど、 このチェックリストの内容をやってみて、それでもダメなら相談しなさい、 と伝えておくことで相談を減らすフィルタとして働いてくれるはずだ。 PHPプロジェクトに限らず、バックエンドでデータベースを使用している Webアプリのプロジェクトなら試す価値のあるものが多いはず。 調査や対応方法の手軽さ順で並べるとこんな感じ: Webブラウザのデベロッパーツールでレスポンスを計測する Webサーバ(Apache)のリクエスト時間をログに出力する ログ解析ツールでURL毎の付随リクエスト数を確認する データベースのスロークエリログを出力する プロファイ
PHPはよくDISられることがあります。しかし、実際にはほとんどPHPを利用していない人が印象だけでDISってることが多いような気がします。 そこで、PHPがよくDISられている点について、実際どうなのかをPHP未体験者向けに解説していきたいと思います。PHPを触ったことない人でもわかりやすいようにシンプル目な仕様のRubyを例に説明していきたいと思います!( Ruby触ったことなくても、その他のOOP言語を触ったことあれば雰囲気は理解できるように書いています ) DIS例1 / PHPは配列操作がしづらい PHPの配列操作は扱いづらい等とDISる人たちがいます。実際のところどうでしょうか。 以下のような処理を配列への中間変数を用いず行うコードを例に考えてみます。
この記事は ピクシブ株式会社 Advent Calendar 2015 13日目の記事です。 qiita.com こんにちは、おはようございます、こんばんは、エンジニアのneo-nanikakaです。 最近、業務でURLルーティングの処理が必要になりました。 社内の他のPHPプロジェクトでは Teto Routing というライブラリを使っているのを知っていたので、こちらを使ってみることにしました。 見事にURLルーティング処理は実現され、他の処理の実装に入ることができました。 完 っと思っていた時期が私にもありました。 Teto Routingは、実行時間がルーティング数に依存する 実装になっています。 ここでいう実行時間とは、Teto RoutingにリクエストURL文字列を渡してから結果が返ってくるまでの時間のことです。 実際、Teto Routingは表1のような時間がかかります。
「PHP 7」正式版が登場。PHPにとって10年ぶりのメジャーバージョンアップ。実行速度は旧バージョンの2倍以上 PHPの公式サイトでは、PHP 5.6.xからPHP 7.0へ移行するためのガイド「Migrating from PHP 5.6.x to PHP 7.0.x」も公開されています。 開発者であるRasmus Lerdorf氏は10月に来日し、「PHPカンファレンス2015」で講演。PHP 7ではPHP 5との互換性を維持しつつ、2倍以上の性能向上とメモリ使用量の低減など、大きな改善が実現されことを示していました。「実際に世界中で使われているPHPアプリケーションの性能が2倍になるのが主な特長です」(Rasmus Lerdorf氏。10月に開催された「PHPカンファレンス2015」にて)。 さらにLerdorf氏は次のようにPHPにはさらに高速化の余地があると説明しています。 「
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く