質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Delphi

DelphiはPascalを拡張してオブジェクト指向を導入したWindows, OS X,iOS,Androidのネイティブアプリケーションを開発するための言語です。旧称はObject Pascal。開発用IDE「Delphi」にあわせ現在の名前に改称されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

11回答

7193閲覧

テキストエディターを自作したいです

fermat

総合スコア183

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Delphi

DelphiはPascalを拡張してオブジェクト指向を導入したWindows, OS X,iOS,Androidのネイティブアプリケーションを開発するための言語です。旧称はObject Pascal。開発用IDE「Delphi」にあわせ現在の名前に改称されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

4グッド

5クリップ

投稿2020/03/12 22:41

編集2024/03/11 20:39

テキストエディターを自作したいです。
動作環境はwindows10です。

過去のテラテイル記事なども読ませていただいているのですが、
どの言語・関数を選べば、自分が作りたいと思っているエディターに辿りつくのか分からず
こちらに質問させていただきました。

欲しい機能
①テキスト形式で保存する
②アウトライン(小見出し)に対応
③リンク先画像を編集エディター内で表示できる
④好きなフォントを使える、フォントサイズを指定できる
⑤背景色、文字色を指定できる
⑥行番号表示がある
⑦リンク先の画像を表示させたまま印刷できる
⑧印刷範囲(A4用紙を指定するなど)で文字の折り返しを表示できる

特に作れるのかどうか不安なものが
「③リンク先画像を編集エディター内で表示できる」です。

txt

1file:\Desktop\flower.png\7 ▼

『file:\リンク先の画像のパス(相対パスもOK)\エディター内で縦サイズのみ指定」
このように書きこめば、設定次第で下記の図のようにリンク先の画像が表示されるようにしたいです。
サイズ指定は、行の長さを縦サイズにする感じです。

図1

このようなGUIは作成できるのでしょうか。
何の言語を選び、どの関数を使えばいいのか全く分からない状態です。

teraPadや秀丸に憧れて自作エディター作ろうと思い立ったものの、
その入口が全く分からず、質問させていただきました。
どうぞよろしくお願いします。


2020/03/14 補足
④好きなフォントを使える、フォントサイズを指定できる
⑤背景色、文字色を指定できる
これらについては文字毎ではなく、エディターの表示形式一括でと考えています。
分かりづらくてすみません。


2020/03/14 追記

なぜ作りたいかというとZuishinさんも気づいて下さっていますが、
「特殊なデータ形式ではない保存、記述だけに集中できる簡易な操作、図と文章の混在と体系化」
それらを満たすシンプルなエディターが自分自身が調べた限りですが、見つけられなかったということがきっかけにあります。
meryEditorもファンで愛用しているのですが、このエディターにも過去にこのような要望があったようで、
この漫画を描かれている方の気持ちがわかるなと、クリックで飛ぶ機能も良いけどプレビューできたらいいなと、
自作エディターについて調べ始めました。

自作自体が目的というより、使うことが目的にウェイトがありますが、
プログラミングが好きなので、これを機にさらなる成長もできたらとも思います。
自身の実力で作れるものなのか、制作にどれくらいの時間を必要とするのかについては冷静に考えたいです・・・。

皆様、貴重なご意見・ご回答ありがとうございます。
繰り返し拝読しております。
本格的な方法となんとか手が届きそうな方法、どちらを目標とすべきか、
只今、皆様が教えてくださったことをもとにネットをさらに調べたり本屋さんへ通っています。
悩みに悩んでいるので、お返事が少々遅くなるかも知れません。
ご返答無く申し訳ないのですが、しばらくお待ちいただけますと幸いです。

makosankibu, DrqYuto, s.k, oikashinoa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/12 23:52

それらを全部満たすコンポーネントは少なくとも無料では無いので、自分で一から作る必要があります。作り方はネットのどこにもありません。全ての機能を自分で実装しなければいけません。タグに挙げられたどの言語でもできると思いますが、どれを選んでも茨の道でしょう。 比較的簡単そうなのは JavaScript で Visual Studio Code の拡張機能を作ること、あるいは同様に HTML を使うことではないかと思います。
m.ts10806

2020/03/13 02:15

