タグ別アーカイブ: 生成AI

Young woman with glasses studying papers at desk with books, tablet, and lamp at night

水本先生の「生成AIを用いた倫理的・効率的な英語論文執筆」をスキル化しました

はじめに

学期が始まっているっていうのに,まだ春休みモードで今すぐにやらなくてもいいことが捗ってしまっている田村です。

少し前に,Claude CodeやChatGPTを使って論文を丸ごと書くワークフローを紹介するX上の記事をいくつか目にしました。その中には「AIが書いた文章のAI臭さを消すツール(Humanizer)」を強く推奨しているものもあって,正直なところ,うーん…となりました。

AI臭さを「消す」ことが前提になっている時点で,それはもう「AIが書いた論文をAIが書いたとバレないようにする」ワークフローなわけで,なんでそんなものにみんな群がっているのだろうかと。学術倫理的にかなり危ういですよね。

じゃあどうするのか

同僚の水本篤先生が,「生成AIを用いた倫理的・効率的な英語論文執筆」という非常に体系的なWebガイドを公開されています。このガイドは「隠す」のではなく「適切に使って,ちゃんと申告する」という思想で設計されていて,Augmented Competence(AIで拡張できる能力の範囲)の原則や,AI利用の倫理的な判断基準が明確に示されています。

このガイドでは,使えるプロンプトも豊富に掲載されているのですが,論文を書いている作業の中で,あの水本先生のガイドの中のプロンプトを使おうって思っても,探しに行くのに手間取ってしまったり,気づいたら水本先生のXのポストを見に行ってしまって時間を空費してしまう可能性もありますよね。そこで,ガイドの原則をClaude上で自動的に適用できるようにスキル化したら便利じゃないかと思い,水本先生の許可をいただいた上で作りました。

ethical-academic-writing

GitHub: https://github.com/tam07pb915/ethical-academic-writing

日本語版と英語版の両方を用意しています。詳しくはGitHub上のREADMEやそれぞれのマークダウンファイルをお読みいただければと思いますが,簡単にこの記事でも紹介します。

何ができるか

  • 倫理ガードレール:受容能力の範囲内での支援に限定。「自分では書けない表現は使わない」を自動チェック
  • AI生成文で目立ちやすい表現への注意喚起:一律禁止ではなく,不必要な反復を点検
  • 8つの失敗パターン検出:AI丸投げ,架空引用,文体キメラ(文体のツギハギ状態)などを警告
  • 3段階の洗練プロセス:内容の英語化→文体調整→表現の磨き上げ
  • セクション別テンプレート:CARSモデル(Introduction),ムーブ分析(Discussion),APA統計書式(Results)など
  • AI利用申告の自動生成:使用状況に応じた5段階のテンプレート
  • 査読対応:模擬査読,Response to Reviewers,カバーレター支援

何をしないか

  • 本文の丸ごと生成(ユーザーの骨格が必要)
  • 文献・引用・DOIの生成
  • AI検出回避を目的とした書き換え

要するに,AIに「論文を書かせる」のではなく,「自分が書いた論文をAIで診断・洗練する」ために,生成AIに読み込ませる指示書ファイル群です。

使い方

claude.aiのProjectに入れて使うのがおすすめです。論文執筆用のProjectを作って,SKILL.mdをProject Instructionsに貼り,references/のファイルをProject Knowledgeとしてアップロードするだけです。

Claudeの用途がほぼ論文執筆だけの人は,ユーザースキルとしてインストールして全会話に適用してもいいと思います。

私はいつも,Claude Code使おうかなってClaudeに相談すると,「あなたの用途なら全然必要ない。」って言われていまだにclaude.aiとCoworkしか使っていないのですが,Claude Codeの場合は ~/.claude/skills/ にフォルダごとコピーすればOKのようです。

作る過程で面白かったこと

