コードを書く日々:フリーランスエンジニアの技術メモ

何度も同じことをググってしまう自分の備忘録です。何か調査した際には、そのエッセンスを記事としてまとめ、とりあえず共有することを心がけています。

PHPの`date("N")`関数について

PHPdate("N")関数は、指定された日付の曜日をISO-8601形式(1が月曜日、7が日曜日)で表す数字を返します。この機能は特に、カレンダーやスケジューリングアプリケーションを作成する際に役立ちます。

基本的な使用法

date("N")は、現在の日付に対して実行された場合、その日のISO-8601形式の曜日番号を返します。

echo date("N");

このコードは、現在の日の曜日番号を出力します。

特定の日付の曜日番号を取得

特定の日付の曜日番号を取得するためには、date()関数の第二引数にUNIXタイムスタンプを渡します。

echo date("N", strtotime("2023-01-01"));

例えば、このコードは2023年1月1日の曜日番号を出力します。

実用例

カレンダーでの使用

date("N")関数は、カレンダーを作成する際に特に役立ちます。月の初日がどの曜日にあるかを知ることで、カレンダーのレイアウトを計画することができます。

$firstDayOfMonth = date("N", strtotime("2023-02-01"));
echo $firstDayOfMonth;

条件付きメッセージの表示

曜日に応じて異なるメッセージを表示する機能も、date("N")を使用して実装することができます。

$dayOfWeek = date("N");
if ($dayOfWeek == 6 || $dayOfWeek == 7) {
    echo "楽しい週末を!";
} else {
    echo "今週も頑張りましょう!";
}

注意点

  • タイムゾーンの設定date("N")を使用する前に、PHPdate_default_timezone_set()関数で適切なタイムゾーンが設定されていることを確認してください。

  • 日付の形式strtotime()関数は様々な日付形式を解析できますが、ISO 8601形式(YYYY-MM-DD)の使用が推奨されます。

PHPdate("N")関数は、曜日に基づいた条件分岐やカレンダーの生成など、多岐にわたるアプリケーションでの利用が想定されます。正確で使いやすいこの関数は、日付と時間を扱う際の重要なツールの一つです。

Laravelで忘れずにするべき設定

Laravelは、その多機能性と拡張性で知られるPHPフレームワークです。プロジェクトを開始する際には、快適な開発体験とアプリケーションの正確な動作を確保するために、いくつかの初期設定を見直しておくことが重要です。ここでは、Laravelプロジェクトを始める際に忘れずに行うべき重要な設定について紹介します。

環境設定ファイル(.env)

Laravelプロジェクトのルートディレクトリには、.envという環境設定ファイルがあります。このファイルは、アプリケーションが動作する環境に応じてカスタマイズされ、データベース接続やメールサーバーの設定など、重要な情報を含んでいます。

  • APP_KEY: php artisan key:generateコマンドを実行して、セキュアなアプリケーションキーを生成し、設定してください。
  • APP_ENV: アプリケーションの環境(local、production等)を設定します。
  • APP_DEBUG: 開発中はtrueに設定してデバッグ情報を表示しますが、本番環境ではセキュリティのためfalseに設定することを忘れないでください。
  • データベース接続設定: DB_CONNECTIONDB_HOSTDB_PORTDB_DATABASEDB_USERNAMEDB_PASSWORDなどの設定を適切に行ってください。

タイムゾーンの設定

アプリケーションのデフォルトタイムゾーンは、config/app.phpファイル内で設定されます。これは、日付や時刻に関連する操作に直接影響を及ぼすため、特に国際的なアプリケーションを開発する際には重要です。

'timezone' => 'UTC',

多くの場合、この値をアプリケーションが主に対象とする地域のタイムゾーンに設定します。例えば、日本でサービスを提供する場合は'Asia/Tokyo'に設定します。

ロケールの設定