「なぜ作りたいか」 前提や背景があったほうが良いかと思います。 多くのエンジニアは車輪の再開発は極力避けるものです。それなりの理由がなければ腰をあげないでしょう。
Y.H.

2020/03/13 02:49

テキストエディターを自作することが目的なのか 「欲しい機能」に記載されているエディタを使うことが目的なのか どちらでしょうか?
thkana

2020/03/13 09:48

> 欲しい機能 それ、普通にイメージする「テキストエディタ」とは随分違う気がします。 それだと「リッチテキストエディタ」かな?
Lhankor_Mhy

2020/03/14 03:28

JavaScriptは関係ないと思いますので、タグを外してください。
pepperleaf

2020/03/14 12:09

JavaScriptでは作れない? 実用的かどうかは分かりませんが。 Power Shellでもありかと。ただ、こちらもあまり現実的かどうかは? ただ、.NETの機能がほぼ全て使えるので。
guest

回答11

0

追記:

「③リンク先画像を編集エディター内で表示できる」です。

エディタから作成するよりも、既存のエディタの拡張機能を作成する方向で考えられるのもよいのではと思います。

昔のQAを思い出したのでこんな感じですかね↓
(github)imagecomments-a-visual-studio-extension

(teratail)コード中に画像(仕様書の、jpg or pngの)を混在したいです。で紹介されてます

VisualStudio 2013の拡張機能で、コードのコメントに記載したタグの画像を
編集画面に表示するものが回答で紹介されています。


以下のように有名どころのエディタがオープンソースでgithubで公開されています。
一度どのような仕組みで作成されているかソースを読んでみられてはどうでしょうか?

サクラエディタ
https://sakura-editor.github.io/

Atom
https://github.com/atom/atom

Visual Studio Code
https://github.com/Microsoft/vscode/

Notepad++
https://github.com/notepad-plus-plus/notepad-plus-plus

投稿2020/03/13 00:36

編集2020/03/13 02:15
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

このようなGUIは作成できるのでしょうか。
何の言語を選び、どの関数を使えばいいのか全く分からない状態です。

Windows 向けのアプリケーションでしたら言語は C# で、フレームワークは「Windows フォーム」または「WPF」をおすすめします。
情報もそれなりに多いですし、初心者でもとっつきやすいと思います。

TeraPad や秀丸エディタの開発には、Delphi や Visual C が使われていたようですが、現在ではあまり使われなくなっていますし、少なくとも初心者は避けた方が無難かと思います。

投稿2020/03/13 00:57

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2020/03/13 12:31

> Windows 向けのアプリケーションでしたら言語は C# で、フレームワークは「Windows フォーム」または「WPF」をおすすめします。 現在のWindowsが前提で、特にこだわりが無いのなら、これしか無いと思います。特に、GUIが絡む場合、他だと色々と制約が多いのでは? 他の回答にもありますが、わざわざ、全て作る必要があるかの方が、重要な気もしますが。
guest

0

Windowsでのプログラミングなんてもうずいぶん行っていませんので最近の流行りは分かりませんが、むしろ質問者さんと同じ状況だと考えて調べてみました。

先にy_waiwaiさんからC#というキーワードをいただいているので、それを軸に考えてみます。

Windowsなどウィンドウやそれらに配置されたボタンなどを使った操作は「GUI操作」とも言われていますから、それを中心に検索ワードを考えてみます。たとえば「Windows C# GUIライブラリ」など。

すると、たとえば「簡単なウインドウアプリ(GUI)開発のまとめ(Windows編)」という記事が出てきます。

これをざっとみると、C#を使ってテキストとかボタンを使ったアプリを開発する流れが結構詳しく書かれています。

質問者さんが挙げた細かい要件には全て適用できませんが、いくつかはC#を使って開発できそうな目処が立ちそうです。

で、さっきと同じような感じで、次はキーワードを変えて検索してみます。「C# ライブラリ 画像表示」など。細かくはみていませんが、画像を読み込んだり表示したりする方法が出てきます。

こんな感じで調べてみると、できることがわかるのでは無いでしょうか。

ちなみに、API(Application Programming Interface)とは、プログラミングにおいてある操作(処理)を行えるようにした関数のことです。ライブラリとは、それらの関数の集まりのことです。