このスキル自体は,水本先生のウェブガイドをソースにしてClaudeに作らせました。ところが,最初のバージョンで参考文献の書誌情報が間違っていました。Kobak et al. (2025) のタイトルが不正確だったり,Mizumoto et al. (2024) のDOIパスの一部を論文タイトルだと誤認していたりという。私が見ていたら,参考文献がなんか怪しそうだなと気づき,調べてみたら誤りだと気づきました。「文献はAIに生成させるな」「DOIは必ず検証しろ」とスキル自身が書いているのに,スキルを作ったAI自身が(というか私がといってもいいんですが)それをやっている。なかなか皮肉な話です。これは他にもありそうだなと思って,ChatGPTにファクトチェックさせたらそっちも著者名を間違えていたので(実在する筆頭著者+架空の共著者という部分捏造型ハルシネーション),最終的にCrossrefで検証して修正しました。

この経験自体が,水本先生のガイドが言っている「AIの出力を無批判に採用しない」「ファクトチェックは人間がやる」の重要性を実証しているなと思って,ちょっとだけ肝が冷えました。最近,論文を書くときに先行研究のレビューでこんなことやってるor言ってる研究ないかなとGeminiのDeep Research使って調べてもらったのですが,自分がよく読んだことのある論文に「XXXX」という直接引用があってこれがまさにあなたが知りたかったことですよね,みたいなレポートを出してきたんですよ。「おまえ自分では(アクセスできないから)ほとんどの論文のアブストしか読めないくせにそんな自信満々に書いてきて胡散臭いぞ」と思って論文の中身を検索したら全然そんなことは書いてありませんでした。ということもありました。Xのおすすめとかは私が興味あることもあって割とAIすげえええみたいなのとか,研究への利用の話も流れてくるのですが,冒頭で私が言及した記事とかもマジでありえん話でしたし,ほんとXは140字でも胡散臭いのたくさんあったのに長文記事は長く書いてある文だけ信憑性がありそうな雰囲気が漂っていて,マジでひどいです。長文記事も長文ポストも,途中まで読んでAI臭がしてだめだってなるの多いですよねほんとに。あれ,なんか脱線して愚痴っぽくなってしまいました。

おわりに

私的には,AIを論文執筆に使うこと自体は止められない流れだと思います。だからこそ,「隠す」方向ではなく「ちゃんと使って申告する」方向でやっていかないといけないなと感じていますし,でもかといってまだまだ試行錯誤の真っ只中でもあるので,あれこれ試しながら,自分にあった方法も使いながらって感じでやってます。ブログ記事も,生成AIに整えてもらうことはあるんですが,それで自分らしさがなくなっちゃっちゃーいやよね,とか思ったりもしました。

そこで,私は自分が2012年からやってるこのブログの全記事をxmlファイルでダウンロードして,それをマークダウンファイルに変換してNotebookLMに読ませて文体の分析をさせました。それをClaudeにスキル化してもらって,最終的に私らしさが失われないようにチェックしてもらうようにしようかなとか思っています。

私はまあ数は多くないですが,生成AI登場以前も論文を書いたことがあるので,それを使って自分の論文のスタイルとかロジックとかの「クセ」をNotebookLMに抽出してもらって,生成AIとやりとりしながら作った文章が,過去の自分の書いた論文とズレがないかをチェックしてもらうみたいなのも同じ発想でできそうですよね。

