Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

サクラエディタの「業務要件」を考える #71

Open
berryzplus opened this issue May 18, 2019 · 4 comments
Open

サクラエディタの「業務要件」を考える #71

berryzplus opened this issue May 18, 2019 · 4 comments

Comments

@berryzplus
Copy link

berryzplus commented May 18, 2019

前置き

何かアプリを作るときは「叶えたい目的」があります。
「叶えたい目的」を実現するのがアプリの役割だと思います。
サクラエディタにも「叶えたい目的」があるはずです。

目的

サクラエディタの業務要件(=叶えたい目的)を なんとなく共有 します。

今風アプリの業務要件

今風なアプリを作るときの流れは以下のような感じです。

  1. ~をしたい!
  2. ~ができるアプリを探す (「~ができる」が業務要件
  3. ~ができるアプリが見つからなかった!
  4. ~ができるアプリを書いてみる
  5. ~ができるかどうか使ってみる
  6. ~ができるアプリができた!

今風アプリの開発では 5. ができてはじめて 6. のリリースができます。

サクラエディタの業務要件

今風アプリの業務要件の考え方をサクラエディタに当てはめてみます。

・・・サクラエディタって「何ができる」んでしょう?
アプリである以上、原点の「~がしたい」が存在しているはずです。
リリースしている以上、「~ができる」になっているはずです。
しかし、「~ができる」の具体的内容は不明です。

このissueでは「~ができる」の具体的内容が何だったのかを考えたいと思っています。

サクラエディタが作られた理由を想像する

サクラエディタが作られた理由を想像してみます。
「なんで作られたか?」が分かれば「何がしたかったか?」に辿り着けそうに思うからです。

時代背景

サクラエディタのベースが作られたのは 1998年 です。
'98年といえば、インターネットの普及期にあたります。
windowsとUNIXをインターネット越しに繋げられるようになった時期です。

フリーソフトとしてのサクラエディタ

サクラエディタを使う理由として
「秀丸に匹敵する高機能フリーエディタ」であることを挙げる人は多いと思います。

秀丸 は、サクラエディタとよく比較されるメジャーな日本語テキストエディタです。シェアウェアなので、しばらく使っていると起動時に送金を求めるダイアログが出るようになります。良識ある利用者は代金4,320円を振り込んで利用を継続します。利用するPCの所有者が BLACK 企業だったりすると有償ソフトウェアの利用ができないことがあります。そういう事態を回避するために、普段から無償のサクラエディタを使っておく、というのは一つの選択だと思います。

「無償で利用できる高機能なテキストエディタが欲しい」がサクラエディタが作られた原点である可能性は高いと思います。ただ、これが業務要件だとすると結局何がしたいのか不明なままになってしまうので、「無償で利用できる」を業務要件とするのは違う気がします。

notepad.exeの代わりとしてのサクラエディタ

サクラエディタを使う理由として
「notepad.exeで編集できないテキスト」を編集できることを挙げる人は多いと思います。

ウインドウズには、システム標準でnotepad.exeが付いています。
1998年当時のnotepad.exeが対応するのはシフトJISのみでした。
改行コードもCRLF以外の改行は扱えず、LF改行のテキストは「改行なし」に見えました。

「windows標準のnotepad.exeでは編集できないテキストを編集できるようにしたい」がサクラエディタが作られた原点であった可能性は高いと思います。ただ「notepad.exeで編集できないテキストって具体的にどんなんやねん!」と突っ込める内容なので、この動機はもう少しブレークダウンさせる必要がありそうです。

UNIX互換エディタとしてのサクラエディタ

サクラエディタを使う理由として
「改行コードLF」を正しく処理できることを挙げる人は多いと思います。
「Shift_JIS以外の文字コード」を概ね正しく処理できることを挙げる人も多いと思います。

「windows以外の環境で作成されたテキストファイルを編集できるようにしたい」がサクラエディタが作られた原点である可能性は高いと思います。

サクラエディタが「何のために作られたか」を想像する

「windows以外の環境で作成されたテキストファイル」ってのは、大雑把に言って「UNIX環境向けテキストファイル」のことです。より具体的には、ホームページを構成するHTMLやPerl等のCGIスクリプトを指すと思います。

「windows以外の環境で作成されたテキストファイルを編集できるようにしたい」の定義を言い換えてみます。

  1. ホームページやCGIを編集したい!
  2. ホームページやCGIを編集できるアプリを探す
  3. ホームページやCGIを編集できるアプリが見つからなかった!
  4. ホームページやCGIを編集できるアプリを書いてみる
  5. ホームページやCGIを編集できるかどうか使ってみる
  6. ホームページやCGIを編集できるアプリができた!

サクラエディタの業務要件再考

「ホームページやCGIを編集できる」は間違いなく「業務要件の一部」だと思います。
「業務要件の一部」と言ってるのは、全体像があって「その一部」だと感じたからです。

言葉遊びで定義を少し弄ってみます。

「ホームページやCGIを編集できる」
   ↓対象の定義を汎化する
「テキストファイルを編集できる」
   ↓対象の定義を汎化する
「ファイルデータをテキストとして編集できる」

対象を汎化したらサクラエディタの業務要件の話っぽくなってきました。
そして、新しい言葉が出てきました。
「テキストとして編集」
ただの「編集」じゃなく「テキストとして編集」です。

何故こういう言葉が出てきたかというと、サクラエディタは sakura.exe のようなファイルも開くことができるからです。対象ファイルが「テキストファイル」であるとは限らないと思っています。ファイルデータがテキストであるかどうかと関係なく、ファイルデータはテキストとして表示されます。これが「テキストとして編集」の意味です。

「テキストとして編集」という言葉は、具体的にどうするか曖昧だと思います。
先ほどとは逆に、詳細化してみます。

「ファイルデータをテキストとして編集できる」
   ↓操作内容を詳細化する

  • ファイルデータ(バイナリ)を編集データ(テキスト)に変換して表示する
  • 編集データに新しいデータを追加する
  • 編集データの一部データを削除する
  • 編集データ(テキスト)をファイルデータ(バイナリ)に書き出す

「テキストとして編集」は4つの操作の組み合わせで構成されていることが分かります。

これはある意味「テキストエディタの業務要件」でもある気がします。
notepad.exe で編集できないファイルを編集したい」をやりたいことと捉えるのもあながち間違いではないのかも知れません。

息切れしてきたのでここで一旦切ります。
情報共有が目的のissueですので、ご意見等あればご自由にお寄せください。

@takke
Copy link
Member

takke commented May 19, 2019

サクラエディタの歴史的経緯に詳しくないのでへぇーと興味深く読みました。とはいえ、何のためのIssueかさっぱり分からなくてもやもやするのでコメントします。

いわゆる「職業=プログラマー」から離れて7年ほど経つからか、「業務要件」という言葉にしっくりきていないです。
「叶えたい目的」を共有する目的を知りたいです。
例えば、、

・これは、雑談?コラム?ポエム?
→わりと好きです。長い歴史のある日本製OSSの歩みというのはそれなりに価値がありそうです。

・開発メンバーの足並みを揃えたい
→ここ数ヶ月IssueやPRのやりとりを見ていて、「メンバーの目的が共有できていないので足並みが揃っていない」ような感じはなんとなく感じています。

・プロジェクトの未来を見つけたい(今後の方向性を見直し、整理する)
→サクラエディタの開発が停滞しているというような問題意識から、本来のこのソフトウェアの目指していたところを見つめ直して、今後の方向性を定めていこう、的な。

いずれも相互に関係しているとは思うのですが、より強い狙いがどれなのか見えてくるとコメントしやすくなるのかなーと思いました。

メンバーそれぞれにこのソフトウェアに対する「想い」があると思うので、「開発メンバーアンケート」みたいなIssueを立てようかなーと最近思っていましたが、それに近い問題意識があるのかと思いまして。

@berryzplus
Copy link
Author

コメントありがとうございます。

「叶えたい目的」を共有する目的を知りたいです。

何故「叶えたい目的」を共有したいか?
 ⇒ リリースしてよいか判断するのに必要だと思うからです。

サクラエディタの「叶えたい目的」を共有できれば、
「何ができたらOKか?」の判断も共有できる気がします。
「叶えたい目的」の共有は、「サクラエディタでできること」の共有だと思っています。

将来的には #44 テストを計画してみたい で触れているような「リリースに向けたテスト計画」を考える基準になる「目的」を共有したいと考えていますが、課題は他にもたくさんあると思っていて「リリース可否判定基準」を定めることで身動きが取れなくなくなることを懸念しています。現時点では「なんとなく共有できればOK」と思っています。

・これは、雑談?コラム?ポエム?
→わりと好きです。長い歴史のある日本製OSSの歩みというのはそれなりに価値がありそうです。

主として雑談です。
自分が想像できる範囲で「サクラエディタの原点を予想してみた」という話です。
「違うんじゃないか?」の意見があって当然だし、むしろそういうのがあったら聞いてみたいと思っています。

・開発メンバーの足並みを揃えたい
→ここ数ヶ月IssueやPRのやりとりを見ていて、「メンバーの目的が共有できていないので足並みが揃っていない」ような感じはなんとなく感じています。

断面ごとの目的、いま何の話をしているか?にはこだわるほうなので、
issueやPRでは「いまその話じゃないですよね?」としょっちゅう言ってる気がします。
まー、それはそれとして・・・。

意外に思うかもしれませんが、メンバーの目的を揃える必要はないと考えていました。
メンバーそれぞれにやりたいことがある。それはそれで大事にすればいいと思います。
メンバーの目的が、サクラエディタの目的と異なっていてもいい、といえば良いんですかね。

結局のところ「サクラエディタの目的を第一に考えていこうぜ!」と言うことになるので「足並みを揃える」と同じになるんですが、ぼく個人の主観としては「メンバーの足並みは揃ってなくても構わない」と思っています。

・プロジェクトの未来を見つけたい(今後の方向性を見直し、整理する)
→サクラエディタの開発が停滞しているというような問題意識から、本来のこのソフトウェアの目指していたところを見つめ直して、今後の方向性を定めていこう、的な。

繰り返しになりますが、「叶えたい目的」の共有は「あるべき姿」の共有と同義だと思っています。「何が正しいのか分からん」という状態から一歩抜け出すためには「サクラエディタの原点を考えてみる」ということが必要なのかな?と思っています。

メンバーそれぞれにこのソフトウェアに対する「想い」があると思うので、「開発メンバーアンケート」みたいなIssueを立てようかなーと最近思っていましたが、それに近い問題意識があるのかと思いまして。

まさしくそんな感じです。

とりあえず「こうだ!どうだ!」みたいなノリじゃなく「なんとなく共有したい」としてるのは、他の考え方があれば聞いてみたいなぁ、という思いがあったからです。

@KENCHjp
Copy link
Member

KENCHjp commented May 19, 2019

多分一番古参の「ユーザー」だと思いますがおもいつくまま。
たけさん公開当時にサクラエディタの周りには秀丸がいましたが、まだ当時は(いまでもあるものも含む)、EmEditor、TeraPad、などのWinGUI系もあり、ガチでサクラvs秀丸って感じでもなかったかも。
(個人的心象)。
私はまだ当時DOSのVzエディタつかってました。
ダイヤモンドカーソルキーと、無選択時の一行切り取り、2ストロークキー(サクラではポップアップメニューと組み合わせて実現)がサクラで出来るようになってのりかえました。
Winの他のソフトだと掲示板で機能要望して実現されるようなことはなかったとおもっております。

それから数年たってサクラは思わずあちこちで見かけるようになります。
秀丸も多かったですがそこそこの機能を無料で使えるということで、業務系の開発の現場にはたいがいありました。
このころ一番ユーザー増えたのではないかと、開発メンバーも増えて用途もITだけじゃなく物書き用途とか。

今ではIDEも無料で手に入る世の中ですので言語編集は他のツールのほうが生産性は高いと思いますが、ログの解析とか設定ファイルの編集とか、exe一つで動くニーズは高いと思っております。

いろんな人が交わって今に至るということでOSSの形をしたSNSなんじゃなかろうかと。

すいません、まとまりなくて。

@berryzplus
Copy link
Author

berryzplus commented Aug 10, 2019

ちょっと修正しました。

結論部分が分かりづらくなっていたので加筆修正しました。

ファイルデータ(バイナリ)を編集データ(テキスト)に変換して表示する
編集データに新しいデータを追加する
編集データの一部データを削除する
編集データ(テキスト)をファイルデータ(バイナリ)に書き出す

「編集データ」というのは sakura-editor/sakura#980 で修正対象に上がっていた CDocLineMgr が管理する 拡張UTF-16LE のテキストデータのことです。

追加&削除以外の編集機能って何だろう?

発展ネタです。

読み込む、追加する、削除する、書き出す

この4つの操作が、サクラエディタの業務要件を満たすための機能だとします。
(別な見解もありえるとは思いますが、とりあえずそういうことにして先に進みます。)

それ以外の機能って、何なんでしょうか?

例えば、サクラエディタの代表的機能「検索」について考えてみます。

この機能は、ファイルを読み込みません。
データを追加しません。
データを削除しません。
ファイルに書き込んだりしません・・・。

ぼくの個人的見解では、検索は業務要件を満たす主要機能を便利に使えるようにするための補助機能です。・・・考えてみてください。

  • データを追加する機能を正しく発動するには、適切な追加位置に移動する必要があります。
    -(補助機能:カーソル移動)
  • データを削除する機能を正しく発動するには、適切な削除範囲を指示する必要があります。
    -(補助機能:範囲選択)

検索は、文書内から指定されたパターンを検索し、見つかったパターンに移動する機能です。多くの実装で、見つかったパターンが選択状態になるので、対象パターンを選択する機能であるともいえます。

ここで、検索は補助機能である、の見解に納得したことにします。

そうすると、 他の多くの機能も「編集を補助するための機能」なんじゃないか? と予想できると思います。文字コード変換とかマクロとか、構文色分けとか、サクラエディタには様々な機能がありますが、すべて「円滑に編集操作を行うための補助機能です」と説明して問題ないように思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants