Mac版DevToysがなかったので3日で作って公開した。

# きっかけ

こちらの記事で紹介されていた[DevToys](https://devtoys.app)を使ってみたら非常に便利で、これは日常使いしたい！となりました。

https://qiita.com/danishi/items/2de6a4ab028d27a8f4ab

しかしなんということでしょう。DevToysはWindowsアプリでありmacでは使えないではないですか！iOS・macアプリ開発者の私としてはmacを捨てるわけにはいかないので、mac版のDevToysを開発しました。

# できたもの

というわけで3日ほどでmac版DevToysクローンを作成しました。
以下のReleaseからダウンロードできます。

https://github.com/ObuchiYuki/DevToysMac

![スクリーンショット 2022-02-02 18.49.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/191e02b5-abd4-df46-b455-b392f4881e85.png)

# 開発

可能な限り高速で開発をする必要があったため、他のOSSどううまく使うかが勝負です。

### アプリ全体

他の開発中のmacアプリからユーティリティ系コードは大部分を流用しました。
これでだいぶ開発が楽になります。

![スクリーンショット 2022-02-02 18.51.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/43ac8ec3-7bb1-957a-5a6f-6729247319d7.png)

### Json <> Yaml

OSSの[Yams](https://github.com/jpsim/Yams)を用いて実装しています。本家DevToysではなぜか Yaml -> Json, Json -> Yamlの切り替え式だったので両側入力にしてあります。

SwiftのDictionaryを用いている都合上キーの順番が維持されないのでこれは後でなんとかします。

![スクリーンショット 2022-02-02 18.51.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/6e4dccac-1016-dceb-7605-f3b08b226ba3.png)


### Number Base Converter

特に言うことなし。`String.init<T: BinaryInteger>(_ value: T, radix: Int, uppercase: Bool)`と`Int(_ value: String, radix: Int)`便利だねってくらいかな？

![スクリーンショット 2022-02-02 18.54.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/4d7b5427-5b6c-a7e8-4721-c16544ae235e.png)


### HTML Encoder / Decoder

OSSの[HTMLEntities](https://github.com/Kitura/swift-html-entities)を使わせてもらっています。

![スクリーンショット 2022-02-02 18.57.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/05194bf1-1de7-bea6-2e0b-acaa41fa11c4.png)


### URL・Base64・JWT Encoder / Decoder

これも特にないかな？`Foundation`の標準機能で実装可能です。

![スクリーンショット 2022-02-02 18.58.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/83dbec71-a29f-489d-7613-d852359f355f.png)
![スクリーンショット 2022-02-02 18.59.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/d4c4c679-7599-c118-eb5a-eee39605bb18.png)
![スクリーンショット 2022-02-02 19.00.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/1d1b1128-49a7-a03c-d4f5-6d9b8125161b.png)

### Json Formatter

あまり使われてないライブラリですが、ちょうど良かったので[SwiftJSONFormatter](https://github.com/luin/SwiftJSONFormatter)を使用しています。ただいくつかバグがあったのでForkして修正して使っています。

![スクリーンショット 2022-02-02 19.03.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/308e80f4-5cc4-5988-ef96-2d649c0ca467.png)

### Hash Generator

こっちは超有名ライブラリの [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift) を使っています。CryptoSwiftにはもっと色々なHashが実装されているのでそのうち増やしても良いかもしれません。

![スクリーンショット 2022-02-02 19.03.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/a80436b8-314b-d956-4168-027e35be6070.png)

### UUID・Lorem Ipsum Generator / Text Case Converter

特になし。`Foundation`の標準機能で実装しています。

![スクリーンショット 2022-02-02 19.05.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/6f0099e6-450a-3be1-c11d-70299cf29aa7.png)
![スクリーンショット 2022-02-02 19.05.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/cfa18a09-ca82-631d-685d-c227c312e94a.png)
![スクリーンショット 2022-02-02 19.06.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/01239add-e437-6614-f560-0bebf5c248c4.png)


### Image Optimizer

`optipng`と`jpegoptim`のバイナリを実行しています。バイナリ実行のためにApp Sandboxが使えなくなるのでSign周りが面倒でした...

![スクリーンショット 2022-02-02 19.07.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/070135b7-df85-40ce-9344-acd7b57bdd55.png)

### Text Diff・Markdown Preview・Color Blindness Simulator

実装コストの面と必要性の面から実装していません。
要望があれば実装すると思います。

### おまけ

本家にない機能を色々追加してみたりしています。

#### PDF Generator

画像を取り込んでPDF化できます。


![スクリーンショット 2022-02-02 19.11.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/23b5493e-2dff-d3d5-67f4-b5e065de0250.png)

#### Network Information

Local IP・接続情報・Speed Testが行えます。

![スクリーンショット 2022-02-02 19.12.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/67e0a0e0-bdd9-1d8e-676d-82f10f781793.png)



以上でございます。
ダウンロードしていただければ私が喜びます...!

https://github.com/ObuchiYuki/DevToysMac