1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita の Web 記事を PowerShell ドライブにマウントして操作する

1
Last updated at Posted at 2026-03-07

はじめに

Qiita を普段使っていて、こんなことを思ったことはありませんか?

  • 「自分の記事の いいね数・PV をまとめて確認したい」
  • 「あのタグの記事をまとめて読み比べたい」
  • 「記事に誰がいいね・ストックしてくれたか一覧で見たい」
  • 「気になる記事をローカルにバックアップしたい」

Web ブラウザでは 1 記事ずつ開いて確認するしかありませんが、QiitaDrive を使えば、PowerShell のコマンドで Qiita の Web 記事をファイルのように操作できます。

image.png

QiitaDrive とは

QiitaDrive は PowerShell プロバイダ として実装されたモジュールです。Qiita: という仮想ドライブをマウントし、dircdGet-Content といった標準コマンド(プロバイダコマンドレット)で Qiita API v2 を操作できます。

image.png

PS プロバイダは、任意のデータストアを PowerShell Drive にして、dircd などのコマンドで操作できるようにします。この実装方法は、Microsoft のドキュメント にあります。

主な特徴

特徴 説明
仮想ファイルシステム dir, cd, cat など普段使いのコマンドがそのまま使える
OAuth 認証 ブラウザでログインするだけ。トークンの手動取得は不要
Qiita Team 対応 -Team パラメータでチーム環境に接続
ページング -Skip / -First で大量の記事を効率的にブラウズ
インメモリキャッシュ 一度取得した記事はセッション中キャッシュ。-Force で再取得
パイプライン連携 Sort-Object, Where-Object, Export-Csv など PowerShell の機能をフル活用

なお、このアプリは Qiita に 読み取り権限でアクセス します。記事を投稿したり、削除することはできません。

インストール

PowerShell 7.4 以降で動作します。

Install-PSResource QiitaDrive

セットアップ

Qiita に接続(OAuth 認証)

New-QiitaDrive

これだけで Qiita: ドライブがマウントされます。(Get-PSDrive コマンドを試して下さい。)この時点では認証は発生しません。実際に API を呼ぶ操作(dir Qiita:\Me\Items など)を行ったタイミングで、自動で PKCE フローが起動してブラウザが開きます。ログイン済みなら「許可する」ボタンを押すだけです。トークンはメモリ上のみに保持され、セッション終了で破棄されます。

PowerShell コンソールを起動するたびに New-QiitaDrive を実行するのが面倒なら、$PROFILE(PowerShell 起動時に自動で実行されるスクリプト)に New-QiitaDrive を追記しておきましょう。

# メモ帳で $PROFILE を開きます。New-QiitaDrive を追記してください
notepad $PROFILE

トークン指定

OAuth の代わりに、Qiita の設定画面で発行したアクセストークンを直接指定することもできます。これはブラウザのログイン画面を開かないので、無人のスクリプトでも実行できます。

New-QiitaDrive -Token $env:QIITA_TOKEN

トークンはパスワードと同様の機密情報です。他人に漏れないように管理して下さい。

Qiita Team

New-QiitaDrive -Team your-team

フォルダ構造

マウントされた Qiita: ドライブには、以下のフォルダがあります。

Qiita:\
├── CachedItems\         キャッシュ済みの全記事
├── ItemDetails\         記事の詳細情報
│   └── <記事名>\
│       ├── Comments\    コメント (Get-Content 対応)
│       ├── Likes\       いいねしたユーザー
│       └── Stockers\    ストックしたユーザー
├── LatestItems\         Qiita 全体の新着記事
├── Me\                  自分のデータ
│   ├── Items\           投稿した記事(PV 数付き)
│   ├── Stocks\          ストックした記事
│   ├── Followers\       フォロワー
│   ├── FollowingTags\   フォロー中のタグ
│   └── FollowingUsers\  フォロー中のユーザー
├── Search\              検索結果
│   └── <query>\
├── Tags\                タグ別の記事
│   └── <tag>\
├── Team\                チーム管理(Team 接続時のみ)
└── Users\               ユーザー別の記事
    └── <user_id>\

Qiita:\Me\Followers\Qiita:\ItemDetails\<記事名>\Likes\ に表示されたユーザーは、自動で Qiita:\Users\ に集約されます。このフォルダから、それらのユーザーの記事にもアクセスできます。

