まくろぐ
更新: / 作成:

超高速なテキスト検索コマンド rg (ripgrep) にはずっとお世話になっていますが、ちょっと凝った検索をしようとしたときに、オプションを忘れてしまうことが多いので、チートシートの形でまとめておきます。 rg は Windows でも macOS/Linux でもほぼ同じように使えるので、使いこなせるようになると便利です。

Ripgrep チートシート

検索パターン

rg "PATTERN"
rg -e "PATTERN"
カレントディレクトリ以下のすべてのファイルから、PATTERN にマッチする行を検索します。 入力パターンは 正規表現として扱われる ため、例えば ^def と指定すれば、def で始まる行を検索できます。 本来、パターンの指定には -e オプションを使いますが、このような単純なケースでは省略できます。
rg "PATTERN1|PATTERN2"
rg -e "PATTERN1" -e "PATTERN2"
OR 条件による検索を行うときは、正規表現の OR 演算子 | を使用するか、-e オプションを複数回使用します。 上記の例では、PATTERN1 または PATTERN2 にマッチする行を検索します。
rg "PATTERN1" | rg "PATTERN2"
AND 条件による検索を行うときは、単純に rg コマンドをパイプで繋げて実行します。
rg -v "PATTERN"
PATTERN を含まない行のみを出力します。 例えば、rg "https://" | rg -v "example" とすると、example ドメイン以外の URL を検索できます。
rg -F "*****"
検索文字列を正規表現として解釈せず、そのままの文字列 (Fixed String) として検索します。上記の例では、***** という文字列を検索します。
rg -i "PATTERN"
大文字・小文字を区別せずに PATTERN を検索します。
rg -w "PATTERN"
単語単位で「PATTERN」を検索します。例えば PATTERNSMYPATTERN はマッチしません(安心してください、TODO: にはマッチします)。 -w オプションの代わりに、正規表現の単語境界 \b を使って、rg "\bPATTERN\b" とすることもできます。

対象ファイル/ディレクトリの絞り込み

rg PATTERN path/to/dir
path/to/dir ディレクトリ以下(あるいは同名のファイル)で「PATTERN」を検索します。 ディレクトリであることを明示したい場合は、末尾にスラッシュを付けます(path/to/dir/)。
rg -t py PATTERN
rg -t sh PATTERN
Python ファイル(拡張子 .py)やシェルスクリプト(拡張子 .sh.zsh)のみを検索対象にします。 ここで指定するタイプは拡張子ではなくファイルタイプです。指定できるファイルタイプの一覧は rg --type-list で確認できます。 逆に、特定のファイルタイプを除外したい場合は -T py のように大文字の -T を使います。例えば -T minified と指定すると min 系のファイル (minified: *.min.css, *.min.html, *.min.js) を除外できます。
rg -g "*.{js,ts}" PATTERN
glob パターンで指定したファイルのみを検索対象にします。引数がシェルによって展開されないように、必ずクォートで囲みます。 大文字小文字を区別せずにマッチさせたい場合は、-g の代わりに --iglob を使います。 glob パターンを ! で始めると、指定したパターンにマッチするファイルやディレクトリを検索対象から除外できます(zsh による履歴展開が働かないようにするためには、パターンをシングルクォートで囲みます)。
  • glob パターンの例:
    • -g '*.{js,ts}' … 拡張子が .js または .ts のファイルを検索
    • -g '*test*' … ファイル名に test を含むファイルを検索
    • --iglob '*test*' … ファイル名に test を含むファイルを検索(大文字小文字を区別しない)
    • -g '**/hoge/**/*.py' … 任意の階層の hoge ディレクトリ以下の .py ファイルを検索
    • -g '**/hoge/*.py' … 任意の階層の hoge ディレクトリ直下の .py ファイルを検索
    • -g 'hoge/**' … この階層の hoge ディレクトリ以下のファイルを検索
    • -g 'hoge/*' … この階層の hoge ディレクトリ直下のファイルを検索
    • -g '!*.min.js' … 拡張子が .min.js のファイルを検索対象から除外
    • -g '!hoge/' … この階層の hoge ディレクトリを検索対象から除外
    • -g '!**/hoge/' … 任意の階層の hoge ディレクトリを検索対象から除外