なので、調べたい処理とAPIとかライブラリというキーワード、それに言語名を入れれば大抵の言語でやりたいことができるか調べることができます。

こんな感じで一つ一つの要素についてコツコツ調べていくと、概ね達成できそうか調べられるのでは無いでしょうか。

投稿2020/03/12 23:44

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

テキストエディタの作成は簡単そうに見えて実は相当難易度が高いと思います。
よって一から作るよりかはオープンソースのエディタを流用するのがよいかと思います。
https://tracpath.com/works/development/programming_text_editors/

全部のエディタのソースコードを見たわけではありませんが、どのエディタもそれなりにコード量があり、それなりに難解だと思います。
まずはそれを読み解くだけの技量が必要です。

たぶんそのエディタが完成できるくらいの技量が身についたときには、そのエディタの必要性すら感じられなくなっていると思いますけど。
(既存のエディタで十分。インラインで画像の表示も要らないんじゃね?と思いなおすという意味)

投稿2020/03/13 01:42

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

teraPadや秀丸に憧れて自作エディター作ろうと思い立った

ご自分の使える言語で既存の機能を参考に作ってみては如何でしょうか.
やる前から出来る出来ないを他人に判断してもらうよりも, 今使える言語の理解を深めるという意味や, 既存のソフトがどれほど工夫されて作られているか等を知るという意味で, 自らやってみるというのが(遠回りながらも)身に付くものが多いように思います.

投稿2020/03/13 02:34

編集2020/03/13 03:25
jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

この入力欄でも採用されていますが、Markdownが要望に近いのではないでしょうか。
入力とプレビューが別でよいならOSSも豊富にあるようですので、参考になるかと思います。

投稿2020/03/17 09:28

FKD

総合スコア268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

他のコメントにも書きましたが、 Windowsでの開発で、特にこだわりなければ、言語は C#一択じゃないかと思います。 (あと、フォームにするか、WPFはありますが)

さて、

欲しい機能
①テキスト形式で保存する

テキスト編集とこれだけだったら、まあ、TextBoxだけでもOK。複数行もOKだし、保存/呼出しも簡単。

ただし、

②アウトライン(小見出し)に対応

もう、TextBoxだけでは無理みたいです。どう表現するかの設計も必要。

③リンク先画像を編集エディター内で表示できる

するか不安との事ですが、これは、テキスト表示と画像表示を分ける、または、分割表示で簡単そう。ただし、リンク先をどう指定するかの UI設計が必要。

④好きなフォントを使える、フォントサイズを指定できる
⑤背景色、文字色を指定できる

これは、文字毎に必要? そして保存も必要? とすると、もうエディタの範疇から、外れてるし、ファイルへの保存形式もどうするか決める必要があります。

⑥行番号表示がある

⑦リンク先の画像を表示させたまま印刷できる
⑧印刷範囲(A4用紙を指定するなど)で文字の折り返しを表示できる

上が出来てれば、おまけみたいものでしょうか? 凝れば、キリは無いですが。

さて、TextBoxの機能でできる範囲... と思って確認したら、RichTextBoxクラス なんて便利ものもあって結構な範囲をカバーしてくれそうです。このクラスがサポートしてる範囲だったら、実装は容易。追加機能も内容次第。
行番号は? と思ったら、ここにも質問ありますね。
ただ、teraPadや秀丸に憧れて と言うと、入力されたキーとか、マウスイベントとか、全てをハンドルする必要があります。
逆に言えば、使い勝手とか、考えると大変という事です。


追記.

使うことが目的にウェイトがあります

という事なら、カスタマイズ可能なエディタをカスタマイズするのが良いかと。
ソースコードがオープンとなっているエディタも多いようだし、、。
ただ、カスタマイズはやり過ぎると、バージョンアップ時に齟齬が発生する可能性があるので、注意。

投稿2020/03/14 03:07

編集2020/03/14 12:19
pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

今時分、OSに依存したアプリを作るのは時間の無駄だと思います。
Javascript + Electron
でプラットホームに依存しないデスクトップアプリに取り組んでみてはいかがでしょう。
Visual Studio CodeやAtomエディタなどもElectronで開発されています。

