Raspberry Pi 5 Wi-FiのIPアドレスを固定化

Raspberry Pi 5でDebian GNU/Linux 12 (bookworm)を使用している場合、Wi-FiのIPアドレスを固定化するには、NetworkManagerを利用する方法が一般的です。以下に手順を説明します。

1. 接続設定ファイルの確認

まず、現在のWi-Fi接続設定が保存されているファイルを確認します。通常、/etc/NetworkManager/system-connections/ディレクトリ内に接続ごとの設定ファイルが存在します。以下のコマンドでディレクトリ内のファイルを一覧表示します。

ls /etc/NetworkManager/system-connections/

表示されたファイルの中から、目的のWi-Fi接続に対応するファイル名を確認してください。

2. 設定ファイルの編集

次に、該当する設定ファイルを編集します。ここでは、例としてpreconfigured.nmconnectionというファイル名を使用します。

sudo nano /etc/NetworkManager/system-connections/preconfigured.nmconnection

[ipv4]セクションを以下のように修正します。

[ipv4]
method=manual
addresses=192.168.1.100/24
gateway=192.168.1.1
dns=8.8.8.8;8.8.4.4;
  • method=manual:IPアドレスを手動設定に変更します。
  • addresses:固定したいIPアドレスとサブネットマスクを指定します。例:192.168.1.100/24
  • gateway:デフォルトゲートウェイのIPアドレスを指定します。
  • dns:使用するDNSサーバーのIPアドレスをセミコロン(;)で区切って指定します。

3. ファイルの保存と権限設定

編集内容を保存し、ファイルの権限を適切に設定します。

sudo chmod 600 /etc/NetworkManager/system-connections/preconfigured.nmconnection

4. NetworkManagerの再起動

設定を反映させるため、NetworkManagerを再起動します。

sudo systemctl restart NetworkManager

5. 設定の確認

新しいIPアドレスが適用されているか確認します。

ip addr show

以上の手順で、Wi-Fi接続のIPv4設定を固定IPアドレスに変更できます。

Bracketed Paste モードの無効化

Windowsで「^[[200~」のような文字列が付加されてしまう問題は、通常、ターミナルエミュレータの設定またはクリップボードの内容をペーストする際に問題が発生することが原因です。具体的には、以下の要因が考えられます。

原因

  1. Bracketed Paste モードの影響
  • ^[[200~」は「Bracketed Paste(ブラケット付きペースト)」モードに関連するシーケンスです。このモードは、ターミナルにおいてペーストされた内容が明確に分かるようにするためのもので、コピー&ペーストの開始と終了を示す制御文字を自動で挿入します。
  • これは通常、LinuxやUnix系のシェル(例えば、bashzsh)で有効になっており、特にエディタやターミナルエミュレータによってはこの機能が自動で利用されることがあります。
  1. ターミナルエミュレータやコマンドプロンプトの設定
  • Windows環境で使われているターミナルエミュレータ(例えば、PowerShellcmdWindows Terminalなど)によっては、コピー・ペーストの扱いが異なり、その際にエスケープシーケンスが意図せず含まれることがあります。
  • 例えば、ペーストを行う際に特定のキーコンビネーションが反応してしまうことで、このような余計な文字列が付加される場合があります。
  1. クリップボードの内容が不正な形式でコピーされている
  • コピーしたときに、余計な制御文字やエスケープシーケンスがクリップボードに含まれていることも考えられます。
  • これは、コピー元のアプリケーションやエディタの状態によって発生することがあります。

解決策

  1. Bracketed Paste モードの無効化
  • bashzshなどの設定ファイル(例えば.bashrc.zshrc)で「Bracketed Paste」を無効化することができます。次のような行を設定ファイルに追加してから、シェルを再起動してください。
    bash bind 'set enable-bracketed-paste off'
  • これによって、ペースト時に「^[[200~」のような制御文字が付かなくなる場合があります。
  1. 別のターミナルエミュレータの使用
  • Windows Terminal、Git Bash、またはWSL(Windows Subsystem for Linux)などのターミナルエミュレータを使用すると、この問題が解消されることがあります。これらのターミナルエミュレータはLinux環境により近い動作をするため、WindowsのcmdPowerShellでの互換性の問題が回避されます。
  1. クリップボードの内容を確認・修正
  • クリップボードにコピーされた内容をテキストエディタ(例えば、メモ帳)に一度貼り付けて、不要な文字列が含まれていないことを確認してから、再度コピーしてターミナルにペーストするのも一つの解決策です。
  1. ターミナルの設定変更
  • 使用しているターミナルの設定(特に「Bracketed Paste」関連の設定)を確認し、それを無効化することでこの問題を回避できることがあります。

Windows環境で発生するこれらのシーケンスは、特にbashやUnix系シェルをWindows上で使っている場合に発生しやすいため、上記の対応を試してみてください。それでも解決しない場合は、使っているターミナルエミュレータの種類と設定をもう一度見直してみることをおすすめします。

viが古い互換モードで動作している

viエディタで矢印キーを押すと、左で「D」、右で「C」、上で「A」、下で「B」と表示される現象は、viが古い互換モードで動作しているために発生します。このモードでは、矢印キーの入力が正しく解釈されず、結果としてこれらの文字が表示されてしまいます。

解決方法:

  1. vimのインストール:
    vimviの改良版で、矢印キーの問題が解決されています。以下のコマンドでvimをインストールしてください。
   sudo apt-get update
   sudo apt-get install vim
  1. vimの設定ファイルを作成・編集:
    ホームディレクトリに.vimrcという設定ファイルを作成し、以下の内容を追加します。
   echo "set nocompatible" >> ~/.vimrc

この設定により、vi互換モードが無効化され、矢印キーが正常に動作するようになります。

  1. vimの使用:
    今後はviの代わりにvimを使用することで、矢印キーの問題を回避できます。例えば、ファイルを編集する際には以下のようにします。
   vim ファイル名

補足情報:

  • vivimの違いについて詳しく知りたい場合は、以下の参考記事をご覧ください。
  • vimの基本的な使い方やコマンドについては、以下の記事が参考になります。

これらの手順を実行することで、viエディタでの矢印キーの問題を解決できます。

AWS Fargate Spot Graviton2

AWS Fargate では、Graviton2 ベースの ARM64 アーキテクチャを使用することで、x86_64 アーキテクチャよりもコストを削減できます。さらに、Fargate Spot を利用すると、通常の Fargate よりも最大 70% 割引で利用可能です。

具体的な料金比較を東京リージョンで行うと、以下のようになります:

アーキテクチャ購入オプションvCPU 時間あたりの料金メモリ GB 時間あたりの料金
x86_64Fargate Spot$0.01525211$0.0016682
ARM64Fargate Spot$0.0122023$0.00133335

この比較から、ARM64 の Fargate Spot を利用することで、x86_64 の Fargate Spot よりも約 20% 安く利用できることがわかります。

ただし、実際のコスト削減効果は、ワークロードの特性やアプリケーションの互換性によって異なる場合があります。そのため、ARM64 アーキテクチャへの移行を検討する際は、事前にアプリケーションの動作確認を行うことをおすすめします。

adduser と useradd の違い

adduser と useradd の主な違いを説明します:

adduser(推奨):

  • Perlで書かれたインタラクティブなスクリプト
  • Debian/Ubuntuのフレンドリーなコマンド
  • 以下を自動的に実行:
  • ホームディレクトリの作成
  • /etc/skelからの基本ファイルのコピー
  • パスワード設定の促し
  • ユーザー情報(フルネームなど)の入力プロンプト
  • グループの自動設定
sudo adduser 新しいユーザー名

useradd:

  • 低レベルのシステムコマンド
  • 自動設定が最小限
  • オプションを明示的に指定する必要がある
  • デフォルトでは以下を実行しない:
  • ホームディレクトリの作成(-m オプションが必要)
  • パスワードの設定(別途passwdコマンドが必要)
  • 基本的な設定ファイルのコピー
# 基本的な使用例
sudo useradd -m -s /bin/bash 新しいユーザー名
sudo passwd 新しいユーザー名

# よく使うオプション
-m: ホームディレクトリ作成
-s: デフォルトシェル指定
-G: 追加グループ指定

推奨:

  • 通常のユーザー作成 → adduser を使用
  • スクリプトでの自動化や特殊な設定が必要な場合 → useradd を使用

本番環境向けDockerfile設定ガイド:Laravelプロジェクトの依存関係管理とパフォーマンス最適化

パフォーマンスとセキュリティを考慮したデプロイ環境に最適な設定になります。

RUN yarn install --frozen-lockfile --production --no-progress --no-optional && \
    yarn cache clean
RUN composer install --no-interaction --optimize-autoloader --no-dev --prefer-dist --no-scripts && \
    composer dump-autoload --optimize --no-dev --classmap-authoritative

各コマンドの詳細

  • yarn install --frozen-lockfile --production --no-progress --no-optional:
  • --frozen-lockfile: 依存関係を正確に固定します。
  • --production: 本番環境用の依存関係のみインストールします。
  • --no-progress: インストール進行状況の表示を省略し、ビルドを少し軽量化します。
  • --no-optional: 任意の依存関係を除外し、本番に必要な最小限のセットをインストールします。
  • yarn cache clean: インストール後にキャッシュをクリアして、コンテナのサイズを削減します。
  • composer install --no-interaction --optimize-autoloader --no-dev --prefer-dist --no-scripts:
  • --no-interaction: 自動的にすべてのプロンプトに応答し、無人インストールに適しています。
  • --optimize-autoloader: クラスマップの事前生成でオートロードを最適化します。
  • --no-dev: 開発依存関係をインストールしません。
  • --prefer-dist: 圧縮ファイルからインストールし、ビルド時間を短縮します。
  • --no-scripts: スクリプトの実行を防止します。
  • composer dump-autoload --optimize --no-dev --classmap-authoritative:
  • 本番環境でのオートロード最適化を最大限に活用し、クラスマップだけを利用する構成になります。

まとめ

このコマンドセットでプロダクション環境の依存関係を最適にインストールし、不要なファイルやキャッシュを省くことができ、コンテナのサイズが小さくなり、パフォーマンスも向上します。

Laravel 8.0以前のマイグレーション

Laravel 8.0以前のバージョンでは、マイグレーションを実行した際にマイグレーションが何もない場合、終了コード1が返されていました。これは、何らかのエラーが発生したと誤解されることがあったため、開発者にとって不便でした。

Laravel 8.0以降では、この挙動が改善され、マイグレーションがない場合には正常に終了し、終了コード0を返すようになりました。これにより、スクリプトやCI/CDパイプラインでの処理がより直感的になりました。

php artisan migrate --force
echo $?

umask=22がパーミッション755になる理由

umask=22がパーミッション755になる理由は、実は「計算式」が存在します。この計算により、umaskの値からファイルやディレクトリのパーミッションが導かれます。

umaskの基本的な仕組み

まず、umaskはファイルやディレクトリの「パーミッションをマスク(除外)」する役割を持ち、デフォルトのパーミッションからumaskのビットで指定された部分を取り除いたものが最終的なパーミッションになります。

デフォルトのパーミッション

  • ファイルのデフォルトパーミッションは666です(読み書き可能)。
  • ディレクトリのデフォルトパーミッションは777です(読み書き実行可能)。

umaskの計算方法

umaskの値は、「削除する」パーミッションを表しており、666または777からumaskの値を引いた結果が、最終的なパーミッションになります。

実際の計算例

ディレクトリのパーミッションの計算

  1. ディレクトリのデフォルトのパーミッションは777です。
  2. ここからumaskの22を引きます。計算式は次のようになります:
   777 - 022 = 755
  • 7 - 0 = 7(所有者のパーミッションはrwx
  • 7 - 2 = 5(グループのパーミッションはr-x
  • 7 - 2 = 5(その他のパーミッションはr-x
  1. したがって、ディレクトリのパーミッションは755rwxr-xr-x)になります。

ファイルのパーミッションの計算

  1. ファイルのデフォルトのパーミッションは666です。
  2. ここからumaskの22を引きます。計算式は次のようになります:
   666 - 022 = 644
  • 6 - 0 = 6(所有者のパーミッションはrw-
  • 6 - 2 = 4(グループのパーミッションはr--
  • 6 - 2 = 4(その他のパーミッションはr--
  1. したがって、ファイルのパーミッションは644rw-r--r--)になります。

まとめ

umaskの計算は、「デフォルトパーミッション」から「umaskで指定したビット」を引くことで決定されます。umaskの各桁が0でなければ、それに応じたパーミッションがマスクされ、最終的なパーミッションが決まります。

GoogleのOAuthアプリケーションを本番モードに切り替えた際に送られてきた自動応答メール

具体的には、アプリケーションのレビューを開始する前に、いくつかの点を確認する必要があるという内容です。以下に、メールのポイントを日本語で解説します。

要点:

  1. Google Fit APIを使用している場合
    Google Fit APIは2024年5月1日から廃止されるため、これを使用しているアプリケーションは新たな確認プロセスに進むことができません。Fit APIを使っていない場合は問題ありません。
  2. 個人使用のみのアプリケーション
    アプリが個人的に使用され、他の人と共有されない場合、またはユーザー数が100人未満である場合は、確認プロセスは必要ありません。未確認アプリの警告を無視して続行できるので、パブリッシュ状態を「テスト」にして、そのまま使用することが推奨されています。
  3. 内部使用のみのアプリケーション
    会社内や自分のドメイン内でのみ使用されるアプリの場合は、「内部専用アプリ」としてマークすることで確認が不要になります。メール内のリンクを参照して、内部アプリとして設定する方法が案内されています。
  4. 開発/テスト/ステージング用のアプリケーション
    アプリがまだ開発中、テスト中、またはステージング環境にある場合は、確認を必要としません。ただし、テストモードでのまま使用することが推奨され、アプリが公開可能な状態になってから本番に移行するべきです。
  5. WordPress用Gmail SMTPプラグイン
    WordPressサイトの管理者のみが使用するGmail SMTPプラグインの場合、確認は不要です。この場合も、テストモードに設定してそのまま利用することが推奨されています。

重要な注意点:

  • アプリの公開状態(テスト、本番)や可視性(内部、外部)を頻繁に変更すると、確認プロセスに遅延が発生する可能性があるため、必要以上の変更は避けた方が良いとされています。

次のステップ:

このメールに返信し、アプリが上記の条件に該当しないことを確認する必要があります。確認が終わると、Googleがアプリのレビューを開始し、必要な場合はさらに連絡が来るという流れになります。

要するに:
Google Fit APIや個人的、内部的、テスト段階でのアプリでないことを確認した上で、メールに返信してレビューの開始を求めるという手順です。

Google Fit APIとは?

Google Fit APIは、Googleが提供する健康およびフィットネス関連のデータを管理・追跡するためのAPIです。このAPIを使うと、アプリケーションやデバイスがユーザーの身体活動、運動、心拍数、睡眠などのフィットネスデータを取得・記録できるようになります。

主な機能:

  1. 活動データの追跡
    歩数や消費カロリー、移動距離、アクティブな時間など、ユーザーの身体活動に関するデータを記録し、追跡します。
  2. 健康データの管理
    心拍数、体重、血圧、血糖値などの健康に関するデータを保存し、他のアプリと共有することが可能です。
  3. センサーとの連携
    スマートウォッチやフィットネストラッカーなどのデバイスと連携し、リアルタイムでのデータ収集やモニタリングが可能です。
  4. クラウド同期
    収集したデータはGoogle Fitのクラウドサービスに保存され、ユーザーのGoogleアカウントに同期されます。これにより、複数のデバイスからデータにアクセスすることができます。

使われる場面:

  • フィットネスアプリ(ランニング、サイクリングなどの運動アプリ)
  • 健康管理アプリ(体重、食事、睡眠、心拍数の管理など)
  • ウェアラブルデバイス(スマートウォッチやフィットネストラッカー)と連携した健康データの記録

終了予定:

Googleは2024年5月1日からGoogle Fit APIの新規確認リクエストを受け付けないと発表しています。つまり、新たにGoogle Fit APIを使いたいアプリはこの日以降、Googleの確認を受けることができなくなるということです。

Google Fit APIの機能が停止するわけではありませんが、新しいアプリの登録や、APIスコープの使用に関する承認が得られなくなるため、今後の使用に制限がかかる可能性があります。