rg --hidden PATTERN
隠しファイル・隠しディレクトリも検索対象に含めます。 ただし、ドットファイルだけを検索したい場合は、-g ".*" のように glob パターンを使う方がよいです。
rg --no-ignore PATTERN
.gitignore.ignore$HOME/.rgignore などで無視されているファイル・ディレクトリも検索対象に含めます。
rg --max-depth 1 PATTERN src/
src/ ディレクトリの直下だけを検索対象にします。サブディレクトリは検索されません。

表示オプション

rg -C2 PATTERN
マッチした行の前後 2 行も一緒に表示します(-A2 -B2 と指定するのと同様)。
rg -c PATTERN
ファイルごとにマッチした行数のみを表示します。
rg -l PATTERN
ファイル名のみを表示します。

どのファイルが検索対象になっているかを調べる (--files)

--files オプションを使うと、実際にどのファイルが検索対象になっているかを確認できます。 試行錯誤しながら検索条件を調整したいときに便利です。

  • rg --files
  • rg --files -t js
  • rg --files -t js src/
  • rg --files --hidden
  • rg --files -g "/.*"

これを利用して、ファイル名に特定のパターンを含むファイルの一覧を取得することもできます。

ファイル名に test を含むファイルの一覧を取得
$ rg --files | rg test

具体的な使用例

src ディレクトリ以下で TODO コメントを検索
$ rg -w "TODO" src/
test や Test で終わる .kt ファイルを除外
$ rg --iglob '!*test.kt' PATTERN src/

トラブルシュート

Operation not permitted という警告が大量に出る

./Library/Calendars: Operation not permitted (os error 1)

のようなエラーは、アクセス権限のないファイルやディレクトリを検索しようとしたときに出る警告です。 これは標準エラー出力への出力なので、次のように 2> を使ってリダイレクトすればこれらの表示を抑制できます。

標準エラー出力を /dev/null にリダイレクト
$ rg PATTERN 2> /dev/null

glob オプション (-g/--glob) を使って、アクセス権限のないディレクトリを検索対象から除外することもできます。 ! を使うと、指定したパターンにマッチするファイルやディレクトリを検索対象から除外できます。

Library ディレクトリを検索対象から除外
$ rg -g '!Library/' PATTERN
☝️ glob パターンの説明 zsh では ! が履歴展開として解釈されるため、glob パターンをシングルクォートで囲む必要があります。 例えば、zsh で "!ls" とすると、最後に実行した ls コマンドの履歴展開が行われてしまいますが、'!ls' とすればそのまま !ls という文字列が glob パターンとして渡されます。

常に検索対象から除外したいファイルやディレクトリがある場合は、.ignore ファイルや .gitignore ファイルを作成して、そこに除外したいパターンを記述しておくと便利です。

.ignore(検索除外パターン)
/Downloads/
/Library/
/Movies/

関連記事

更新: / 作成:

お名前.com で取得した独自ドメインを Cloudflare に移管する手順をまとめておきます。 思ったより簡単でした。

レジストラ移管の経緯など

世界最強のネットワーク(たぶん)である Cloudflare には今後もお世話になり続けると思うので、ドメイン管理+ネームサーバー管理も Cloudflare にまとめてすっきりさせたいと考えました。 Cloudflare のドメイン管理サービス(レジストラ)は、Cloudflare Registrar という名前で提供されています。

Cloudflare Registrar でドメインを管理するメリット

  • 更新費用が明確で安い: 「原価 + ICANN 手数料のみ」に近い価格設定。 お名前.com はサービス維持調整費という名目で+20%とか取られます。 これは為替変動によるところが大きいと思いますが、マージン手数料も含まれているようです。
  • 強力なネットワーク機能: DNS 関連は最強・最速。 HTTPS 対応とかも簡単・無料。 CDN、WAF、DDoS 対策、キャッシュなどと統合しやすい。 WHOIS 情報保護が実質標準。 転送量対策やセキュリティ強化がしやすい。
  • 不要な営業メールがない: お名前.com は謎の追加オプションの案内とか来ます。ドメインプロテクションとか何それ、標準で守ってよ。 あと、ドメイン取得無料(初年度無料)の案内とかマジでいらない。更新費用ぼったくられる予感しかしない。
  • UI がわかりやすい: Cloudflare は世界中で使われているサービスだけに、設定画面は万人にわかりやすくシンプルです。 Workers や R2 などの強力なサービスを使わせていただいているので、ドメインや DNS 管理も統合された画面でできるのは便利です。