最新版で学ぶElectron入門 ウェブ技術でPCアプリを開発しよう
https://ics.media/entry/7298/

投稿2020/03/13 12:48

technocore

総合スコア7200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/13 13:07

どちらも OS に依存していますね。OS によって作法が違うので全く同じものを使いまわすことはできません。コードの共通部分の割合は大きいですが、複数の OS で動かそうと思えば、それぞれにきちんと対応する必要があります。マルチプラットフォーム対応は、動作環境を複数用意してテストしなければならないので割と面倒です。例えば Windows と Mac ではデフォルトのフォントから違います。 本気でマルチプラットフォームに対応するのであれば、選択肢は Electron 以外にもあります。Xamarin もその一つで、C# や VB.NET や Python などが使えます。Android や iPhone を対象にした場合、Electron では作りにくかったんじゃないかと記憶していますが、今でもその状況であれば Xamarin は有力な選択肢になるでしょう。
guest

0

結論から言うと、C言語なら可能です。
(他の言語でもできますが、多分Cがいちばん簡単)

ほとんどの問題は、エディタで「表示」するときの課題です。まず、普通にエディタを作り、エディットボックスが内容を表示しようとするのをフックします。(サブクラス化) テキスト表示と、キャレットの表示をフックすればよいでしょう。

参考URL
http://www.kumei.ne.jp/c_lang/sdk/sdk_74.htm
http://www.kumei.ne.jp/c_lang/sdk/sdk_36.htm

投稿2020/03/12 23:54

majiponi

総合スコア1720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/13 00:07

C++ ならまだしも C が一番簡単ということはないと思います。
majiponi

2020/03/13 02:40

覚える機能が一番少ない、という意味で簡単だと思ってます。現に、13歳の私でも覚えられました。
Zuishin

2020/03/13 02:45

石を手で積むことを覚えるのは簡単ですが、塔を建てたい時には重機の操縦が必要になります。 目的が小石を積むことではなく塔を建てることだとしたら、手で積む方法を簡単だと言うのはかなり誤解を招きます。
pepperleaf

2020/03/13 12:22

今のWindowsで、グラフィックを含めて C でなんで全く現実的でないと思いますが、、、。また、最近の Visual Studioでは、C++でさえ、ディスクトップアプリは非推奨。(標準設定での新規作成は出来ない) あ、参考URLみたら、 最終更新が、1997年。印刷どうしましょう? 当時 USB無いです。 .... と言うより、同じ方法、使えるか?
guest

0

なにを聞きたいのかわかってなさげではありますが、

とりあえず、C#でやればどうでしょう。

投稿2020/03/12 23:01

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず、実現したいことを確認いたします。

  • テキスト形式で保存する ...1
  • アウトライン(小見出し)に対応 ...2
  • リンク先画像を編集エディター内で表示できる ...3
  • 好きなフォントを使える、フォントサイズを指定できる ...4
  • 背景色、文字色を指定できる ...5
  • 行番号表示がある ...6
  • リンク先の画像を表示させたまま印刷できる ...7
  • 印刷範囲(A4用紙を指定するなど)で文字の折り返しを表示できる ...8

上記の操作ができるテキストエディタを作る ...9

結論を申し上げますと、@FKD さんも回答しているように、Markdownが一番作りやすいと
考えます。まず、Markdownは以下のことができます。

  • 小見出しを# ~と書くことができます。(2)
  • リンク先の画像を、![代替テキスト](リンク)と書くことができます。(3)
  • これらをテキスト形式で出力できる (1)

さらに、Web系(HTML、やNode.js+Express、Rails)で作るのであれば、Markdown→HTML形式
とできるJavaScriptライブラリやGemがあるので、これとCSSを組み合わせると、

  • CSS、JavaScriptでフォントを指定できる (4)
  • 背景色、文字色を変更できる (5)

これとJavaScript系、サーバーサイド系を使えば、さらなる実現が出来ます。

  • 行番号表示をさせる(これはHTML,CSSだけでもできるかも) (6)
  • リンク先の画像を表示させたまま印刷できる (7)
  • 印刷範囲で文字の折り返しを表示できる (8)

これらを組み合わせることで、上記の操作が実現できる可能性があります。(9)

投稿2024/03/11 11:39

michikusa-mc

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問