macOS用エディタを引き継いで十年。CotEditor開発者を突き動かす“過激派”なMac哲学【フォーカス】

2025年4月14日

macOS用テキストエディタ「CotEditor」開発者

1024jp

趣味でmacOSアプリ開発者兼デザイナーとして活動している。「CotEditor」においては2014年からコア開発者を務める。本業はソフトウェアエンジニアではなく、工学系の企業研究員。オリジナルアプリに、SVGビューワ「Gapplin」や映像プレーヤー「Qli」など。技術コミュニティ「macOS native」も主催する。ピーナッツバターが好物で、来世は自らピーナッツバターになることを願っている。

X:@1024jp
GitHub:https://github.com/1024jp
CotEditor公式サイト

CotEditor」という、macOS向けのプレーンテキストエディタがあります。サードパーティ製のOSSながら、macOS純正ソフトかのようなシンプルで直感的なデザイン、軽快な動作性、多言語対応のシンタックスハイライトなどが特徴です。

null
▲50種類以上の言語の記述に対応しているのは、大きな特徴のひとつ

フリーソフトとしてβ版が2005年に、正式版が2009年に公開されたCotEditorですが、実は、初代作者のnakamuxuさんは2010年に開発終了を宣言しています。私生活の事情で、時間が取れなくなったためです。しかしこのソフトが姿を消すことはなく、有志によってソースコードが受け継がれた後、いちユーザーだった「1024jp」さんが開発を引き継ぎ、以降、10年以上メンテナンスや改修を続けています

2016年には、Objective-Cで書かれた10年分のソースコードをSwiftに移行するという大規模なリファクタリングを行った1024jpさん。他人が生み出したエディタ――それも、収益性の見込みづらいOSS――に対して、なぜそこまでの情熱を注ぐのでしょうか。

私は『macOS native 過激派』なんです」と語る1024jpさんに、開発を続けてきた理由と、「Macらしさ」にこだわる哲学について、話を聞きました。

我を殺し、Macと“同化”する

――本日はよろしくお願いいたします。まず、CotEditorとは、どのようなエディタを目指したソフトウェアなのでしょうか?

1024jp:CotEditorの最大のコンセプトは、「最もMacらしいテキストエディタ」であることです。常に、そうなるのを目指して開発してきました。

――「Macらしいテキストエディタ」ですか? 具体的にどういうことか、詳しく教えてください。

1024jp:あくまで私見ですが、「Macらしいソフトウェア」とは、「我を殺しているソフト」だと考えています。Apple公式・非公式を問わず、macOS全体の洗練されたデザインや操作感と、そのソフトウェア自身の振る舞いが一致するように徹しているツールです。私としては可能な限り、全てのmacOS向けソフトが、そのようにあってほしい。

具体的にいうと、UIデザインや挙動、アクセシビリティなど、あらゆる要素においてAppleのHuman Interface Guidelines(※1)をはじめとした様々な規範に忠実に従い、Appleの開発キットを正しく利用してつくられていること。つまり、開発者自身の個人的な好みやツールとしての独創性よりも、プラットフォームへの準拠が最優先に置かれているソフトです。その意味で、私は「我を殺す」という表現を用いています。

なのでCotEditorでは極力、「我を殺す」ことを徹底しています。

(※1)Human Interface Guidelines:Appleが、アプリケーション開発者に向けて、UIデザインの指針や推奨事項を取りまとめて提供しているソフトウェア開発文書。
(※2)AppKit:Appleが提供する、macOS開発用のGUIフレームワーク。

――「我を殺す」とは、かなり強い言葉ですね。そこまでして「Macらしさ」を追求する理由は何でしょうか?

1024jp:それが、「ユーザーがアプリケーションの存在を『意識』すらしない」という理想的な体験につながるからです。あたかもCotEditorがOSに溶け込み、その一部になるかのような状態を追求したい。

どういうことかというと、アプリケーションの見た目や挙動がOS全体の作法と完全に調和していれば、ユーザーは「特定のツール」を使っている感覚なしに、ごく自然な操作感を得られると思うのです。すると目的のタスクにのみ集中でき、高いパフォーマンスを発揮しやすくなる。