基本的な使い方

記事を一覧する

# ユーザー Qiita の記事を見る
dir Qiita:\Users\Qiita

# 検索
cd Qiita:\Search\Docker  # "Docker" で検索するフォルダを作成
dir                      # "Docker" で記事を検索

# Qiita 全体の新着記事
dir Qiita:\LatestItems

# ページネーション
dir Qiita:\Tags\Python -First 50
dir Qiita:\Tags\Python -Skip 100 -First 20

dir のパラメータ -First を省略した場合、キャッシュ済みの記事があればそれを表示し、なければ API で 20 件取得します。-Skip / -First で任意の範囲を取得できます。API の制限により、1 回のリクエストで取得できる記事の上限は 100 件です。

本稿では、記事の名前をフルパス(Qiita:\ から始まるパス)で記載していますが、cd で当該のディレクトリに移動すると、記事をその名前({id}_{name}.md)だけで指定できます。ディレクトリと記事の名前は Tab もしくは Ctrl+Space で自動で補完されるため、手入力する必要はありません。

タグがついた記事を探す

Qiita:\Tags\ フォルダには、人気のあるタグが 100 個、既定で表示されます。それ以外のタグフォルダも mkdir もしくは cd で作成できます。

cd Qiita:\Tags

dir PowerShell    # "PowerShell" タグがついた記事を一覧表示

cd ほえほえ        # "ほえほえ" タグフォルダを作成して移動
dir               # "ほえほえ" タグが付いた記事を一覧表示

cd Qiita:\Tags
rmdir *           # タグフォルダをすべて削除
dir -Force        # 既定の人気タグ 100個が復活します

記事を検索する

Qiita:\Search\ フォルダでは、API により任意のキーワードで記事を検索できます。dir <キーワード> で検索フォルダの作成と検索を同時に行います。

cd Qiita:\Search

dir PowerShell    # "PowerShell" 検索フォルダを作成して検索

cd ほえほえ        # "ほえほえ" 検索フォルダを作成して移動
dir               # "ほえほえ" で記事を検索

cd Qiita:\Search
rmdir *           # 検索フォルダをすべて削除

キャッシュ済みの記事を全文検索する

Search-QiitaContent コマンドは、キャッシュ済みの記事を全文検索します。検索対象の記事一覧は、-Path パラメータで指定します。指定しない場合は、カレントフォルダの記事を検索します。

# キーワードで検索
cd Qiita:\CachedItems           # キャッシュされたすべての記事
Search-QiitaContent PowerShell  # "PowerShell" で全文検索

# "PowerShell" タグがついた記事を "API" で全文検索
Search-QiitaContent API -Path Qiita:\Tags\PowerShell  

# Tags, Users, Search, Me など全フォルダを横断検索
Search-QiitaContent Docker -Recurse

# 前後行も表示
Search-QiitaContent error -Context 2

# ファイル名(記事タイトル)をワイルドカードで絞り込み
Search-QiitaContent git -Path Qiita:\Me\Items\*PowerShell*

Search-QiitaContentdirGet-Content で取得済みの記事本文を、ローカルで全文検索します(API を呼び出さないので高速)。-Recurse を付けると Tags、Users、Search、Me などの全フォルダを横断検索できます。マッチしたキーワードは黄色でハイライト表示されます。

記事を読む

記事の本文は初回アクセス時に API で取得し、以降はメモリキャッシュから読み出します。

# Markdown として表示
Get-Content Qiita:\Tags\PowerShell\24dd_いま一番新しい、Git の使い方を学ぶ方法.md

# Qiita のページをブラウザで開く
Open-QiitaPage Qiita:\Tags\PowerShell\24dd_いま一番新しい、Git の使い方を学ぶ方法.md

# 既定のアプリで開く(.md に関連付けされたエディタ等)
Invoke-Item Qiita:\Tags\PowerShell\24dd_いま一番新しい、Git の使い方を学ぶ方法.md

# MarkdownPointer で表示
mdp Qiita:\Tags\PowerShell\24dd_いま一番新しい、Git の使い方を学ぶ方法.md

Invoke-Item(別名: ii)はフォルダに対しても使えます。フォルダを Invoke-Item すると、対応する Qiita の Web ページがブラウザで開きます。

# タグページをブラウザで開く
ii Qiita:\Tags\PowerShell

