開発者向けの便利ツール集、DevToysを試してみる

窓の杜の記事を見て気になり、DevToysのツール群をひととおり試してみた。

また、Windows以外での代替アプリも調べたのでメモ。

devtoys.app

2022/2/7追記: v1.0.2.0で日本語化されたが、この記事の記述時点では未翻訳のため、ツール名などは英語で記載している。

環境

DevToys v1.0.1.0。Microsoft Store経由でインストールした。

DevToysとは

公式でうたっている「A Swiss Army knife for developers.」の通り、開発者向けの便利ツールのセット。

いくつかのWebサービスで用意されているような変換処理などをまとめてくれている。

また、v1.0.1.0の時点ではオフラインで動作するため、Webサービスの利用がためらわれるような文字列の変換などにも使えそう。

各ツールへの導線

左フレームにいくつかのカテゴリが表示されており、カテゴリ配下からツールを選択すると、右フレームでそのツールが利用できる。

All toolsを選択し、カテゴリを展開した画面

カテゴリを展開する以外にも、All toolsでは各ツールへのショートカットが表示される。左上の検索ボックスからも検索可能。

また、「Smart Detection」と呼ばれる機能で、クリップボードの文字列から推奨されるツールがサジェストされる。設定からオフにすることも可能。

JSON文字列をコピーした場合のSmart Detection

利用頻度の高いツールの場合、All toolsや各カテゴリ名を選択した際に右フレームに表示されるアイコンから、Windowsのスタートメニューに直接ピン留めできる。

アイコンにホバーするとピン留めアイコンが表示される

各ツールの概要

各カテゴリ展開時のスクリーンショットは公式ページのScreenshots参照。

Converters

Json <> Yaml

JSONYAMLの相互変換。インデントはスペース2つと4つから選択可能。

コメントが含まれるYAMLJSONに変換すると、コメントは削除される。JSON5のようなコメント可能な形式にはできない模様。

Number Base

数値の形式変換。出力形式はHexadecimal、Decimal、Octal、Binary。

「Format number」をONにすると、出力が Decimal の場合は3桁ごとにカンマで、それ以外は4桁ごとに半角スペースで区切られる。

「Input type」で入力形式を変更可能。

「Input type」で選択した形式も出力形式に残るので、「Input type」をDecimalにしておくと、「Format number」がONならカンマ区切りに、OFFならカンマを除いて数値のみにできるのが地味に便利。

Encoders / Decoders

HTML

HTMLのエンコード/デコード。

エンコードはHTMLで利用できない文字を文字実体参照に変換、デコードは文字参照を表示文字列に変換。

デコード時は数値文字参照もしっかり変換してくれるので、 &lt;&#60;&#x003c; と入れれば <<< になる。

URL

URLのエンコード/デコード。文字コードUTF-8で固定の模様。

Base 64

Base64エンコード/デコード。文字コードUTF-8とASCIIを選択可能。

エンコードは通常のBase64が出力され、URLセーフではない。また、デコードもBase64URLには対応していない模様。

JWT Decoder

JWTのデコーダー。これはデコードのみ。

Formatters

JSON

JSONのフォーマット。

「Indentation」で、インデントを半角スペース2つ、半角スペース4つ、タブ、またMinifiedによる最小化も可能。

入力にはコメントが含まれても問題ないが、「Json <> Yaml」と同様、コメントは出力されない。

Generators

Hash

文字列をハッシュ化。形式はMD5SHA1、SHA256、SHA512。出力するアルファベットの大文字小文字を指定可能。

「Load a file」でファイル読み込みが行えるが、テキスト形式ファイルを読み込み、そのファイルのテキストを入力としてハッシュ変換する機能だった。

バイナリファイルを読み込ませるとエラーが発生したため、バイナリファイルのハッシュ値計算はできない模様。

UUID

UUIDの生成。ハイフンの有無、出力するアルファベットの大文字小文字を指定可能。

バージョンはデフォルトが4(GUID)だが、バージョン1も出力可能。また、1回あたりで生成するUUIDの件数も指定可能。

Lorem Ipsum

ダミーテキストの生成。

「Type」でWords(単語)、Sentences(文)、Paragraphs(段落)を指定可能。「Length」の数だけ出力される。

生成される単語や文章はいくつかの候補からランダムで決定される模様。以下はLengthが1の場合の例。

Type 生成される文字
Words Vero
Sentences Sit justo diam dolores elitr autem sed sadipscing magna et et elitr justo.
Paragraphs Clita ut volutpat feugiat. Magna duo nostrud tempor nostrud labore at nulla vel. Zzril sit dolor sanctus duis.

たまたまParagraphsが短くなったが、中には1,000文字を超えるものもあった。

Text

Inspector & Case Converter

文字の大小や区切り変換と、監査機能。