デメリット

  • Cloudflare DNS の使用が必須: ネームサーバー(権威 DNS)は Cloudflare のものを使うことになります。 とはいえ、もともと Cloudflare の DNS を使いたいのだからこれはデメリットとは言えないかも。
  • サポート体制: 基本はオンラインサポート中心で、詳細なやりとりは英語になるかもしれません。 まぁ、サポートに連絡するようなことは滅多にないし問題なさそう。
  • ドメインの売買機能がない: お名前.com だと、保有しているドメインをオークションに出せたりしますね。 それで稼げることはほぼないと思いますが、面白いサービスではあります。
  • 1 年分の更新費用を先払い: ドメイン移管の際に、Cloudflare Registrar に 1 年分の更新費用を支払う必要があります。 これはドメイン移管の一般的なルールで、どのレジストラでも同様です。 次回の更新日が 1 年延長されるだけなので、継続利用する予定のドメインであれば特に問題はないと思います。
  • 一部の TLD に非対応: .jp ドメインなど取得・管理できない TLD(トップレベルドメイン)もあります。

.jp ドメインが使えないところは要注意ですね。 .jp は日本の JPRS(日本レジストリサービス)が管理していて、Cloudflare はまだ契約・統合対応していないようです。 幸い私は .jp ドメインを持っていないので問題なしです。 というわけで、Cloudflare にどっぷり浸かってしまっても大丈夫そうです。

ドメイン移管の手順

ドメイン移管のおおまかな流れは以下のようになります。 申請作業自体は 30 分もあれば終わります。 その後、メール承認などを終えると実際の移管が完了します。 すんなりいけば、合計 1 時間もかからないと思います。

  1. お名前.com でドメイン移管の準備(AuthCode の取得)
  2. Cloudflare でドメイン移管申請
  3. お名前.com からのドメイン移管確認メールを承認

1. お名前.com でドメイン移管の準備

まず、現在使用しているレジストラ(今回はお名前.com)でドメイン移管の準備を行います。 安全のためのドメイン移管ロックがかかっている場合は先に解除しておきます。

  1. お名前.com Navi のドメイン機能一覧の ドメイン移管ロック のページを開きます。
  2. 対象ドメインに移管ロックがかかっている場合は OFF に切り替えます。

次に、移管認証コード (Authorization Code) を取得します。 これは、後の Cloudflare 側でのドメイン移管申請の際に使用します。

  1. お名前.com Navi の ドメイン設定 タブを開き、対象のドメインを選択 します。
  2. AuthCode → 表示 を選択し、移管認証コード (AuthCode) をメモします。
    • Whois 情報公開代行を利用している場合は、解除ページ から解除しておきます。

2. Cloudflare でドメイン移管申請

Cloudflare に移管予定のドメイン名を登録します。

  1. Cloudflare のダッシュボードドメイン (Domains) タブを開きます。
  2. ドメインを追加 (Add domain) を選択します。
  3. ドメインを転送 (Transfer a domain) を選択し、ドメイン名 (例: example.com) を入力します。
    • このドメインのエントリーを初めて登録するときは、「プラン選択」の画面が表示されるので、Free(無料プラン) を選択して次に進みます。
    • すでに別のネームサーバーで運用されている場合は、「DNS レコードを確認する (Review your DNS records)」の画面が表示されるので、引き継ぐレコードの内容を確認して アクティベーションに進む (Continue to activation) を選択します。 Cloudflare のドメインネームサーバーのアドレスが表示されるので、これを現在使用中のレジストラ(例: お名前.com)に設定しておきます。 その時点で名前解決に関しては Cloudflare のネームサーバーが使われるようになります。
  4. 認証コード (Authorization code) の入力を求められるので、先ほどお名前.com で取得した移管認証コード (AuthCode) を入力します。
  5. 登録者や支払い情報 を入力して、移管ステータスを続行 (Confirm transfer) を選択します。
    • 登録者情報はそのまま WHOIS に表示されるので英語で入力しておくのがよいです(あとから設定画面で簡単に編集できますが)。