MarkdownPointer(mdp)については、下記をご参照下さい。

URL / ID で記事を取得する

# URL で取得(ブラウザからコピーしてください)
Get-QiitaItem https://qiita.com/user/items/abc123

# URL をプロバイダパスに変換して Get-Content で読む
Resolve-QiitaPath https://qiita.com/user/items/abc123 | Get-Content

# キャッシュ済みの記事を短縮 ID で取得
Get-QiitaItem 1c6b

上記により取得した記事は、Qiita:\CachedItems\ にキャッシュされます。

実用的なユースケース

自分の記事のパフォーマンスを確認する

Qiita:\Me\Items\ フォルダで dir を実行すると、ページビュー数(views) も取得できます。

# 自分の全記事を一覧
cd Qiita:\Me\Items
dir -First 100

# いいね数でランキング
dir | Sort-Object LikesCount -Descending

# 統計サマリー
dir | Measure-Object -Property LikesCount, StocksCount, PageViewsCount -Average -Sum -Maximum -Minimum

Select-ObjectSort-Object の直後で Tab もしくは Ctrl+Space を押すと、有効なプロパティ名(たとえば LikesCountPageViewsCount など)を自動で入力できます。

記事に誰がいいね・ストックしたか確認する

Qiita:\ItemDetails\ フォルダでは、記事ごとのコメント・いいね・ストックを閲覧できます。下記のコマンドを実行する前に、対象の記事を取得しておいて下さい。(Qiita:\Me\Items\dir したり、Get-QiitaItem で取得できます。)

# 記事のいいねしたユーザー一覧
dir Qiita:\ItemDetails\24dd*\Likes

# ストックしたユーザー一覧
dir Qiita:\ItemDetails\24dd*\Stockers

# コメント一覧
dir Qiita:\ItemDetails\24dd*\Comments

# コメント本文を読む
Get-Content Qiita:\ItemDetails\24dd*\Comments\*

# コメント・いいね・ストックを一括取得
dir Qiita:\ItemDetails\24dd* -Recurse

上記では、取得済みの記事を指定できます。記事名の指定にはワイルドカード(アスタリスク)が使えるので、短縮 ID の先頭だけ覚えておけば十分です。(短縮 ID を入れて Tab を押すと、完全な名前が自動で入力されます。)いいねやストックをしたユーザーの名前は Qiita:\Users\ に自動で追加されるため、そこからそのユーザーが書いた記事を辿ることもできます。

フォロワー・フォロー中ユーザーの記事を読む

# フォロワー一覧
dir Qiita:\Me\Followers

# フォロー中のユーザー一覧
dir Qiita:\Me\FollowingUsers

# 特定ユーザーの記事
dir Qiita:\Me\FollowingUsers\someone

# 上記のユーザーは、すべて Users フォルダに集約されている
dir Qiita:\Users

CSV にエクスポートする

dir Qiita:\Me\Items -First 100 |
    Select-Object Title, LikesCount, StocksCount, PageViewsCount, CommentsCount, CreatedAt |
    Export-Csv c:my-articles.csv -Encoding shift_jis

定期的に実行すれば、記事のパフォーマンス推移を追跡できます。

記事をローカルにバックアップする

cd Qiita:\Me\Items
dir -First 100          # 記事メタデータをキャッシュに載せる
mkdir C:\backup\qiita\  # コピー先フォルダを作成
Copy-QiitaItem * C:\backup\qiita\

Copy-QiitaItem はワイルドカードに対応しているので、一括バックアップが簡単です。dir で一覧を取得しておくと、その記事がキャッシュに乗り、* で対象にできます。

対象の記事を、パイプで流し込むこともできます。

dir Qiita:\Me\Items -First 10 | Copy-QiitaItem -Destination C:\backup\qiita\

コピー先フォルダは事前に作成しておいてください。

いいねが多い記事だけを抽出する

dir Qiita:\Tags\Python -First 100 |
    Where-Object { $_.LikesCount -ge 10 } |
    Sort-Object LikesCount -Descending

PowerShell のパイプラインをそのまま使えるので、フィルタリングやソートも自由自在です。ただし、ソートやフィルタの対象は dir で取得済み(キャッシュ済み)の記事に限られます。-First 100 で多めに取得してからパイプに流してください。より多くの記事をキャッシュしたい場合は、続けて -Skip 100 -First 100 を指定して実行します。