Laravelでは、アプリケーションのデフォルト言語設定もconfig/app.phpファイルで管理されます。多言語アプリケーションを開発する場合、この設定を適切なロケールコードに変更することで、翻訳ファイルを利用した多言語対応が可能になります。

'locale' => 'en',

必要に応じて、'en'をアプリケーションの主言語に合わせたロケールコードに変更してください。

キャッシュと最適化

アプリケーションを本番環境にデプロイする前に、設定やルートのキャッシュを生成することで、パフォーマンスを向上させることができます。

  • 設定のキャッシュ: php artisan config:cacheコマンドを実行して、設定情報をキャッシュします。
  • ルートのキャッシュ:

php artisan route:cacheコマンドを実行して、ルート情報をキャッシュします。

これらのコマンドは、デプロイメントプロセスの一部として自動化することが推奨されます。

まとめ

Laravelプロジェクトを開始する際には、これらの初期設定を見直し、適切に設定することで、開発の効率化とアプリケーションの安定性が向上します。特に.envファイルのセキュリティやタイムゾーンロケールの設定は、忘れずに確認しておくべき重要な項目です。

npm audit fixとは

npm audit fixは、npmが提供するコマンドの1つで、プロジェクトの依存関係に対してセキュリティ上の問題が発見された場合に、自動的に修正を行うためのコマンドです。

npm audit fixは、npm auditコマンドによって発見された依存関係の問題を自動的に修正しようとします。このコマンドを実行することで、プロジェクトのセキュリティを向上させることができます。

ただし、自動修正されない問題もあるため、修正が必要な問題が残っている場合は、手動で修正する必要があります。また、自動修正がうまくいかなかった場合や、問題を修正したくない場合は、代わりにnpm auditコマンドを実行して、問題を手動で修正することができます。

mac の brew install で bundleファイルに追記したい

brew install --caskでインストールしたアプリケーションは、自動的に.Brewfileに追記されます。.Brewfileは、Homebrew Bundleで使用されるファイルで、インストールしたいアプリケーションのリストを記述することができます。

brew install --caskコマンドでアプリケーションをインストールする場合、Homebrewは自動的に.Brewfileを更新し、新しくインストールされたアプリケーションを追記します。これにより、.Brewfileの内容と現在の状態が一致するようになります。

例えば、以下のようにコマンドを実行した場合、Brewfileにvisual-studio-codeが追記されます。

$ brew install --cask visual-studio-code

.Brewfileには、以下のようにvisual-studio-codeが追記されます。

cask 'visual-studio-code'

vimのブックマークについて

Vimには、ブックマーク機能があります。 ブックマークを使用すると、ファイル内の特定の行にすばやく移動できます。

IntelliJのIdeaVimでも使えます。

以下は、ブックマークを使用する方法です。