「Convert」で、文字の大文字小文字や、キャメルケース/スネークケース/コンスタントケース/ケバブケースなどの変換が行える。大文字でハイフン区切りの、COBOL-CASEなんてのもあった。

また、右側に文字列の監査結果として、「Selection」にはカーソル位置の行数、「Statistics」には文字、単語、行、文、段落、バイトのそれぞれの数、「Word distribution」と「Character distribution」には単語と文字の出現回数が表示される。

Convert機能を試してみたところ、半角スペースやハイフン、アンダースコア区切りの文字列は適切に解釈されるが、キャメルケースやパスカルケースの文字列は、大文字が区切り文字として認識されず1単語と判断されるようで、変換がうまくいかなかった。

Regex Tester

正規表現テスター。正規表現オプションはOptionsから設定可能。

ECMA Script互換にもOptionsから設定できる。C#製のツールのため、デフォルトは.NETの正規表現エンジンが使われるのかな?

Text Diff

2つのテキストの差分表示。差分の表示形式はデフォルトでは2ペイン表示だが、インライン表示にもできる。

Markdown Preview

シンプルなMarkdownプレビュー。表示テーマをLightとDarkから選択可能。

Graphic

Color Blindness Simulator

色覚異常のある方に、画像がどう見えるかのシミュレーター。PNG, JPEG, BMPを読み込むか、クリップボードからペーストして使用する。

左上がオリジナル画像、右上の「Protanopia simulation」がP型色覚(赤の欠損)、左下の「Tritanopia simulation」がT型色覚(青の欠損)、右下の「Deuteranopia simulation」がD型色覚(緑の欠損)のシミュレーション画像となる。

Viewアイコンでそれぞれの画像を画像ビューワーで表示したり、保存アイコンで画像を保存できる。

PNG / JPEG Compressor

PNGおよびJPEG画像の圧縮。

「各ツールへの導線」に張り付けた、All toolsのPNG画像(Xbox Game Barでキャプチャ)を圧縮してみると、元画像166KBから100KB程度、40%ほど圧縮された。

その他

Settings

左下のSettingsから各種設定が可能。

Smart Detectionのオフはこちらから。自分はちょっと試してオフにしてしまった。

他、テーマやフォントの変更、行番号の非表示、半角スペースの表示などが行える。

半角スペースの表示を行うようにしたが、HTMLには反映されなかった。

GitHubへのリンクなども記載されている。また、ログファイルの表示もこちらから行える。

ファイル読み込み時の文字コード

いくつかのツールではファイルから文字列を読み込む機能があるが、文字コードUTF-8限定の模様。BOMの有無は関係なし。

日本語を含んだShift-JISのファイルはエラーで開けず、UTF-16のファイルは読み込めたがファイルの内容と異なる文字として読み込まれた。

まあ、今日日の開発者ならテキストファイルはUTF-8で保存するだろうし、注意がいるのはCSVファイルを読み込むときくらいかな。

マルチプラットフォーム化とWindows以外での代替アプリについて

ぱっと見はElectronっぽいので、なんでWindows限定なんだろうと思ったら、公式に「DevToys is designed to embrace Windows ecosystem.」とあり、結構がっつりWindowsネイティブなアプリの模様。

issue#203およびissue#156で、Windowsでしか動かない理由の記載がある。

ユニバーサル Windows プラットフォーム (UWP) アプリのため、Windows以外では動かないとのこと。MacLinuxには同じようなアプリがあるが、Windowsにはないというのが開発の動機なので、マルチプラットフォーム対応は難しそう。詳細はこちらのコメントを参照。

それぞれのissueのコメントで、MacLinux向けの代替ツールとしては、DevUtils, Boop, DevBox, Text Piecesの名前が挙がっている。

DevUtilsとDevBoxは有料、BoopとText Piecesは無料かな?

2022/2/1 追記

Mac版DevToysをうたったクローンアプリ、DevToysMacが作成中の模様。UIを似せたフルスクラッチっぽい。

github.com

2022/7/21 追記

DevToysが1.0.9.0へアップデートしたので、DevToysMacは追従できているのかなと思ってみてみたが、2022/2/26の0.0.10が最終リリースだった。

main以外のブランチがなく、issueやPRも放置されているっぽい。166件ほどフォークされているので、どこかで開発継続しているのかな?

また、DevToys#156のコメントにて、オンラインで使える代替ツールとして、Small Dev toolsが紹介されていた。

smalldev.tools

振り返り

これまでいくつかのWebサービスを利用していたような機能がまとめられるので非常に便利。まさにSwiss Army knife(十徳ナイフ)。

個人的にはGraphicのColor Blindness SimulatorやPNG / JPEG Compressorが、専用の画像編集ツールなどを使わずに試せるのがありがたかった。

また、よく使うツールはスタートにピン留めできるのもありがたい。このあたりはWindowsネイティブアプリだからできることなのかも。