これで、お名前.com 側にも移管要求が送られるようです。 次のような移管待ち画面が表示されれば申請完了です。

/p/ead67i7/img-001.png
図: Cloudflare にドメイン移管申請の完了

View transfer status というリンクから、移管の進捗状況を確認できます。 わかりやすいですね。

/p/ead67i7/img-002.png
図: ドメイン移管の状況

3. お名前.com からのドメイン移管確認メールを承認

数分待つと、お名前.com から本当にドメイン移管していいのかの確認メールが届くので、記載されたリンクをクリックして承認 します。 私の場合は Cloudflare で申請してから数分で届きました。

Subject: 【重要】トランスファー申請に関する確認のご連絡 example.com

ドメイン名: example.com

お名前.com by GMO は、上記ドメインについて 2026/XX/XX に他社レジストラへのトランスファー申請を承りました。 トランスファー手続きにつきまして、他社レジストラへ移管をご希望の場合は期日までに以下 URL から承認のお手続きをお願いいたします。

承認後、数分待つと今度は Cloudflare とお名前.com の両方から、ドメイン移管が完了したことを知らせるメールが届きます。 お名前.com のドメイン一覧画面からも、対象ドメインの表示が消えているはずです。

Subject: Your transfer to Cloudflare Registrar has completed!

Hello, Your domain, example.com, is now registered with Cloudflare.

これでドメイン移管はすべて完了です。

٩(๑❛ᴗ❛๑)۶ わーぃ

関連記事

更新: / 作成:

何をするか

Web アプリをホスティングしたいとき、なんだかんだ言ってやっぱり Cloudflare が簡単かつ安価で高速です。 今後もこの図式が崩れることはしばらくなさそうです。 ということで、Cloudflare を使って独自ドメインの Web サイトを公開する手順をまとめておきます。 構成は以下の通りです。

  • ドメイン取得(レジストラ): お名前.com
  • ネームサーバー(権威 DNS サーバー): Cloudflare
  • ホスティング: Cloudflare Pages
  • コンテンツ用リポジトリ: GitHub

下記のページを読んでおくと、何の設定をしているのか理解しやすいと思います。

ドメインはお名前.com で取得済みのものがあったので、とりあえずそれを使うことにします。 ここでは、example.com という独自ドメインを取得済みとして説明します。

☝️ Cloudflare Registrar でドメイン取得

独自ドメインを持っていない場合は、Cloudflare Registrar でドメインを取得するのもおすすめです。 Cloudflare Registrar でドメインを取得した場合は、そのドメインのネームサーバーとして自動的に Cloudflare DNS が使われることになります。

日本でのドメイン運用会社(レジストラ)としては、お名前.com が有名ですが、実はレジストラも Cloudflare Registrar を使った方がお財布に優しく、設定画面もわかりやすいらしいので、あとでレジストラを移管するつもりです。→ しました

ちなみに、ネームサーバーが正しく設定されていない状態だと、下記のように nslookup コマンドによるドメイン名の解決結果が SERVFAIL エラーになります。 ドメイン自体が存在しない場合は NXDOMAIN エラーになります。 ネームサーバーが正しく設定されているが、A レコードなどの情報がない場合は、No answer 表示になります。

$ nslookup example.com
  ;; Got SERVFAIL reply from 1.1.1.1, trying next server
  Server:         1.0.0.1
  Address:        1.0.0.1#53

  ** server can't find example.com: SERVFAIL

アドレス解決ができないので、ping コマンドなども失敗します。

$ ping example.com
ping: cannot resolve example.com: Unknown host

Cloudflare のネームサーバー設定

ドメイン(example.com など)の情報を Cloudflare のネームサーバー(権威 DNS サーバー)で管理してもらうよう設定します。 Cloudflare のネームサーバー設定は以下から行います。

最初は 1 つもドメインが登録されていない状態なので、次のように追加します。

  1. ドメインを追加 (Add domain) を選択します。
  2. ドメインを接続 (Connect a domain) を選択し、ドメイン名 (example.com) を入力します。
  3. 「プラン選択」の画面が表示されるので、Free(無料プラン) を選択して次に進みます。
  4. 「DNS レコードを確認する」の画面で現状の DNS 設定を確認できます。現状は何も設定されていない想定なので、そのまま アクティベーションに進む (Continue to activation) を選択します。

