処理完了後のリダイレクトのHTTPのステータスコードに「302」と「303」どちらを使うべきかという話

こんにちは、CTOの山岡(@hiroy.kotori.styleもしくは@hiro_y)です。

Webアプリケーションを作成する際、最近だとJavaScriptでAPIにアクセス、その結果を受け取って画面の表示を変えたり、場合によっては別のURLに移動するように作ることが多いかもしれません。Next.jsやRemix、SvelteKit等のフロントエンド由来のフレームワークを用いれば簡単に実装もできてしまいます。

しかし全てのWebアプリケーションがそうした実装を必要としているわけではありませんし、以前から運用されているWebアプリケーションはもっと素朴な作りをしているのではないでしょうか。サーバーサイドでHTMLをレンダリングし、フォームから値がPOSTで送信され、サーバーサイドで処理を行う、というような。

そうしたAPIを返すのではないサーバーサイド実装において、POSTで値を受け取り、処理(データベースに値を保存したり、いろいろ)を実行した後は(そのまま結果を表すHTMLをレンダリングしたりせずに)どこか別のページにリダイレクト処理を行うのがお約束です。

さて、そのリダイレクト処理でHTTPのステータスコードには何が使われているでしょうか。

続きを読む

「正しさ」をめぐるコミュニケーションについて

こんにちは、CTOの山岡(@hiro_yもしくは@hiroy.kotori.style)です。

自分も含め、エンジニアは「正しいこと」にこだわりがちです。設計の「正しさ」だったり、プログラミングコードの「正しさ」だったり、「正しいこと」について考える機会が多いのが理由でしょうか。

その結果として、「正しくないこと」に過剰に反応してしまいがちです。つい強い言葉を使ってしまったり、細かい部分に都度意見を言ってしまったり。そうしたきっかけで、他の人と衝突してしまったことはないでしょうか。自分はあります。

続きを読む

GitHub ActionsにPHPMDを導入して循環的複雑度を計測・警告してみた

ソフトウェアエンジニアの荻島です。

弊社では現在レガシー化してしまったLaravelアプリケーションのフレームワークのアップデートとリファクタリングが絶賛進行中です。

今日はその活動の一環でPHPMD(Mess Detector)という老舗の静的解析ツールを導入した話を記事にしたいと思います。

  • 静的解析ツールって?
  • PHPMDって何ができるの?
  • PHPMDを導入してCLIで実行してみる
    • ライブラリをインストール
    • 設定ファイル(phpmd.xml)を作成
    • 【お好みで】composer.jsonのscriptsに追記
    • phpmdの呼び出し方
  • PHPMDをGitHub ActionsのCIに組み込む
  • まとめ
続きを読む

Slackのチャンネル一覧を取得するスクリプトを書いた

こんにちは、CTOの山岡(@hiro_yもしくは@hiroy.kotori.style)です。

イノベーター・ジャパンではコミュニケーションのツールとしてSlackを利用しています。今回、たくさんあるチャンネルの整理を図ろうという話が出てきたのですが、現在契約しているProプランだとSlackが用意しているチャンネル管理ツールを利用できません。

要件としてはとりあえずチャンネルの一覧を出力できればよいだけなので、さくっとNode.js(バージョンは18系を想定)でチャンネル一覧のCSVファイルを出力するコードを書いて解決しました。

続きを読む

PHPConference福岡2023にて登壇してきました!

ソフトウェアエンジニアの荻島です。 先週末福岡で開催されたPHPConference福岡2023に参加・登壇してきましたので、そのレポです。

オフラインカンファレンスは春のPHPerKaigiに続いて2回目だったのですが、今回はなんと応募したトークが採択され、登壇者として参加してきました。

登壇内容

トークは「Monologの実装に学ぶInterfaceの使いどころ」というタイトルでの発表でした。

fortee.jp

内容としてはPHPer御用達のロギングライブラリ、Monologの内部実装で使用されているInterfaceを例に、

  1. Monolog内部でInterfaceがどんな役割を担っているのか?
  2. Interfaceを上手に使うと何が嬉しいのか?

というInterface入門時に躓きがちなInterfaceの概念部分をメインにお話をさせていただきました。

続きを読む