CotEditorの場合、テキスト編集やコーディングにのみフォーカスすることができるようになる、との具合に。

一方、もしもFinderやSafariといった標準ツールに対して、特定のアプリだけUIや文言が大幅に異なっていたら、ユーザーは使い方に迷ったり、操作に慣れる手間が必要になったりして、ストレスを感じると思うんです。

私はそうしたノイズや違和感を極力なくし、すべてのMacユーザーが「Macのアプリならば、こう動くだろう」と想定する通りに、CotEditorが振る舞い続けるようにしたいのです。

▲シンタックスハイライトの色は、「カラー」パネルにより手軽に変更可

――「我を殺す」ことでOSとの一体感を追求する、と。そのこだわりは、具体的に、どのように実装に表れていますか?

1024jp:開発者向けガイドラインやマニュアルのトンマナなど、macOSのスタンダードを徹底して調べ、CotEditorのUI内のボタン配置、チェックボックスとチェックボックス間のピクセル数、用語や公式サイトの口調まで、すべてがMacの「作法」に沿うようにしています。「書き出す」というmacOS標準の用語を「エクスポート」などと言い換えたり、ボタンのスタイルを独自のものに変更したりすることは決してしません。

そのため、開発フレームワークもMac純正のものを使うようこだわっています。例として、テキスト描画のコア部分には、macOS標準の「NSTextView」(※3)を徹底的に活用しています。一般的なサードパーティーのエディタでは、高機能の実現のために独自のテキストコンポーネントを選択、実装することが多いのですが、するとカーソル移動時や漢字変換の挙動といった細かい仕様で、OS標準のエディタとの細かな違いが生じがち。それを避けたいんですね。

このように、Mac用ソフトでありながら少しでも「Macらしくない」ものを許容しないため、私は「(macOS) native(※4)過激派」を自称しています。

(※3)NSTextView:AppKitに含まれるUIコンポーネント。複数フォント、スタイル、色、段落属性などを含むリッチテキストの表示や、編集機能を提供する。
(※4)macOS native:一般的に、macOS向けのソフト開発においてApple純正の技術を使用し、UIデザインや操作感と、OS全体の仕様の一致を目指す開発姿勢のこと。1024jpさんは、同名の技術コミュニティを主催している。

――Apple公式アプリを模倣したようなソフトウェアを目指している、ということでしょうか。

1024jp:少し、違います。私が目指すのは「ユーザーが『Macならこうだろう』と期待する通りにすること」であり、Appleのアプリを盲目的に模倣するわけではありません。

必ずしもAppleのつくるもの全てが正しいとは考えていないからです。むしろ、Apple自身が開発・提供しているアプリケーションの中にも、「Macらしさ」から外れてしまっているものが時おり存在すると考えております。

例を挙げると、Macの体験の中核をなすツールのひとつである公式「Music」アプリでは、設定をめぐる仕様が「Macらしさ」から外れているように感じます。設定用ウィンドウでユーザーが各項目を変更するとき、右下にある「OK」ボタンを押すまで、変更がアプリに反映されないのです。逐一「OK」をクリックする必要があるため、ユーザーからすると変更内容が実際にどのように反映されるか気軽に確認できず、また設定ウィンドウを開いている間は他の操作をすることもできず、行動が制限されます。

かつては、macOS版「Human Interface Guidelines」で、Apple自身が「Apply preference changes immediately(設定の変更はすぐに反映する)」との原則を定め、このようなことが起きないようにしていたはずなのですが。2022年にガイドラインがリニューアルされたタイミングで、この原則自体が削除されており、私としてはAppleの真意を測りかねている状況です。

そのようなこともある中、「Macらしさ」の実現に重要なのは、macOSが本来持つべき一貫性や操作感、そして設計思想を深く理解した上で、アプリとして実装することだと考えます。

「いちコントリビューター」ではもどかしくて

――「Macらしさ」への並々ならぬこだわりを感じます。CotEditor開発のきっかけについて質問しようかと思いましたが、まずMacとの出会いからお聞きした方がスムーズでしょうか。