コマンド 説明
m{a-z} アルファベット{a-z}にブックマークを割り当てる
'{a-z} アルファベット{a-z}に設定されたブックマークに移動する
`{a-z} アルファベット{a-z}に設定されたブックマークの行の先頭に移動する
:marks 現在設定されているすべてのブックマークを表示する
A 現在行の最後にカーソルを移動し、インサートモードに切り替えた後、その行の末尾にブックマークを設定する
I 現在行の先頭にカーソルを移動し、インサートモードに切り替えた後、その行の先頭にブックマークを設定する
gi 直前に挿入した場所にブックマークを設定する
gI 現在行の先頭にカーソルを移動し、直前に挿入した場所にブックマークを設定する
コマンド 説明
''(シングルクオートを2回入力) バッファ内のジャンプ元へジャンプ
`` (バッククオートを2回入力) バッファ内のジャンプ元の行頭へジャンプ

PER(PHP Evolving Recommendations)とは、PHPのコーディング規約について

PERとは

PER(PHP Evolving Recommendations)は、PHPの開発者コミュニティによって提案され、討議された、将来のPHPの進化に関する提言集です。PHP言語の進化を促進することを目的に、PHPのコア開発者やコミュニティの開発者たちが、新しい機能や構文、標準ライブラリの改善などを提案しています。

PERは、PHP言語の進化についてのコミュニティの意見をまとめたもので、PHPの開発者が機能追加や改善を行う際に、重要な参考資料となります。PERに含まれる提言は、PHPの開発ロードマップの策定や、新しいPHPのバージョンのリリース時期の決定などに役立ちます。

PSRとは

PSR(PHP Standards Recommendations)は、PHPの標準的な開発規約を定めるグループによって定義されています。PSRは、PHP開発者が共通の規約に従ってコードを書くことを促進することを目的としており、PHPコミュニティによって広く受け入れられています。現在、PSRには複数のバージョンが存在し、それぞれに異なる規約が定義されています。

関係性

PER Coding Style(1.0.0)はPSR-12に基づいている部分が大きいですが、(現在時点では) PERはPSRを置き換えるものではありません。

ツールの活用で効率的なコードチェックを

コーディング規約に違反したコードを手動でチェックすることは非常に手間がかかります。そのため、ツールを使って自動化することが望ましいです。代表的なツールとして、PHP-CS-Fixer、PHP_CodeSniffer(phpcbf)、EasyCodingStandard(ecs)などがあります。これらのツールは、PHPのコーディング規約に準拠したコードに自動的に修正することができます。

ツールを使って、PSR-12ルールセットを使う

これらのツールは、PSR-12ルールセットを提供しています。PSR-12ルールセットは、PSR-2ルールセットをベースに、より詳細なルールを追加したものです。PSR-12ルールセットを遵守することで、PHPコードの品質を高めることができます。ツールを使って、PSR-12ルールセットに適合するようなコードを自動的に修正することができます。

まとめ

PHPのコーディング規約に遵守することは、コードの品質や保守性を向上させるために非常に重要です。しかし、手動でルールを確認することは非常に手間がかかります。ツールを使って、自動化することで効率的にコードチェックを行いましょう。特に、PHP-CS-FixerやPHP_CodeSniffer(phpcbf)、EasyCodingStandard(ecs)のようなツールを使うことをおすすめします。これらのツールは、PSR-12ルールセットを提供しており、PHPコーディング規約に準拠したコードに自動的に修正することができます。

また、これらのツールは、高度なカスタマイズの共有や相互運用性を考慮して設計されています。例えば、PHP_CodeSnifferは、様々なコーディング規約に対応しており、自分のチームやプロジェクトに合わせたカスタムルールを追加することができます。さらに、これらのツールは、多くのPHP開発者によって利用されており、そのコミュニティによって活発に開発・メンテナンスされています。

Gitのコミットの粒度について:ガイドライン

Gitのコミットの粒度については、プロジェクトやチームの作業フロー、開発スタイルによって異なるため、一概にどうするのがよいとは言えません。ただし、以下のような一般的なガイドラインがあります。

  1. 小さな変更を複数のコミットに分ける:1つのコミットで複数の機能の変更や修正を行うと、後でバグの発生や機能の変更が必要になった際に、コミットを元に戻すことが難しくなります。したがって、小さな変更を複数のコミットに分けることで、コミットの粒度を細かくし、コードの変更履歴をより明確にすることができます。

  2. コミットメッセージをわかりやすく記述する:コミットメッセージには、コミットの目的や変更内容をわかりやすく記述することが重要です。また、コミットメッセージには、タスク番号やブランチ名などの情報を含めることで、チーム全体でのコミュニケーションやトラブルシューティングを助けることができます。

  3. 定期的にコミットする:小さな変更を複数のコミットに分けることで、より細かいコミット履歴を作成することができます。ただし、定期的にコミットすることも重要です。長時間コミットをしないと、変更履歴が複雑になり、トラブルシューティングが困難になる場合があります。

以上のガイドラインを参考に、自分のプロジェクトやチームに最適なコミットの粒度を決定してください。