PowerShell.MCP と連携する

PowerShell.MCP を併用すると、AI が直接 Qiita: ドライブにアクセスできます。AI は QiitaDrive の使い方を Get-Help コマンドで自動的に学習し、すぐに Qiita: をナレッジベースとして活用し始めます。

たとえば、次のようなプロンプトを試して下さい。

New-QiitaDrive を実行して。QiitaDrive module の使い方を確認して
Qiita: で、キャッシュ済みの記事から MCP に関する記述を探して
私の記事のいいねやページビューを追跡する .ps1 スクリプトを書いて

Qiita の記事を操作する .ps1 スクリプトを AI に書いてもらえば、より高度な操作が可能になります。しかも、そのスクリプトは AI が実行することも、手作業で実行することもできます。

PowerShell.MCP については、下記をご参照下さい。

技術的な補足

QiitaDrive は C# で実装された binary module です。PowerShell の NavigationCmdletProviderIContentCmdletProvider を実装しており、dircdGet-Content といったファイルシステム操作をそのまま Qiita API に変換します。

タブ補完はキャッシュベースで動作します。API を叩かないのでレスポンスは即時です。Tags フォルダでは人気タグ上位 100 件が初回アクセス時に取得され、補完候補になります。使っていくとキャッシュが充実し、補完候補も増えていきます。

ファイル名の仕組み

記事は {短縮ID}_{タイトル}.md の形式で表示されます。

c3f4_MCP 時代の到来とアプリ開発の新常識.md
24dd_いま一番新しい、Git の使い方を学ぶ方法.md

Qiita の記事 ID は 24dd38c8e213638cb35e のような 20 文字の 16 進数です。Git のコミットハッシュと同様に、先頭の数文字だけで一意に識別できるため、デフォルト 4 文字に切り詰めています。キャッシュ内で衝突が起きた場合にのみ、自動的に桁数が増えます。

キャッシュの管理

QiitaDrive はインメモリキャッシュを使います。時間経過で自動的に無効になることはなく、セッション中は明示的にクリアするまで保持されます。

# キャッシュを無視して再取得
dir Qiita:\Tags\PowerShell -Force

# 特定パスのキャッシュをクリア
Clear-QiitaCache -Path Tags/PowerShell

# ワイルドカードで複数タグのキャッシュをクリア
Clear-QiitaCache -Path Tags/Power*

# フォルダ単位でキャッシュ削除(Remove-Item でも可)
Remove-Item Qiita:\Tags\Python

# 記事単位でキャッシュ削除
Remove-Item Qiita:\Me\Items\7b42*

# 全キャッシュクリア
Clear-QiitaCache

Remove-Item は個別の記事やフォルダのキャッシュ削除に対応しています。不要な記事をキャッシュから除外してから Sort-ObjectMeasure-Object に流すと、必要な記事だけを対象に分析できます。

コマンドレット一覧

コマンド 説明
New-QiitaDrive Qiita ドライブをマウント(OAuth またはトークン指定)
Get-QiitaItem URL / ID で記事を取得
Resolve-QiitaPath URL / ID をプロバイダパスに変換
Copy-QiitaItem 記事をローカルファイルにコピー(ワイルドカード対応)
Open-QiitaPage Qiita の対応ページをブラウザで開く
Search-QiitaContent キャッシュ済み記事の全文検索(-Recurse で横断検索)
Get-QiitaComment URL / ID でコメントを取得
Clear-QiitaCache キャッシュをクリア(パス指定・ワイルドカード対応)

動作環境

  • PowerShell 7.4 以降

おわりに

QiitaDrive を使うと、ブラウザでは手間のかかる操作を PowerShell のワンライナーで実現できます。

  • 自分の記事の PV・いいね・ストックを集計
  • 記事ごとのいいね・ストックしたユーザーを一覧
  • 特定タグの人気記事を一括チェック
  • Qiita 全体の新着記事をターミナルで流し読み
  • フォロワーやフォロー中ユーザーの記事を横断閲覧
  • 記事のローカルバックアップ
  • パイプラインを活かした柔軟な検索・フィルタリング

リポジトリ: https://github.com/yotsuda/QiitaDrive

Install-PSResource QiitaDrive
New-QiitaDrive
dir Qiita:\

ぜひお試しください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?