Ryuz's tech blog

FPGAなどの技術ブログ

GitHub Copilot を使って 古いブログを引っ越ししてみた話

はじめに

LUT-Network の古い記事が結構ココログの方にあったのですが、急に消えてびっくりしてる人が居たらいけないので(いないとは思いますが)、こちらでも移動先 をアナウンスしておきます。移動しただけで消えてはおりませんのでご心配なく。

LUT-Network や BinaryBrain の黎明期の 2018~2019年 頃の記事がここにあったのですが、当時は http しか使えず、下手に Facebook とかに張ろうとしても弾かれたりとかしていた記憶があります。

現在は https対応しているようですが、2020年ごろから、こちらの hatenaブログに移行したこともあり気づきもせずに http のままにしてしまっておりました。

悪くはなかったのですが、古き良きブログという感じでしたので、当時としては Qiita / Zenn / Hatenaブログなどと比べてしまうと、記事整理などをしようというモチベが起こりにくく、ほったらかしになっておりました。

Niftyさんに関しては、古き Nifty-Serve の時代から使い続けており、当時のメアドも引き続き健在だったりもするのですが、最近、さくらインターネットさんの方で、独自ドメインも取って WordPress で Webページも作り直していますので、心をいれかえて記事を引っ越しして、タグ付けとかして再整理を試みております。

これまで筆者本人が、Google検索なしには自分の過去記事が見つけられない というマヌケな状態だったのですが、今回はカテゴリをLUT-Networkとして検索するなど、である程度さかのぼれるようになってきました。

なお、ゆっくり移行しようと思ったのですが、同じ記事が複数個所にあると Google Sercah Console などがいろいろエラーを出してくるので、今回、潔く引っ越しております。 (ココログの方でまとめて下書きに戻す方法がわからず、記事削除しちゃったというのはここだけの話)。

で、その引っ越し作業で GitHub Copilot が大活躍でした。

AI エージェントに手伝ってもらって引っ越し

あまりブログの引っ越しというのはやったことはなかったのですが、AI さんに聞くと Movable Type形式で移行できるけど、画像やファイルなどは手動で移行しなければならないとの事。

まあ当然100を超えるブログの中を一個づつ手作業で画像移動なんてやってられるわけもないので、自動化しようという話になります。

幸い Movable Type形式というのはテキストファイルのようですので、従来であれば、Python あたりで、エクスポートしたファイルをパースして、URLリストを作って、画像やファイルを一括ダウンロードして、記事内のURLを張りなおすわけですが、今回はその作業を GitHub Copilot の Agent さんに丸投げしてみました。

で、2つの Python ファイルを作ってもらいました。

ファイルダウンロードツール

簡単な指示書をテキストで作って、指示したのですが、大まかな指示内容としては、

  • Movable Type形式を読み込む
  • photos/ で始まる元画像のURLを抽出してディレクトリ構造を保ってDL
  • images/ で始まる表示用リサイズ画像のURLを抽出してディレクトリ構造を保ってDL
  • files/ で始まるダウンロードファイルのURLを抽出してディレクトリ構造を保ってDL

といったもので、わりとサクッと短い python を出力してくれて、ファイルダウンロードは完了しました。

ダウンロードしたファイルを今度は ftp で、サクラのサーバーに転送して準備完了。

インポート用Movable Type形式 の生成

同じく下記のような指示で Agent に Python を作ってもらいました。

  • Movable Type形式を読み込む
  • 旧URLの画像やファイル参照を新URLに書き換える
  • 旧URLで記事間リンクしている部分はリンクを解除して、リンク内容をレポートファイルに書き出し
  • その他、それでも旧 URL が残る箇所があれば警告を出す

といったもので、こちらも初回、なんか photos//photos みたいなへんな URL 吐いたミスはあったもののリトライで完成。

WordPress でインポート

WordPress のバックアップを取ったのちに、インポートするとわりとあっさり記事が移行できました。

例えば、私が初めて MLP 方式ではなく 微分可能LUTモデルで直接的なバックプロパゲーションに成功したときの記念記事なんかも、埋め込み付きでリンクできるようになりました。

rtc-lab.com

後は、タグ付けなどを整理しながらパーマリンク名弄ったりしつつ、先に出力したレポートを見ながら重要な記事中心に手作業で、自分好みに再整理中です。

WordPress だと、クイック編集とかで、記事の一覧を見ながら属性だけを編集していけるので、記事整理は結構捗りました。

これで、過去記事を自力で探せるようになったわけです(笑)。

おわりに

今回は一回きりの使い捨てツールだったので、自分のブログのURLや固有のファイルリンクなど、ソースコード中に埋まっている汎用性のないツールを生成してもらったのですが、こういう使い捨てコードにはAIは特に向いている気はします(何だかんだで品質を気にするコードは中をちゃんと読まないといけないので)。

自分で書いた場合とどちらが速いのかと言われれば、まあまだ微妙だったり、人間がお馬鹿になりそうとかいろいろな話もあるわけですが、良くも悪くも使わないという選択肢はなくなりそうなので、うまくAIと付き合っていければとは思う次第です。

ちなみに Rust や Python を使うときと比べると RTL開発にはまだ人間の利が強そうには感じてますが、いつまで人間が勝てるやら(苦笑)。