新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

PowerToysのAdvanced Pasteが便利!これでMS 365とMarkdownが繋がるのでは?

概要

今回のMicrosoft Buildでは、地味ながら開発環境が便利になる話がけっこう出ていました。

中でもPowerToysのAdvanced Pasteが、MS 365との組み合わせで「使える!」と思いました。

Markdownのテキストファイルと、Word等のMS 365のファイルが混在している環境下で、それらの行き来(相互変換)ができるのでは?という使い方です。使えるかどうかを試してみたので、紹介します。

ちなみにこの記事は、【オンライン】Build 後! C# Tokyo イベント - connpassで発表したこちらの資料の内容を、ブログ向けに文章で詳しく説明し直したものです。

最初に結論まとめ

PowerToysのAdvanced Pasteで、Word・Excel・Loop等からコピーして、表や箇条書きなどをMarkdownのテキストにすることができました。(逆方向は元々、MarkdownをLoopに貼り付ければOKです)

まだ難点もありますが、MS365 <-> Markdownテキストファイルの行き来は可能と考えて運用しても良さそうです。

PowerToysのAdvanced Pasteとは

クリップボードの中身を、貼り付けるときの動作を拡張します。貼り付け前に、内容をローカルAIに変換させるもののようです。

Win+Shift+Vで、次の画像のようなメニューが出ます。

image.png

プレーンテキスト・MarkdownJSONに変換して貼り付ける選択肢があります。

このメニューを出さずに、直接どれかの貼り付けをするショートカットキーを割り当てることも可能です。

ローカルでの変換だけではなく、OpenAIのAPIを呼び出して変換をやらせることもできます。

この記事の話とは別ですが、「プレーンテキストとして貼り付け」にショートカットキーを割り当てておくと、全アプリで有効なプレーンテキスト貼り付けショートカットになるので、色々と便利です。(Teamsへ貼り付けるときなど特に重宝してます)

だいたいこんな感じの機能です。地味ですが、有りそうで意外と無かった機能ではないでしょうか。

解決できそうなMS 365の困りごと

では、この機能でMS 365のどんな困りごとが解決できるかです。

MarkdownとMS 365系ファイルは統一はしづらく、目的によって使い分けが発生しがちではないでしょうか。例えば次のような感じです。

  • 画像を貼ったり、プログラム慣れしていないメンバーと編集したいドキュメント
    • →MS 365(Office)
  • Gitでバージョン管理したり、PlanUMLやソースコードを```で書きたいドキュメント

しかし、MS 365ファイルは、Markdownファイルとの行き来ができません。WordやExcelはもちろん、この特徴はLoopを使うと特にはっきりと分かります。

MS Loopはさらに困る

MS Loopは歴史が浅いので知らない人も多いかもしれません。この記事で重要な視点に絞ると・・・MarkdownもOffice書式も使えて、書いたページを階層管理出来る便利ソフトです。

特にMarkdownで書けるのは他のWord等にはない特徴で、Markdownを貼っても、他のOfficeソフトからそのまま貼っても、Office書式で見やすく表示してくれます。

ただ、Loopからコピーして他へ貼り付けようとすると、Office書式になります。Markdownに戻してくれたりはしません。

つまり次の図のように、入り口は広いですが、出口はOffice書式となるため、Officeにロックインされて他の形式にできなくなってしまいます。

image.png

Advanced Pasteの出番では?

LoopからコピーしたものをMarkdownでペースト出来るなら、Loop(Office書式)にロックインされないということになります。

つまり、Advanced Pasteが入ることで、次のように行き来が可能になるということです。

image.png

上手く行けば、Markdownを捨てるような覚悟を決めずとも、気軽に使い分けていけます。さて、期待通りに動くでしょうか?

Markdownで貼り付け、の実験

次の手順でいくつか試してみました。

  1. Markdownテキストを用意
  2. Loopへ貼り付け(Office書式に変化)
  3. Loopからコピーして、Advanced PasteでMarkdownで貼り付け

書式を見せる都合で画像を貼りますが、全部ダークテーマの画像です。ダークテーマを使っていない人は、すみませんが脳内で色を反転させて読んでください。

実験結果は、2024/6/5時点のものです。バージョンアップで改善・改悪があるかもしれません。

Markdownの表

まずは割とよく使う、次のようなMarkdownの表で実験です。

image.png

そのままLoopへ貼り付けるとこうなります。Office的な表ですね。

image.png

これをコピーしてテキストファイルに貼ると、表ではなくなります。

image.png

LoopでコピーしてWordへ貼れば、表のままです。

image.png

つまりこれはOffice書式でコピーされています。

さて、Advanced Pasteで「Markdownで貼り付け」をするとどうなるでしょうか。

image.png

Markdownの表になっています!

・・・まあ不要なコメントが多いのですが、Markdownの表として解釈できる条件は揃っています。

不要なコメントは、特定のルールで置換すれば取り除ける程度です。正しく認識はしているようなので、出力は今後の改善が期待出来ると思います。

Markdownの箇条書き

続けて実験していきましょう。これもよく使う、箇条書きです。

image.png Advanced Pasteで「Markdownで貼り付け」

これをLoopに貼るとOffice書式の箇条書きになります。

image.png

それをコピーして「Markdownで貼り付け」すると

image.png

これもちゃんとMarkdownになっています。余計なコメントなどについては表と同じ結果です。(以降、余計なコメントについては同じなので触れません)

Markdownの見出しや```など