1024jp:特に深い背景があるわけではありません。物心つく前から親が仕事でMacを使っていた環境で育ち、中学生のころには私専用のMacを親から譲ってもらったため、自然とMacユーザーになったというだけです。ただ、macOSのUIや作法が骨の髄まで染みついているので、気がつくと「Mac用アプリなのに、Macらしくないもの」に遭遇したときに、強い違和感を覚えるようになっていました。

――生粋のMacユーザーなのですね。では、CotEditorとはどのように出会ったのですか?

1024jp:大学時代の2005年ごろ、国内のMacユーザーのコミュニティでCotEditorが話題になっていたのがきっかけです。CotEditorが、まだβ版の「Ver0.6」だったころでしたかね。

デザインにも、初代開発者・nakamuxuさんの設計思想にも惹かれました。それは、「当時まだ新しかった『Mac OS X(※5)』らしい、シンプルなエディタとして仕上げること」。すなわち、モダンな仕様で「Macらしい」エディタを目指すことであり、現在のCotEditorのコンセプトはここですでに完成されていました。CotEditorの由来からして、「Cocoa(※6) Text Editor」ですし。

これらが、当時私が求めていた「新しいMac OS Xのインターフェースのかっこよさを体現するソフト」という理想像とぴったり一致し、日本語環境での使いやすさも相まって、次第にこのソフトを愛用するようになっていきました。当時は趣味で邦楽バンドのファンサイトを運営していたので、HTMLやCSSの記述に使ったものです。大学の講義でも、CotEditorを使い、HTMLでノートを取っていました。

(※5)Mac OS X: 2001年に登場した、macOSの当時のブランド名。従来のClassic Mac OSとは異なりUNIXベースへと刷新され、安定性・セキュリティが向上し、「Aqua」と呼ばれる新しいUIが導入された。2012年に「OS X」、2016年に現在の「macOS」へと名称が変更された。
(※6)Cocoa:Appleが提供するmacOS向けのネイティブなオブジェクト指向アプリケーション開発フレームワーク。Mac OS X登場時から主要な開発環境として提供され、AppKitや「Foundation Kit」といった主要フレームワークから構成される。

――2010年にnakamuxuさんがCotEditorの開発から退き、オープンソース化された後、2014年から1024jpさんがメインの開発者になったと聞いています。どういった流れなのでしょうか?

1024jp:端的にいって「私の解釈する『Macらしさ』でCotEditorを磨き上げたい」という情熱が抑えきれなかったのです。

CotEditorを継承してソースコードをGit管理に移し、2014年にはGitHubにてコードを公開したのは、usami-kさんというメンテナです。私もGitHub移行後、ヘビーユースしていたCotEditorの改善に寄与したくて、当時はOSのアップグレードにより従来より格段な高解像度のアプリアイコンが必要になっていたのもあり、新しいアイコンを提案したり、簡単なバグ修正のプルリクエストを送ったりするようになりました。CotEditorを記述していたObjective-Cについては、趣味の一環で、SVG画像のビューワーアプリなどをつくるために独学で覚えていたんですよ。

ところが、コントリビューションを重ねるうちに、少しずつ思いが強くなりすぎてしまい。厚かましくも「『Macらしさ』のためには、こうした方が良いのでは?」とUIに細かく提案をしたり、グラフィックパーツも新しく描き直して提供したりと、Pull Requestの数が日に日に増えていきました。

しかしusami-kさんはiOSのアプリ開発を本業としており、かなり多忙な方でして。他に熱心なコミッターもいないため、仕方のないことなのですが、改善提案がなかなか反映されなかったのです。その状況に、「まだまだこんなものじゃない。きっとCotEditorは、もっと良いエディタになれるはず」と、もどかしい思いが募っていきました。

そのうち私はとうとう「自分も開発メンバーに加えてください」と願い出ました。続いて「レビューも面倒ですよね? 私が直接修正した方が早いですよね? メンテナンスもなるべく頻繁に行いますので!」「公式サイトもあった方がいいですよね。ドメイン取得しておきますね」などと、次々に深く踏み込んだ提案と実行をしていき…。そうして開発の主導権を自ら握りにいった、というのが正直なところです。

▲縦書きの表示にも対応(画像はCotEditor公式サイトから)

――そうした流れで、コア開発者になったのですね。趣味でObjective-Cを学んだとの話もありました。2016年にはSwiftへの全面移行という、大規模なリファクタリングもありましたが、技術的な苦労はなかったのでしょうか?

1024jp:CotEditorをSwiftに移行したのは、コード量を減らしつつよりモダンな開発環境にするためでしたが、お察しの通り技術的な壁は大きかったです。情報系の学生ではなかったですし、就職後も工学系ではありますが、他分野の研究開発を生業としていて、情報技術の専門家ではありませんから。

一番苦労したのは、ただでさえアプリ開発という専門外のことをしながら、「特定条件で動作が止まる」といったトラブルに遭遇するたびに、メモリ管理やフレームワークの複雑な作法、プログラミング言語側の未知のバグといった、高度な概念までを調べないといけない点でした。

ただ、このプロセスを経てCotEditorにまつわるすべてを、細部まで理解し、「自分のコード」として責任を持てるようになったことの意義は、その苦労を補って余りあるものだったと感じています。アプリ開発の素人が「CotEditorについては、知らないことはない」状態になったのですから。なので、リファクタリングに踏み切って本当によかったと思っています。

世界のどこかにいる「同胞のあなた」へ

――そこまでの労力を注ぎ込み、10年以上開発を続けているモチベーションの源泉は、一体どこにあるのでしょうか?

1024jp:一番の理由は、「めちゃくちゃ面白い」からです。それは、大きくふたつの面白さに分けられます。

まず、「知的な挑戦」としての面白さ。数多の資料を参照しつつ、私の中にあるmacOSアプリの「理想の姿」を、CotEditorという具体的な形で実装し、この手で体現させるプロセス自体が、例えるならば「盆栽」のようで楽しいのです。

次に、ある種の「痛快さ」からくる面白さがあります。

――どういうことでしょうか。

1024jp:メジャーな選択肢を差し置いて、ユーザーからこのニッチなエディタが選ばれることがある、ということがたまらなく「痛快」なのです。

だって、macOSで利用可能なエディタには、「Visual Studio Code」や「Vim」、「Atom(すでに開発終了)」をはじめ、IT大手や、何名もの優れた技術者を抱えるOSSコミュニティによって開発されている高機能なソフトが、いくつも存在するわけです。利便性を考えたら、そちらを使うのが普通ではないでしょうか。

そんな中で、わざわざCotEditorを選ぶユーザーがいる。そうした方々の中には、きっと自分と同じように、「macOSらしくないUIや挙動をするアプリなんて触りたくもない!」という思想の強さを抱えているMac使いが、一定数いらっしゃるんだと思うのです。

そこまで多機能ではないかもしれないけれど、「Macらしさ」をひたすら追求したからこそ、世界のどこかにいる私の「同胞」の皆さんが、他の著名ソフトを差し置いて「そうそう! これだよ、これ!」とCotEditorを手に取ってくれる。それが面白くて。

――「面白い」とはいえ、有料化せず、無料ソフトとしてつくり続けていられるのはなぜでしょうか。

1024jp:無料ソフトとして開発を続けているのには、「面白い」以外にいくつか背景があります。

まず、幸いなことに、本業の研究職で安定した収入があるという現実的な理由が大きいのは間違いありません。腰を据えて、落ち着いてCotEditorでの活動に取り組める。

次に、テキストエディタは、「市場が壊れている」ことです。VS CodeやVimをはじめ、非常に便利なエディタが無料提供されている世界なので、仮に有料化してもあまり収益は見込めないかと思います。しかも、WindowsやiOS非対応のmacOS専用ソフトなら、なおさら市場は小さい。

最大の理由は、CotEditorの開発において、私は「誰も取りこぼさない」ということにも強いこだわりがあるからです。インクルーシブ(包摂的)なアプリ設計はApple公式も推奨していますが、私自身、個人的にもユニバーサルなデザインに強い関心があり。「無料」であるというのは、ある意味、それだけでとてもインクルーシブなことだと思うのです。有料だと、どうしても利用できる人は限られますから。

