iPhone 向けのコードスクリーンショットアプリを探してきたなら、まとめ記事を期待していたはずです。10 個のアプリ、比較表、そして 1 位。

書けるものがありません。探して見つかるのは Safari で開くウェブツールと、シンタックスに色はつけるけれど共有できる画像は作らないコードエディタです。デスクトップにはあり余るほどあるこのカテゴリが、iPhone のネイティブアプリとしてはほとんど存在しないのです。

これだけ多くの開発者がやっていることにしては奇妙な空白で、最初に開いたブラウザのタブで妥協する前に、その理由を知っておく価値があります。

読み進める前に利害を明かしておくと、私たちは数少ないネイティブの選択肢のひとつである Codeshot を作っていて、無料ではありません。最後の節には「買うべきでない人」も書いています。何を推しているのか分かるように、iPhone で動いているところを載せます。

iPhone 上の Codeshot:グラデーション背景の上に描画されたコードと、その下のテーマ・背景の操作

実際に見つかるもの

ウェブツール。 Carbon.now.sh、ray.so、そして似たサイトの長い裾野。ここでの本当の主役はこれです。ページが読み込まれるという意味では、電話でも動きます。

コードエディタ。 TextasticKoder は、コードに色をつける本当によくできたネイティブ iOS アプリです。どちらも投稿用に整えた画像を作ろうとはしていません。それはエディタの仕事ではないからです。

その中間がほとんどない。 この空白こそが、このページの主題です。

App Store の名誉のために言えば、そこは広大で、私たちにも検索にも引っかからない何かが存在する可能性は十分あります。とはいえ、探さなければならないこと自体が発見なのです。デスクトップでは、このカテゴリは笑ってしまうほど混み合っています。

なぜ空白があるのか

誰も欲しがらないからではありません。それを作るのに何がかかるか、という話です。

コードスクリーンショットのツールは、互いに噛み合わなければならない 3 つの部品でできています。シンタックスハイライタ。役に立つだけの言語数をカバーするということは、文法一式を同梱して保守するということであって、正規表現を 1 本書くことではありません。レンダラ。適切なフォント、字間、ウィンドウ装飾でテキストを組み、毎回まったく同じピクセルを出すもの。書き出しの経路。きれいに拡大縮小し、画像の行き先へ渡すもの。

ウェブでは 3 つともほぼ無料で手に入ります。ブラウザにはすでにレイアウトエンジンがあり、highlight.js はスクリプトタグ 1 行で、書き出しは canvas です。だから Carbon が生まれたし、その後に続いた十数個のツールもウェブページなのです。次の 1 個を作る限界費用がとても低い。

ネイティブはその逆です。ハイライタもテキストレイアウトもレンダリングも自前で持ち込みます。しかもウェブツールと違い、修正をブランチへの push で配ることはできません。

だから誘因はずっとブラウザの側を向いてきました。それでもネイティブに向かったアプリは、ネイティブが報われる場所へ向かいました。つまり、どのみち本格的なテキスト処理が必要なエディタです。

ウェブツールが電話に出会うと何が壊れるか

劇的なことは起きません。摩擦が、3 か所で、毎回です。

コードを入れる。 エディタはウェブのテキスト欄です。選択ハンドルもキャレットも自動修正も、iOS の他のウェブ入力欄と同じ振る舞いをします。コードエディタの振る舞いではありません。

何かを調整する。 Carbon の前提は、何でも調整できることです。テーマ、フォント、パディング、背景、倍率。デスクトップならざっと見渡せる一列の menus。電話では探し出す小さなターゲットになり、開いたそれが調整中のプレビューを覆います。ray.so がこれをよく耐えるのは、まさに提供するものが少ないからです。

画像を取り出す。 書き出しはブラウザのダウンロードです。iOS では、ファイルがどこかに落ちてから探しに行くことを意味します。投稿しようとしていたアプリへそのまま移る、とはいきません。

月に 1 回なら、どれも問題になりません。毎週なら、毎回同じ 3 つとの戦いです。

ネイティブが実際にもたらすもの

3 つあり、いずれも中間ではなく両端の話です。

クリップボードがワンタップ。 ユニバーサルクリップボードのおかげで、Mac でコピーしたコードはすでに端末にあります。ネイティブアプリはそれを直接受け取れます。

書き出しは共有シートへ。 ダウンロードではなく、メッセージ、Slack、投稿の下書き、ファイル、写真ライブラリへ直行します。

設定が残る。 テーマも背景も比率も、前回選んだままです。10 枚目が数分ではなく数秒で終わる理由の大半がこれです。

4 つ目は、人によって重大でもあり、まったくどうでもよくもあります。コードがウェブページに入らないことです。クライアントの仕事や未公開機能を貼るなら、自分は気にしなくても、上の立場の誰かには意味のある違いかもしれません。

では何を使うべきか

たまに — Safari の ray.so。無料で、小さな画面が問題にならない程度に選択肢が少なく、結果も十分。月に 2 回使う無料ツールを置き換える必要はありません。

主に机の前で — Mac で Carbon.now.sh を使い、電話でやろうとするのをやめる。無料で、オープンソースで、使われるはずだった場所では優秀です。

電話から、日常的に — ネイティブはこの場合のためにあります。Codeshot は Mac と iPhone のネイティブアプリです。ワンタップでクリップボードから貼り付け、30 種類のシンタックステーマ、コード自体から判定される 60 言語、1:1 から 9:16 までの比率プリセット、そして共有シートへの書き出し。

絶対に使わない — 標準のスクリーンショット。コードの幅ではなく端末の幅を記録しますし、押す前からすでに折り返されています。

私たちのを買うべきでない人

5.99 ドルで、Apple 製デバイス専用です。このページのウェブツールはどれも無料で、どこでも動きます。

月に 1 枚しかコード画像を作らないなら、正解は ray.so ですし、私たちもそちらを使ってほしいと思います。iPhone も Mac も使っていないなら、そもそも選ぶ話ではありません。作るのがいつも机の前なら、デスクトップの Carbon は無料でとても優秀です。

ネイティブアプリを選ぶ理由は狭く、具体的です。頻繁にやる、電話からやる、そして摩擦のコストがアプリの値段を上回り始めた。

それがあなたなら、iPhone でコードを画像にする方法が一通り案内しますし、iPhone で使う Carbon.now.sh はブラウザで何が壊れるかをより詳しく扱っています。