見出しなどはどうでしょうか。

image.png

これをLoopに貼ると、こういうOffice書式になります。

image.png

それをコピーして「Markdownで貼り付け」すると

image.png

ちゃんとMarkdownです。```csharp は消えてしまったようですが・・・`も残っていますし、近くはあります。

WordからMarkdownへの変換

Wordファイルからの変換はどうでしょうか。同じような見出し・表などをWordで書いてみます。

image.png

それをコピーして「Markdownで貼り付け」すると

image.png

これもちゃんとMarkdownです。表も、太字も、見出しも認識しています。箇条書きはちょっと、いまいちかも・・・?

WordからLoop経由でMarkdownへの変換

Wordからコピー → Loopにペースト・コピー → Advanced Pasteという順序でやってみると、こうなります。

image.png

厄介なコメントは相変わらずですが、箇条書きはこちらの方がよさそう。同じOfficeでも、動作に違いが出るようです。

ExcelからMarkdownへの変換

Excelからはどうでしょうか。こんな表を作りました。

image.png

それをコピーして「Markdownで貼り付け」すると

image.png

だいぶ綺麗に表になりました。Excelは元々表形式なので、分かりやすかったのかもしれません。

image.png ちゃんとMarkdown

画像からMarkdownへの変換

ちょっと変わった線として、Loopに貼った次のような画像をコピーしてみました。

image.png

それをコピーして「Markdownで貼り付け」すると

image.png

Markdownへの画像埋め込みになりました。

GitHub Markdownを初め、画像埋め込みのプレビューに対応しているMarkdownエディタは少なそうですが・・・変に存在しない画像ファイルのパスへリンクを貼られるより、こちらの方が汎用性は有りそうです。意外に有能なポイントかも?

まとめ

Advanced PasteのMarkdownで貼り付けを使えば、MS Loopを介してのMarkdown <-> MS 365の行き来はそれなりに可能そうです。

変換精度は今ひとつなところもありましたが、アップデートで改善されていくでしょうし、今のままでちょっと置換などすれば十分使えます。Office書式へのロックインを恐れずに、OfficeとMarkdownの共存を、実運用に投入して行っても良いのではと思えました。

Dev Home等も含めて、今回のBuildではちょっとした便利な話が色々出てきたように思います。そう言うものもうまく取り込んで、作業効率を上げていきたいですね。