CotEditorには、プログラミングを学び始めたばかりの学生や、予算の限られた方でも気軽に使えるツールであり続けてほしいのです。そもそも私自身が、nakamuxuさんが無料で提供してきたCotEditorの恩恵を学生時代に受けていた人間でもあったわけですし。

ただ、ありがたいことに「寄付させてくれ」というお声も多くいただくので、2024年9月からドネーションを受け付けてはいます。

――他の人の手によって生み出されたプロダクトに、そこまで情熱を注げるというのも驚きです。自分でゼロからエディタをつくろうと思うことはないのでしょうか?

1024jp:そもそもCotEditorがなかったら、自分でエディタをつくろうと思うこともなかったかと思います。開発を引き継ぐまで、十分な技術力も知識もなかったですし。

では今ならどうかというと、エディタを新たにつくったところで、CotEditorとほぼ同じソフトがもうひとつ生まれるだけかと思います(笑)。それだけ、このエディタは、Mac用エディタとして自分にとっての理想形なのです。

それに、度重なるリファクタリングによって、今のCotEditorのコードは、ほぼすべてが「自分が書いたコード」となっています。もはや「他人のプロダクト」という感覚は、ありませんよ。むしろ、自分の人生を削るかのように心血を注いできたつもりです。

公式からの「供給」がある限り

――OSSとして、開発者を増やしたいと考えたりはしないのでしょうか?

1024jp:積極的に増やしたい、というような考えは特にないです。かつては門外漢である自分以外にコア開発者がいないことに技術面で不安を覚えることもありましたが、今ではこの体制を快適に感じている面もあるので。

なにしろ、CotEditorの根幹にある「Macらしさ」の解釈というのは、開発者が増えたら議論が必要になる部分だと思うんですよ。開発メンバーが増えた場合、意見の衝突を調整し、合意形成をしていくプロセスが必要になるのだろうな、と。現時点ではその工程が不要で、自分なりの理想の追求に集中できるという点では、ある意味でラッキーです。

――共同開発者がほぼいないという現状には、それはそれとして満足しているのですね。ではCotEditorの開発は、いつまで続けられるのでしょうか?

1024jp:俗な言い方をすると「公式の『供給』がある限り」です。

Appleは毎年、macOSのアップデートを通して新機能やAPI、UIの追加・改定を行っています。私はこのリリースに素早く追従し、CotEditorを最新の「Macらしさ」に適合させ続ける、というのを、ひとつの使命としています。この追従作業が実は楽しみでもあり、新たなミッションという糧を私に提供してくれるとの意味で、公式リリースを「供給」と呼んでいます(笑)。これも、飽きずに開発を続けられる大きな理由のひとつです。

他にもやりたいことは山積みです。例えば、シンタックス定義の拡張性は長年の課題のひとつ。MacらしいGUIベースの設定画面によって、パースの定義、優先順位の設定といったより高度な項目を、ユーザーが手軽に変更できるようにしたいのですが、UIのシンプルさとのバランスをどう保つかが難しくて。1〜3年以内に、手を入れたいとは思っています。

ところで、コア開発者は確かに私だけですが、それで全てが完結するわけではありません。細かなアクセシビリティ機能やキーボード操作など、私が知らない公式機能もまだ多く、ユーザーからのフィードバックで「あ、このアクセシビリティとCotEditorを連携させないと」と気づかされることはあります。インクルージョンの一環として重視しているローカライズも、各言語に精通した方々のボランティアの協力なしには成り立ちません。

結局のところ、私だけでは足りない部分もたくさんあり、この先も一筋縄ではいかない課題に直面していくでしょう。それでも、「Macらしいエディタ」の存在を願ってやまない方々に向けて、この先もCotEditorがより良いエディタになっていけるよう、尽力し続けたいと思っています。

取材・執筆・編集:田村 今人
撮影:曽川 拓哉

関連記事

人気記事

  • コピーしました
RSS
RSS