
トップレベルコメントとは、投稿に直接付けられたコメントです。返信とは、コメントに対する応答です。この手順では、トップレベルコメントだけを使います。
出典の識別子とは、1つの投稿、コメント、または投稿者を識別するための公開された名称です。NVivoは、手作業でコーディングするためにテキストを保存するソフトウェアです。質的研究のコーディングとは、テキストに名前の付いたラベルを付け、その理由を書くことです。
Actorは、ホスト環境で動作してデータを収集するプログラムです。Taskは、Actorの入力設定を保存したものです。TikTok Comments Scraper Actorは、公開されている出典からデータ行を収集します。コーディングは利用者が行います。このActorは、コード、ケース、NVivoファイルを作成しません。
公開TaskのTikTokコメントをCSVまたはExcelに書き出すは、2026年10月13日に確認しました。公開Taskは、作業を始めるための入力設定にすぎません。分析が自動で行われるわけではありません。
目的に合った公開データ行を収集する
公開ビルド0.1.17を使ってください。入力の`startUrls`には、1〜100件の項目を指定できます。各項目には、`/video/`または`/photo/`を含む確認済みの完全なURLか、数字の投稿IDを指定する必要があります。短縮リンクだけでは不十分です。まず短縮リンクを開き、確認済みの完全なURLをコピーしてください。
保存済みのTaskには、サンプル動画が1件入っています。そのサンプルを、研究対象とする確認済みの公開投稿1件に置き換えてください。保存されている入力は次のとおりです。
{
"startUrls": ["https://www.tiktok.com/@zachking/video/7631200623693729038"],
"maxCommentsPerVideo": 250,
"includeReplies": false,
"maxRepliesPerComment": 10
}`maxCommentsPerVideo`は、1投稿から取得するトップレベルコメントの行数の上限です。指定できる値は1〜1,000です。保存済みのTaskでは250を使っています。最初のテストでは、250を3に変更してください。
`includeReplies`がfalseの場合、返信の行は収集しません。このテストではfalseのままにしてください。`maxRepliesPerComment`は、保存された1件の親コメントに対して取得する返信数の上限です。指定できる値は1〜100です。保存済みのTaskでは10を使っています。`includeReplies`がfalseの間は、この返信数の上限を設定しても返信は収集しません。
今回の対照テストでは、トップレベルコメントの上限を3に設定しました。重複のないコメントを3件保存しました。各コメントは、指定した投稿と一致していました。いずれも空ではないテキストと、`authorId`、`createdAt`がありました。各行で、`isReply`はfalse、`replyDepth`は0、`status`はokでした。okは、実際のコメントを保存したことを示します。`replyDepth`が0の場合、その行はトップレベルコメントです。
この対照テストが裏付けるのは、トップレベルコメントの収集だけです。返信の収集はテストしていません。公開コメントをすべて収集したわけでもありません。行数に上限を設けたデータや公開フィードのサンプルは、コメント全体ではありません。
データ行とOUTPUTの概要を読む
元のJSONまたはJSONLファイルを、変更せずに保存してください。JSONは、Actorが出力する構造化ファイルです。OUTPUTも保存してください。OUTPUTは収集結果の概要であり、コメントの行ではありません。
OUTPUTの次の項目名を保持してください。
- `inputsReceived`
- `uniquePostsPlanned`
- `postsAttempted`
- `postsWithRows`
- `commentsWritten`
- `repliesWritten`
- `rowsWritten`
- `stopReasonCounts`
- `failedInputDetails`
各入力について、停止理由、状態、上限の詳細も保存してください。このガイドでは、対照テストのOUTPUTの数値を作り出して補うことはしません。保存されたコメント数として分かっているのは3件です。上記のOUTPUTの値は、ご自身のファイルで確認してください。不明な件数を0で埋めないでください。
`repliesWritten`は、注意して解釈する必要があります。保存された値が0の場合、返信の行が書き込まれなかったことを示します。誰も返信を書かなかったという意味ではありません。返信は対象範囲から外していました。返信のテキストがないからといって、やり取りがなかったことにはなりません。
実際に保存されたコメントは、すべて`status`がokです。取得できない入力はOUTPUTに残ります。その入力のために、架空の空コメント行を作らないでください。
公開データの値がnullの場合があります。nullは、値が提供されなかったことを示します。falseとは異なります。falseは、出典が否定を示したことを意味します。falseを不明として扱わないでください。
`commentIndex`は、保存時の行の位置です。TikTokが付けた関連度スコアではありません。`replyCount`は返信の件数です。その件数から返信のテキストが得られるわけではありません。
Actorは、出典から取得した次の列を返すことができます。
- `inputIndex`
- `inputUrl`
- `postUrl`
- `postId`
- `commentId`
- `text`
- `language`
- `createdAt`
- `likesCount`
- `parentCommentId`
- `replyToCommentId`
- `isReply`
- `replyDepth`
- `replyCount`
- `authorId`
- `authorHandle`
- `authorDisplayName`
- `authorUrl`
- `authorVerified`
- `isPinned`
- `isHeartedByCreator`
- `commentIndex`
- `replyIndex`
- `status`
- `scrapedAt`
さらに3つの列をご自身で作成します。これらは出典から取得した列ではありません。
- `local_record_key`は、NVivoに渡す識別子です。
- `author_key`は、行をグループにまとめられるよう、投稿者の識別子を文字列としてコピーしたものです。
- `collection_time`は、作業用ファイルに記録する収集時刻です。
`collection_time`が`scrapedAt`のコピーである場合は、そのことを記録してください。`selection_note`もご自身で付けるメモです。出典から取得した列ではありません。独自に作成した`local_record_key`は、確認済みのコメントIDではありません。識別子はすべて文字列として保存してください。表計算ソフトは、列が数値形式だと桁数の多い数値を変更することがあります。
Actorが提供するのは、公開テキストだけです。質的研究のコード、NVivoへのインポート、ケース、医学的解釈、自動的な理論生成は提供しません。
次の8つの作業を行う
- まず研究のルールを書きます。
収集する前に、対象とする確認済みの公開投稿を明記してください。採用するコメントの対象期間について、開始日と終了日を書いてください。言語のルールも書いてください。この方法では、トップレベルコメントを選びます。返信を研究する場合は、別のテストを行い、その後に対象とすることを明示的に決める必要があります。`createdAt`が対象期間外であれば、その行をコーディングから除外し、理由を`selection_note`に書いてください。このガイドの後半にある園芸の文章は、日常的な園芸を題材にした架空の文章です。公開コメントのサンプルから医学的な主張を裏付けることはできません。
- 対象とする投稿1件を、上限3件でテストします。
すでに確認している実在の投稿を1件使ってください。`maxCommentsPerVideo`を3に設定します。`includeReplies`をfalseに設定します。その後、出典の識別子、テキスト、`status`、OUTPUTを確認してください。上限3件なら、実際の列を確認するのに十分です。また、大きなファイルを扱う前に確認できる少量でもあります。確認した対照テストが裏付けるのは、このトップレベルコメントの収集手順だけです。保存していない返信は、対象範囲から除外したものとして扱ってください。
- 元データを保存してから、行と列からなる作業用テーブルを作ります。
元のJSONまたはJSONLファイルは変更しないでください。OUTPUTも変更しないでください。作業用テーブルは、後から作るコピーです。次の列を使ってください。`local_record_key`、`postId`、`postUrl`、`commentId`、`author_key`、`text`、`createdAt`、`language`、`isReply`、`parentCommentId`、`collection_time`、`selection_note`。識別子は文字列として保持してください。出典に`commentId`がある場合は、それを`local_record_key`として使います。出典の識別子がない場合は、`local_record_key`を作成し、識別子が欠けていることを`selection_note`に記録してください。このローカルキーは、ご自身の行を識別するためだけのものです。TikTokのコメントIDであることを証明するものではありません。変更していない元ファイルがあれば、このコピーを照合できます。
- インポートする前に、ケースの単位を決めます。
ケースとは、コーディングする1つの単位です。この方法では、観測したコメント1件を1ケースとします。1人を意味するものではありません。`local_record_key`を一意のケースIDとして使ってください。`author_key`と`postId`は、グループ化用の列として保持します。これにより、1つのアカウントのコメントをまとめて読めます。ただし、そのアカウントを本人確認済みの1人として扱うことはできません。この単位の選択が、件数の数え方を決めます。同じ`author_key`による2件のコメントは、2ケースであり、1つのアカウントグループです。2人ではありません。
- 列の構成を固定したワークシートを1つ用意します。
見出し行は1行にしてください。各列には、同じ種類の値を入れてください。出典の`text`を、変更せずに`raw_text`へコピーします。編集したコピーは`analysis_text`に入れます。非公開にすべき語を伏せたり、ご自身のコピーだけを修正したりする場合は、変更を1つずつ変更履歴に書いてください。何も変更しない場合は、その履歴に「none」と書いてください。フィールドを引用符で囲んだUTF-8のCSVファイルか、Excelファイルとして保存します。UTF-8は、éなどの文字を保持できる文字エンコーディングです。引用符で囲んだフィールドには、カンマ、引用符、改行を含められます。これらすべてに加え、ASCII以外の文字を含む1行でテストしてください。Excelでは、識別子の列を文字列としてインポートしてください。ファイルを開くために、生のコメントから意味のある記号を削除しないでください。Word文書の作成は任意です。ワークシートで研究の要件を満たせるなら、Word文書は不要です。
- ワークシートをWindows版NVivo 15にインポートします。
Windows版NVivo 15のヘルプでは、このインポートを調査データのインポートとして説明しています。メニューでは、Import(インポート)、Survey(調査)、Excel or Text File(Excelまたはテキストファイル)の順に進みます。ヘルプページはデータセットです。ファイルを選択してください。見出し行、文字エンコーディング、列の区切り文字を確認します。区切り文字とは、列を分ける文字のことで、多くの場合はカンマです。プレビューを確認してください。`local_record_key`を一意のレコードIDとして選択します。`analysis_text`は、コーディングできる自由記述テキストであるオープンエンドに指定します。`postId`、`commentId`、`author_key`、`isReply`、時刻の列は、クローズドエンドに指定します。クローズドエンドとは、その列を行の分類だけに使うことです。ワークシートにすでに保存されている列は、NVivoへの取り込み対象から外してもかまいません。NVivoでは、行に回答者というラベルが付く場合があります。この研究では、そのラベルもコメント1件を意味します。インストール済みのNVivoでメニューを確認してください。これらの名称は、Windows版NVivo 15のヘルプに記載されているものです。すべてのバージョンやmacOSに、そのまま当てはめないでください。コメントをケースとすること、コードのルール、監査の方法は、研究上の選択です。そのベンダーのページから引用したルールではありません。
- インポート結果を確認し、対応付けが間違っていれば再インポートします。
インポートされたレコードを数えてください。件数は、取り込む予定だったワークシートと一致する必要があります。いくつかのレコードを開いてください。出典の識別子とテキストが完全に一致することを確認します。現在のWindows版NVivo 15のヘルプでは、インポート後に調査データのソース内容は編集できないとされています。また、インポート後に列の分析の種類やデータ型を変更することもできません。対応付けが間違っている場合は、ワークシートを修正してください。修正したファイルを新しいコピーとしてインポートし、確認してください。実際のNVivoアプリケーションでのテストは行っていません。この手順は、文書に基づいて読者が確認するためのものです。インポート機能の実測結果ではありません。
- 大きなデータ群に進む前に、少量のデータを手作業でコーディングします。
各コードのラベルを書いてください。そのコードに含めるものと、含めないものを書きます。メモとコーディングのバージョンを保存してください。短い抜粋を読むときも、出典とケースを確認できるようにしてください。コメントごとに自動作成した1ケースは、独立した参加者1人ではありません。コードとレコードの対応表を書き出してください。ワークシートと照合します。その確認を終えてから、大きなデータ群をコーディングしてください。
コメントの行をNVivoに取り込む方法について、質問が寄せられています。公開された質問の1つが、このr/CompSocialのコメントです。この質問は、そうした方法が必要とされていることを示します。ただし、ここで示したケースの対応付けが、すべての研究に適していることを示すものではありません。
架空の3行を使って対応付けを確認する
以下の行は、この記事のために作った架空のデータです。学習用の例であり、Actorの取得結果ではありません。対照テストで得た実際のコメントの文言は残していません。これらの園芸に関する文章を、TikTokから収集したテキストとして読まないでください。
この架空の例では、一般的な園芸用トレーに関する2つの投稿を使います。投稿P1には、トップレベルコメントが2件あります。投稿P2には、トップレベルコメントが1件あります。アカウントキーAは、P1にコメントC1を書きました。テキストは「トレーを持ち運びにくい」です。アカウントキーAは、P1にコメントC2も書きました。テキストは「取っ手を付けました」です。アカウントキーBは、P2にコメントC3を書きました。テキストは「説明が役立ちました。」です。3行すべてがトップレベルコメントで、確認済みの投稿にひも付いています。R1、R2、R3の変更履歴にはnoneと記されています。`analysis_text`は、これらの元の文言と一致しています。
R1、R2、R3は、3つのコメントケースです。AとBは、2つのアカウントキーです。これらのキーは、グループ化の根拠となる情報です。3人を表しているわけではありません。
出典、ケース、列の対応付け
| local_record_key | ケース | postId(クローズドエンド) | commentId(クローズドエンド) | author_key(クローズドエンド) | isReply(クローズドエンド) | analysis_text(オープンエンド) |
|---|---|---|---|---|---|---|
| R1 | コメント1件 | P1 | C1 | A | false | トレーを持ち運びにくい |
| R2 | コメント1件 | P1 | C2 | A | false | 取っ手を付けました |
| R3 | コメント1件 | P2 | C3 | B | false | 説明が役立ちました。 |
`local_record_key`をNVivoのケースIDとして使ってください。この対応付けでは、`analysis_text`だけがオープンエンドの列です。`postId`、`commentId`、`author_key`、`isReply`はクローズドエンドです。R1とR2は、アカウントキーAを共有しています。単位はコメントなので、2つのケースのままです。共通のキーによって、まとめて読むことができます。
3つのケースのコーディング結果
2つのコードを使います。`handling_problem`は、物を持ちにくい、または動かしにくいと書き手が述べていることを意味します。`workaround`は、作業をしやすくするために何を変えたかを、書き手が述べていることを意味します。説明が役立ったとだけ述べるコメントには、どちらのコードも付けません。
| local_record_key | author_key | コード | 理由 |
|---|---|---|---|
| R1 | A | handling_problem | トレーを持ち運びにくい。 |
| R2 | A | workaround | 書き手が取っ手を付けた。 |
| R3 | B | none | 説明が役立ったという内容は、どちらのコードにも該当しない。 |
件数は正確です。研究用コメントは3件です。コードを付けたコメントケースは、R1とR2の2件です。コードを付けた各ケースには、1つのコードがあります。R3にはコードがありません。アカウントキーAには、ひも付いたコメントが2件あります。これらのコメントは、独立した2人を表すものではありません。次の行は、これらの件数に含めません。
ファイルのテスト専用の別の行
R-TESTは、4行目として作成した架空の行です。カンマ、引用符、改行、文字éをテストするために使います。研究用コメントではありません。研究用コメント3件には含めないでください。コードを付けた2つのケースにも含めないでください。コードを付けないでください。
想定する未加工のテキストは、次の2行です。
The note says "café, tray"
Carry it flat.このCSVでは、そのテキストを引用符で囲んだ1つの列に入れています。カンマは引用符の内側に残ります。内側の引用符は2つ重ねています。改行は実際の改行であり、スラッシュとnの2文字ではありません。
local_record_key,postId,commentId,author_key,isReply,analysis_text,selection_note
R-TEST,P-TEST,C-TEST,T,false,"The note says ""café, tray""
Carry it flat.",import test onlyプレビューを開いたら、テキストが上記の2行と一致することを確認してください。カンマが残っている必要があります。café, trayを囲む引用符が残っている必要があります。改行が残っている必要があります。éが残っている必要があります。このテスト行の`isReply`がfalseなのは、falseであることが分かっているという意味です。不明な値ではありません。このファイルに対してインポート処理は実行していません。R-TEST、R1、R2、R3について、インポートの実測結果はありません。
出典と参考資料
著者 Chronometrica · 更新日
ページの先頭へ ↑