おわりにとかいって全然終わらせる気がない感じになってしまいましたが,水本先生のガイド(https://langtech.jp/ai-writing/)は本当によくできているので,スキルを使うかどうかに関わらず,一度目を通すことをおすすめします。

なにをゆう たむらゆう。

おしまい。

追記(2026-04-14)

使い方について訂正

上で「claude.aiのProjectに入れて使うのがおすすめです」と書いたのですが,実際にやってみたら全然制御が効きませんでした

Project InstructionsにSKILL.mdを貼って,referenceファイル(プロンプトテンプレート集やチェックリスト)をProject Knowledgeにアップロードする方法だと,Claudeがreferenceファイルを「必要」と判断したときしか読みに行かないので,せっかく作ったテンプレートやチェックリストがまったく参照されないことがありました。

現在の推奨はカスタムスキルとしてのアップロードです。

  1. GitHubからZIPでダウンロード
  2. claude.aiで Settings > カスタマイズ に移動(現行ではコネクタにいくと,カスタマイズへの移動を促されます)
  3. カスタマイズの中の「スキル」を選択
  4. +ボタンでスキルを作成を選択し,
  5. 「スキルをアップロード」を選んでZIPをアップロード

これでスキルのdescriptionに基づいてClaudeが自動判断で読み込むようになります。「論文の英語を直して」とか「査読コメントへの返事を書きたい」みたいな依頼をすると勝手に効きます。効いてないなと思ったり,「ここで呼び出そう!」みたいなタイミングがあったら意図的にスキル呼び出すのもいいと思います。

なお,Claude Codeの場合は ~/.claude/skills/ にフォルダごとコピーすれば,/ethical-academic-writing のようにスラッシュコマンドで明示的に呼び出すこともできます。

文体チェックスキルの話

「おわりに」で書いた,ブログの文体分析→自分らしさのチェックの話ですが,実際にスキルとして実装しました(こちらは個人用で非公開)。

やったことは以下のとおりです。

  • ブログの全記事XMLをマークダウンに変換してNotebookLMに読ませ,文体の特徴を抽出
  • 論文の方も,自分の単著・筆頭論文のPDFをNotebookLMに読ませて,語彙・文構造・論理展開の3層で特徴を抽出
  • 抽出結果をプロファイルとしてまとめて,ドラフト完成時にプロファイルとの乖離をチェックするスキルを作成

論文用のプロファイルでは,たとえば「mightをmayより好む」「Looking at Table X, … でデータを参照する癖がある」「Limitationsは率直に認めた上で”In spite of these limitations, the study does add to…”で締める」みたいな自分のクセが抽出されていて,ちょっと面白かったです。AIで推敲した後にこういう個性が消えていないかを点検する,という使い方をしています。

ポイントは,プロファイルは「正解」ではなく「ベースライン」だということです。乖離が見つかったとしても,それが意図的な改善なのか,AIに引きずられた無自覚な変化なのかは自分で判断します。voiceチェックでフラグが立ったら即修正しないとけないというわけではなくて,あくまで自分では見逃してしまっていた箇所がないかということを確認するためのツールです。


更新履歴

  • 2026-04-13(初版公開):スキルの紹介,使い方(Project方式),ファクトチェックの失敗談
  • 2026-04-14(追記):使い方をProject方式からカスタムスキル(ZIPアップロード)に変更(Project方式ではreferenceファイルが参照されない問題が判明)。文体チェックスキルの実装報告

論文ページからワンクリックでTeamsに共有できるChrome拡張を作った(というかほぼClaudeに作ってもらった)

はじめに

矢野雅貴さん(@masayano_)がXで「Claudeにお願いしたら,ジャーナル論文のウェブサイトでクリックするだけで,タイトルや簡単な概要・解説を研究室のDiscordに投稿するアドオン作れた」と投稿されていて,これめちゃくちゃ便利やんと思いました。

私はゼミではDiscordではなくTeamsを使っているので,Teamsで同じことができないかと試してみたところ,できました。Gemini APIの無料枠を使えば,論文の日本語解説まで自動生成して一緒に投稿できます。とはいえ,ウェブで取ってこれる情報に依存するので,論文全体を読んでの解説ができるものとできないものに分かれるのかなとは思います。「解説」は今の段階ではアブストの日本語訳って感じですね。

コードはGitHubに公開しています。

https://github.com/tam07pb915/paper-to-chat

完成イメージ

論文ページで拡張のアイコンをクリックすると,こんな感じのポップアップが出ます。

拡張のポップアップ画面(論文情報が表示された状態)

「投稿する」を押すと,TeamsのチャンネルにGeminiが生成した日本語解説付きで投稿されます。数秒かかりますが,Geminiが解説を生成しているのでしょうがないです。

Teamsに投稿された結果(解説が途中で省略されます)
Teamsに投稿された結果(詳細表示後はこうなります)

仕組み

やっていることはシンプルで,Chrome拡張が論文ページからメタデータ(タイトル,著者,DOIなど)を抽出して,Gemini APIで日本語解説を作って,Power AutomateのWebhook経由でTeamsに投稿する,という流れです。Highwire Press標準の citation_* メタタグに対応しているので,PubMed,Wiley,ScienceDirect,JSTAGE,CiNiiあたりはだいたい動くらしいです(あまりよくわかっていない)。

セットアップ

1. Chrome拡張のインストール

GitHubからZIPをダウンロードして解凍したら,chrome://extensions/ を開いてデベロッパーモードをONにし,「パッケージ化されていない拡張機能を読み込む」から解凍したフォルダを選ぶだけです。インストールできたら,アドレスバー右のパズルアイコンからピン留めしておくと使いやすいです。

2. Power Automateの設定(ここが一番面倒)

ここが一番の沼でした。2025年末にTeamsの旧Incoming Webhook(コネクタ方式)が廃止されていて,「to be retired」と表示されているのに新規追加しようとしてもできないようでした。Power Automate経由にするしかないんですね,今は。これも時間が経つと変わるかもです。

Power Automateにアクセスして,「インスタント クラウド フロー」を作成,トリガーに「Teams Webhook 要求を受信したとき」を選びます。

トリガーの下にアクションを追加して,「チャットまたはチャネルでメッセージを投稿する」を選択。投稿先のチームとチャンネルを設定して,メッセージ欄には fx(式)タブ から triggerBody()?['message'] と入力します。ここは⚡(動的コンテンツ)タブではなくfxタブです。最初そこで詰まりました。

保存したら,トリガーを展開してHTTP URLをコピーします。これがWebhook URLになります。

もう一点ハマったのが認証の話で,トリガーの認証設定が「すべてのユーザー」になっていないと拡張からの投稿がエラーになります。OAuth認証が求められる場合はトリガーの設定で認証を外してください。

あと,Power Automateには「カードを投稿する」(Adaptive Card)というアクションもあるんですが,外部からのJSONに対する制約が厳しくて何度もエラーが出たので,「メッセージを投稿する」のほうを使うのが無難らしいです。

私はブラウザ版Teamsを使っていますが,デスクトップ版でも「…」メニューに「ワークフロー」が表示されなかったので,そういうときはPower Automateに直接アクセスして設定したほうが早いとClaudeに言われてこういうめんどくさいことをやりました。

3. Gemini APIキーの取得(無料,カード不要)

Google AI StudioにGoogleアカウントでログインして,「Create API Key」をクリックするだけです。無料枠が1日1,500リクエストまであるらしく,論文共有に使う分には全く問題ないと思います。

4. 拡張の設定

拡張のアイコン → ⚙ (歯車アイコン)設定を開いて,Webhook URLとGemini APIキーを貼り付けて,「Gemini APIで解説を自動生成」をONにして保存します。解説不要で素早く投稿したい場合はこれをOFFにすれば即投稿されます。

研究室での使い方

これはTeamsの使い方に依存すると思います。みんなが見れるチャンネルに情報共有的な意味合いで論文貼るみたいなことだと,全体のチャンネルに投稿することになるでしょう。私は,自分含めて学生の名前のついた個別のチャンネルを作って,そこに自分の研究の進捗だとかメモだとかそういうのを書き込んでいくという方針でやろうと思っています。私のチャンネルがあるのは,自分が率先して「思考をみんなが見れる場所に投稿していく」というモデルになれればという気持ちです。そういうわけで,私の個人チャンネルに投稿できるような設定にしました。もちろん,院生にも同じ拡張をインストールしてもらって各自のWebhook URLを設定すれば,院生が自分用メモとして自分のチャンネルに投稿できるようになります。文献共有の専用チャンネル作って各自がそのチャンネルのWebhook URLを共有して設定すれば,輪読候補の論文ストックとして扱うみたいなこともできるのかもしれません。「面白い論文見つけたけどそれをとりえあずどこかにストックしておくのが面倒」という摩擦を下げるのが目的なので,そこは運用してみないとわかりません。ちなみに,論文自体はZoteroとNotionDBを連携して学生にはそちらにストックしていくように指導にしようと思っているので,そういう意味では今後やってみて運用方針を変える可能性は大いにありそうです。

おわりに

矢野さんのアイデアはDiscord + Claude APIでしたが,Teamsに合わせてPower Automate経由にして,コスト面からGemini APIに差し替えました。アイデアをシェアしてくださった矢野さんに感謝します。

Chrome拡張を更新(リロード)した後は論文ページもF5で再読み込みしないとcontent scriptが再注入されないので注意です。これも地味に引っかかりました。

コードはGitHubに公開しています。改善提案やPull Requestも歓迎です。

GitHub: https://github.com/tam07pb915/paper-to-chat

なにをゆう たむらゆう

おしまい。

AIで言語教育は終わるのか?(献本)

同僚の水本先生より,『AIで言語教育は終わるのか?:深まる外国語の教え方と学び方』を献本いただきました。ありがとうございます。まず,このご紹介が遅くなってしまったことをお詫びします。

水本先生の「AIとライティング教育」の章は,ライティングの授業で生成AIの利用を促している自分にとって「必読」の内容でした。同じ授業(ライティングの授業ではなく,学部1年生向けの文法と語彙の力を伸ばす目的の授業)を水本先生と分担している関係で知っていた話もありましたが,それ以上に新たな気づきが多く,自分の授業実践を振り返るきっかけになりました。特に「学生に使わせる仕掛けや練習の不足」が,自分が授業で感じていた“いまひとつ感”の原因だったのではないかと実感しました。ガイダンスや説明だけでなく,実際にAIを使う練習を組み込むことの重要性を改めて認識しました。

また,長谷部陽一郎先生の第2章(AIと言語研究)第4節の「記号接地問題」に関する議論も大変興味深く拝読しました。生成AIの登場以降,(おそらくですが個人的な印象では)今井むつみ先生の影響で身体化の観点から語られることが多い「記号接地問題」というテーマですが,本書ではラネカーの認知文法を参照しながら,身体化に依拠しない定義を提示し,身体的な「記号接地」ができないAIも記号接地しているのではないかという視点が展開されています。この多角的な切り口は,自分にとって新鮮な学びとなりました。

言語教育に携わる人は,ぜひ一度手に取ってみる価値があると思います。興味のある章だけでも読んでみてほしい一冊です。

なにをゆう たむらゆう。

おしまい。

Wordで作った問題を1問ずつに分割してPDF化する

はじめに

ここ数年,絶対にやらなくちゃいけないわけではないけれども,できたらいいなと思っていて,でもめんどくさくて挫折していたのがタイトルの作業です(実際にはもとはPDFで,それをWordファイルにして扱いやすいフォーマットにしてから…という話なんですが)。PDFで持っている文法の練習問題があって,それをLMSで教材にすると,PDFを1枚貼り付けて,それを別画面で開いてそれを見ながら回答の入力はLMS上で行う,という運用になるわけです。ただ,学生側からすると問題入力する画面で問題も見せてくれよとなりますよね。それをどうにかしないとなぁとずっと思っていたのですが,めんどくさくて放置していて,生成AI(ChatGPT 4o or Claude 3.5)に助けを求めたりもしたのですがうまくいかず,今日「はっ!もしかして!」と今までと違うアプローチを試みたらうまくいったので,その嬉しさのあまりこの記事を書いています。人によっては,そんなこと最初から思いつけよと思うかもしれません。

なぜめんどくさいのか

普通の空欄補充問題とかなら,たぶん生成AIに渡して問題ごとにWordで出力してとか,あるいは選択肢もカラムで整理してcsv形式にしてLMSにそのまま流せるようにとか多分できるんですよ。でも,その文法問題は,空欄補充以外にも下線部のエラー特定問題も含まれています。下記画像のような感じです。

こういうのは,下線の下のアルファベット記号のレイアウトが肝なのでテキスト処理的にはうまく扱えないんですよね。それで,生成AIに頼んでもうまくいかないと。

私がどういうことをやりたいと生成AIに伝えていたかというと,PDFを見せて,これを問題ごとに分割して別のファイルにしたいんだということでした。どうしても下線部問題のレイアウトが崩れてしまったんですよね。それから,画像ファイルとしてLMSに上げることも考えました。画面のスクショを撮るなら正直1問数秒で終わりますから,数十問あってもそこまで時間はかかりませんし,ファイル名を連番に変えるというような作業は機械的にできるので。しかしながら,画像として問題をLMSにあげると,画質が悪くて問題が見づらいという問題にぶちあたってしまいました。これに悩んでいたときはo1のような推論モデルもなく,推論モデルにPDFファイルやWordファイルを見せることもできませんでした。もしかすると,その方法なら(私が思いついたのとは違う)良い解決策を提案できたかもしれません。

解決の糸口

ふと,Claude 3.7 sonnetにWordあるいはPDFでどっちならどうにかできるかと今日相談してみました。すると,WordでVBAを使えばできると言ってきました。なるほどその手があったか!と思いました。私は,Adobe AcrobatでPDFからWordに変換し(レイアウト崩れはゼロに近いクオリティ),VBAは使えないので,提案されたコードをただ貼り付けて,スクリプトを実行しました。すると,数十個のWordファイルが生成されました!あとは,Adobe Acrobatでこれを一括で読み込んでPDFにすればいいだけです(WordのままLMSに読み込ませるとレイアウト崩れがあるため)。ところが,出力されたファイルはやっぱり下線部問題でレイアウト崩れがありました。問題部分を抽出して,コピペするというやり方でしたが,新しいファイルを開いてコピペする際に,元のレイアウトを保持してコピペするというのがなかなか難しいようでした。

そのとき,私はひらめいたのです。

これもしかして,問題を分割することとファイルを分けることを一緒にやろうとしていたから難儀な作業になっていただけで,空行をページ区切りに置換して1ページ1問のWordファイルにすれば,あとはそのままPDF化してそのPDFを1ページごとに別個のPDFファイルに出力するだけいいのでは?

と!いやむしろなんで最初からそういう発想になってなかったのよメチャクチャ簡単やん!となりました。そこで,ClaudeにWordで空行をページ区切りに変換する方法を尋ねると…

  • 検索と置換機能(Ctrl+H)を使用
  • 検索欄で「^p^p」(2つの段落記号)を入力
  • 置換欄で「^m」(手動改ページ記号)を入力
  • 「すべて置換」をクリック

というサジェストがありました。あとはこの通りに置換して,1問が1ページになっていることを確認したらPDF化して,Adobe Acrobatの”organize pages”で1pageずつにsplitすれば,1問1PDFファイルの完成です。あとはLMSの仕様に従ってzipファイルにまとめてアップロードすれば,各問題ページにPDFの問題が配置された設問ができるというわけです。

余談

実は途中で,HTMLで下線部問題できないのか?と思って生成AIに聞いてみたこともありましたが,結果としてはやはりABCDをうまく表示させることができなくて失敗に終わりました。

おわりに

正直,この作業自体は絶対にやらないといけないわけではないし,むしろ何年もやらないままできたのできっとやらなくてもよかったのかもしれません。ただ,私としてはどうしてもいつもなんか引っかかるものがあって,なんとかしたいと思っていたので,今回解決できてよかったです。まだまだもっとこうしたいというのがあるので,そこにもしっかり手が回りますように…。

なにをゆう たむらゆう。

おしまい。