上記手順を踏むと、以下のように Cloudflare のネームサーバーのアドレス (*.ns.cloudflare.com) が表示されるので、このアドレスを、ドメイン自体を管理しているレジストラ側で設定します。

/p/efcf8xn/img-001.png
図: Cloudflare のネームサーバーのアドレス

このアドレスのサブドメイン部分(赤枠)は、登録するドメインごとに変わる可能性があるので、必ず自分の画面で表示されているアドレスを確認してください。 上記の例では、すでにレジストラ側に別のネームサーバー (*.dns.ne.jp) が設定されている、と表示されていますが、これを Cloudflare のネームサーバーのアドレスで上書きします。 例えば、お名前.com の場合は、以下のようにネームサーバーアドレスを設定します。

  1. お名前.com Navi の ドメイン設定 タブを開きます。
  2. 購入したドメインの一覧が表示されるので、そこから対象のドメインを選択して ネームサーバー情報 を変更します。

「反映されるまで 24〜72 時間かかることがあります」と表示されますが、通常はすぐに反映されます。 dig NS example.comnslookup -type=NS example.com などのコマンドで、Cloudflare ネームサーバーのアドレスが表示されるようになれば反映完了です。

レジストラ側に Cloudflare ネームサーバーのアドレスを設定したら、Cloudflare 側の設定画面で ネームサーバーを更新しました (I updated my nameservers) ボタンを押して設定完了です。

/p/efcf8xn/img-002.png
図: Cloudflare ネームサーバーにドメイン登録が完了した

上のような表示が出ればうまく設定できています。 ٩(๑❛ᴗ❛๑)۶ わーぃ

Cloudflare Pages で Web サイトを作る

以上の設定で、独自ドメインが Cloudflare のネームサーバーで処理されるようになりました。 ただ、肝心の Web サイト(Web サーバー)がまだないので、Cloudflare Pages を使って簡単な Web サイトを作っておきます。 HTML コンテンツが格納された GitHub リポジトリがあれば、簡単に Cloudflare Pages で公開できます。

まずは、適当な GitHub リポジトリを作成して、次のような簡単な HTML ファイルをコミットしておきます。 /public ディレクトリ以下のコンテンツをトップページとして公開することにします。

/public/index.html
<!DOCTYPE html>
<meta charset="UTF-8">
<title>Hello, Cloudflare Pages!</title>
<p>Hello, Cloudflare Pages!</p>

Cloudflare Pages の作成は下記から行います。

次のように新しいアプリケーションを作成します。

  1. アプリケーションを作成する (Create application) を選択します。
  2. Continue with GitHub を選択して、コンテンツを置いた GitHub リポジトリを選択します。
  3. 「Setup your application」の画面で任意のプロジェクト名を設定し、パスを /public に変更 して、デプロイ ボタンを押します。

これだけで、https://<プロジェクト名>.<ユーザー名>.workers.dev/ のような URL で Web サイトが公開されます。

٩(๑❛ᴗ❛๑)۶ できたっ

Cloudflare Pages に独自ドメインを結びつける

最後に、Cloudflare Pages で公開した Web サイトに、独自ドメインでアクセスできるように設定します。

  1. Workers & Pages を開いて、対象のプロジェクトを選択します。
  2. 設定 (Settings) タブの ドメインとルート (Domains and Routes) で、追加 (Add) ボタンを押します。
  3. カスタムドメイン (Custom domain) を選択し、登録済みの独自ドメイン(例: example.com)を入力します。

これだけで、独自ドメイン(https://example.com など)で Web サイトにアクセスできるようになります。 サブドメイン(例: hello.example.com)を割り当てたいときは、上記のカスタムドメイン設定でサブドメインをそのまま入力するだけです。 https によるアクセスも自動で有効になるので、証明書の設定など面倒なことは一切不要です。

٩(๑❛ᴗ❛๑)۶ Cloudflare 便利すぎでしょ!

関連記事

メニュー

まくろぐ
サイトマップまくへのメッセージ