
複数人での記述、編集ができることを目標としている。
既存の優れたエディタを参考にしながら、機能を追加していかなければならないが
まず最初はシンプルなテキストエディタとして開発を進めていきたい。
関連ページ
レイヤー ロック ステータスバー 画面遷移図-エディタ部分


◆ エディタ ◆ |
|
原文/リーダー・担当メンバー 切り取り(基本灰色 選択状態で黒) |
原文/参加者 (メニューは同じだが以下以外灰色) コピー すべて選択 -------- レイヤーの作成 -修正レイヤー |
通常レイヤー/リーダー・担当メンバー 切り取り |
通常レイヤー/参加者 (メニューは同じだが以下以外灰色) コピー すべて選択 -------- レイヤーの作成 -修正レイヤー |
透明レイヤー/リーダー・担当メンバー 切り取り |
透明レイヤー/参加者 |
修正レイヤー/リーダー・担当メンバー 切り取り |
修正レイヤー/参加者 (メニューは同じだが以下以外灰色) コピー すべて選択 -------- レイヤーの作成 -修正レイヤー |
自分が作った修正レイヤー/リーダー・担当メンバー 切り取り |
自分が作った修正レイヤー/全員/メニューは同じだが以下以外灰色 |
名前欄/リーダー・担当メンバー 個人チャットをする |
名前欄/参加者 個人チャットをする |
バージョンレイヤー/リーダー・担当メンバー 切り取り(灰色) |
バージョンレイヤー/参加者 (メニューは同じだが以下以外灰色) コピー すべて選択 -------- レイヤーの作成 -修正レイヤー |
重複更新/リーダー・担当メンバー 切り取り |
重複更新/参加者 (メニューは同じだが以下以外灰色) コピー すべて選択 -------- レイヤーの作成 -修正レイヤー |

※情報が古い
複数人でそれぞれのカーソルを用いながら同時に複数行を編集するのは、現時点では技術的に難しいことがわかった。
よって現実的に実装ができる機能として、ひとりが入力を進めている場合
他の人は入力ができなくなるような形にしたい。
現在のサンプルの段階ではカーソルの奪い合いになっているため、まずそれをやめなければならない。
またターン制という案があったが、入力する意志のない参加者にまでターンがまわるのもおかしいと感じている。
誰かが入力を始めた時点で、その人のターンになるという考えはどうだろうか?

この機能の実装を目標としていきたいが、非常に技術的ハードルが高いらしい。
これを実現させるための案があれば、ぜひ提案していただきたい。

87 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:38:38
RDB使えば行ロックも何にも考えずにできるけどな
2人が同じ行を書こうとしたら?先着順?
というかリアルタイムでネットワークバージョン管理システムを使う感じ?
151 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:02:15
行の制御は、問題が多いな・・
156 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:03:47
>>151
面白い発想で、いっそSQLでデータ管理したらどうかな?
そうすりゃロックなんて簡単になるぞ
まああづみさんのPCが糞っぽいから多分無理だけど
474 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:15:35 ID:w9bl8Gog
RDBが一番簡単
一行ごとにロック・複数人で編集・ネット経由のほぼリアルタイムで同期
これぐらいのを構築なら1時間もかからん
414 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:04:21
ロック制御細かくしたけりゃDB鯖にしろ
440 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:08:29 ID:w9bl8Gog
DBで編集をトリガにしてレプリケーション取ったら同期もロックも解決やが
446 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:09:44 ID:yfb4tX7M
>>440
DBは管理が大変なんだよ
493 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:20:08 ID:w9bl8Gog
参加人数が増えて編集回数が増えれば加速度的に重くなる
実用的ではないがRDBで構築は可能
521 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:26:53 ID:/FoL/M3.
RDBは手っ取り早くて信頼性も期待できるけど
ベストな解決とは程遠いわな
ホスト役はDBの導入・管理が必須ということか?
導入障壁が高すぎると普及に問題がでると思うのだが。
同じソフトウェア、環境で、それぞれがサーバ&クライアントになれる形でやりたい。
146 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:51:58
でも自分の領域のコードをテストビルドしたいとき、他人がコード更新中だと待ってなきゃならないな。
▼ 155 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:53:39
>>146
まあそのときはコミットされた所までで
ビルドすれば良いんじゃね?
▼ 160 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:54:41
>>155
どっちがどのタイミングでファイル保存すればいいの?
▼ 162 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:55:04
>>155
svnと変わらなくね?
自分の仕事があるならリアルタイムに他人のCD見てる暇ないだろ
▼ 172 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:56:33
>>155
そこら辺はIRCとかメッセンジャーで調整
>>162
どう考えてもsvnやcvsやgitでいいよね…
154 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:02:36
基本的には複数行ロックがいいとおもうよ
157 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:03:58
SVNがファイル単位だから
それの行版でいいんじゃない?
158 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:04:14
まずは、編集権限はターン制にしたら?
159 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:04:50
トランザクション処理が一番面倒だな
順番に書くようにすりゃいいけどそれじゃあ作ってる
意味あんまないしな
160 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:04:51
行単位でのロックは非現実的だよ。
メソッドとかクラス単位でのロックが現実的だね。
167 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:07:05
メソッドとかクラスを認識させないといけないのか・・難しくないの?
170 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:07:35
あづみは夢想家だからな(笑)
それはともかく、現実的なところで行のところクリックするとそいつがロックできるようにすりゃいいんじゃね?
適当にフラグ作って管理で
176 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:08:22
言い方悪かったな、左側の行番号をクリックな
それだと管理楽だし
で、解除するにはもう一度押さないとダメなんだ
188 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:13:45
①あづみが行をクリック
②あづみからサーバに「あづみが行をクリックしたでー」とメッセージを送信
③サーバからみんなに「あづみが行をクリックしたでー」とメッセージを送信
④あづみがクリックした行がロックされる
こんな感じだ
197 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:17:00
①文字入力した行またはメソッドが自動的にロックされる
②保存することでロックが解除される
こんなんでどう?
202 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:19:57
こっちはどうよ?
http://ci.nii.ac.jp/naid/110002880957/
223 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:26:24
これは?
http://ci.nii.ac.jp/naid/110002880355/
259 名前:名無しさん[] 投稿日:2009/04/08(水) 23:35:03
http://www.ie.u-ryukyu.ac.jp/~kono/papers/kono/2000/software2000.pdf
262 名前:名無しさん[sage] 投稿日:2009/04/08(水) 23:35:20
そっちのは保存をトリガーにしてるんだよな
1文字入力ごとに保存すればリアルタイムにはなる…か?
404 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:02:08
1行1ファイルにすればロックもできるし同時編集できるな
418 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:04:36
>>404
てか、booleanとStringBufferの可変長配列で管理すりゃ簡単だろ
それかメソッドごと同期させるか
439 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:08:00 ID:eS.PGnik
>>418
あぁたしかに
peer publicとかもいいかも
503 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:23:38 ID:yfb4tX7M
booleanとStringBufferの可変長配列でやれば
行が増えてもいけるんじゃね
429 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:06:03
チャットのプログラムをマルチユーザエディタにする方法は、大きく分けて4つです。
1.チャットをつくる(サーバーとクライアント間の通信)
2.エディタをつくる(クライアント側でファイルを編集するプログラム)
3.ファイル管理のプログラムを作る
(サーバー側のファイル管理のモジュールとして使用する)
4.ロックの仕組みを作る。
478 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:16:58 ID:Hdc5ga/o
同時ってのがくせものなんだよ。
誰かが編集してる間は編集不可。
編集後、○○秒後に編集可能になる、とかなら、
○○秒後の値しだいでは作れる。
プログラマの考える同時ってのは、まったく同じタイミングに編集されて、
ファイルが二つに分裂してしまう、ってのもあるし。
489 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:19:44 ID:Hdc5ga/o
行単位のロックて、
Aさんが100行目を、Bさんが200行目を同時に編集したら
危なっかしくないか?
487 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:18:57 ID:YQXa4r4c
クライアントにつねに最新のデータを表示させてないとだめ
かなり重くなるな
▼ 495 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:21:23 ID:yfb4tX7M
>>487
それやったら確実にコンパイルで落ちるだろうが
どこでデバックするんだよ
▼ 502 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:23:08 ID:BrzPUzE6
>>487
というか、そこはゲーム的発想
見てないところは更新しなければいい
そうすりゃ最低限のパワーで済む
▼ 507 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:24:34 ID:YQXa4r4c
>>502
それなら、同時書き込みってのが意味を成さなくなる気がするが・・
▼ 529 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:27:58 ID:BrzPUzE6
>>507
ん?
データ更新って言うのは秒間10回くらいはやってるっていう想定だよ?
だから人間の目にはスクロール動かしても全部のデータが同期取れているように見えてる
実際は画面に広がった数十行ずつしか更新しないけどね
497 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:21:56 ID:DfTy1OIQ
行ごとのロックって、行が増えたらどうすんの?
プログラマってくせで改行入れたり、改行消したりすると思うけど
500 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:22:34 ID:YQXa4r4c
あづみが1行目を編集している時に、名無しさんが2行目を編集する。
この時あづみが改行入れたらどうなるのかな?
504 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:23:44 ID:hxlYxMf6
>>500
結局誰かが操作してる間は誰も操作できないなw
523 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:27:20 ID:yfb4tX7M
誰かが見てるソースはメモリで管理
誰もみてないソースはメモリから破棄
これでいいんじゃない
611 名前:名無しさん[sage] 投稿日:2009/04/09(木) 00:50:06 ID:yfb4tX7M
みんなわかったか?
実は参加全員分の同期とかロックは必要ないんだぜ
メインプログラムに対してのサンプルを提示できるよなシステムでいいんだぜ
738 名前:名無しさん[sage] 投稿日:2009/04/09(木) 01:23:10 ID:YQXa4r4c
ターン制は、時間もしくは、ターン終了ボタン実装で権限を移せばOKなんで
割と簡単にいける・・と思う・・
761 名前:名無しさん[sage] 投稿日:2009/04/09(木) 01:30:54 ID:yfb4tX7M
カーソルは悪魔でも自分の分1つ
他の人のカーソルは仮想で通信から取得したらええやん
775 名前:名無しさん[sage] 投稿日:2009/04/09(木) 01:37:21 ID:CG5CGo/c
ひとつの案なんだけど、ベースのテキストに対して直接編集するんじゃなくて
例えばL.xxへの修正・削除・追加とかの差分情報をそれぞれのユーザーが付加する形とかはどうなの?
で、最終的にその中から適用させるモノをナンならの方法で決定してそれを適用させたものを最終的に保存する感じ
▼ 779 名前:名無しさん[sage] 投稿日:2009/04/09(木) 01:38:21 ID:x6ZmsdAU
>>775
コマンドパターンか
▼ 782 名前:名無しさん[sage] 投稿日:2009/04/09(木) 01:39:40 ID:BrzPUzE6
>>775
というか、俺が一番楽だなっていう構築方法が
クライアント
↓
チャット鯖<->DB鯖
↑
クライアント
これだとめちゃくちゃ楽に作れそうなんだよ
まあ矢印ゲームのが楽しそうでいいけどねw
785 名前:名無しさん[sage] 投稿日:2009/04/09(木) 01:41:30 ID:CG5CGo/c
例えば同時編集なら誰かがサーバになるんだろうしその人に決定権限を置くなり
ユーザーがそれぞれの案に賛否つけて一番数字のいいものを適応させるとか
prgのコードとかだと一行だけじゃなくて関連する部分の他の行もあるんだろうしそれ考慮するとなかなかめんどいだろうけど
リアルタイムに同期していくよりは楽な気がする
927 名前:名無しさん[sage] 投稿日:2009/04/10(金) 21:41:53
結局、複数人数同時書き込みは、現リスナーでは出来る人いなかったんだよね?
で?これからどうするの?神を待つの?
942 名前:名無しさん[sage] 投稿日:2009/04/10(金) 21:45:59
>>927
同時にやるって大変なんだよ。
やるなら銀行の口座処理みたいにトランザクションやるんだろうけど
銀行口座とちがってソース書き込みは頻繁に起こるだろうしメンドイ
957 名前:名無しさん[sage] 投稿日:2009/04/10(金) 21:52:28
エディタはさ、各々のカーソル行にMMOみたいな吹き出しでもつけて所有者名だして占有、
時間差に関してはreturnした時に(既に改ざんされてて)確定できない、とクライアントに返す仕様でもいいんでない?
79 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:27:03
プロジェクト追加人数ごとに、編集領域を作ればええやん?
DB使えば出来るだろう。
89 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:29:07
>>79
各々が編集したあとにmergeどうするの?
90 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:29:29
いやだからさ、一つのテキストファイルと凝り固まるからだめなんだろう?
DBでその人の領域DBスペースがあればええんじゃないん?
95 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:31:06
>90
それだと、領域をあらかじめ想定してないと無理じゃね?
97 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:31:42
DBにしたら絵をみんで描く場合とか困る
98 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:31:44
あづみの考えてる行とDBの行は概念からして違う
DBのテーブルの1行に改行文字をいくつも入れることができる
エディタで何十何百行の文章でもDBの一行に格納できる
103 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:32:22
DBでリアルタイムは無理だよな?
一回一回更新ボタン押さないと最新の情報は得られないだろ?
108 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:33:24
DBにした場合文字コードとか考慮しないと
内容消えたりするんじゃないか?
115 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:35:50
一回一回更新って、それ自動的に更新するようにしたらええんじゃないん?
ソケット通信で良いかと。
106 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:32:55
前すれに書いたけどMMOのゲームと同じだよ
カーソル行が自分で持った行は仮想行。編集した更新を全体に反映できるかは運次第
▼ 110 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:34:21
>>106
何回もミスったら切れるぞwwwwwwwww
▼ 122 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:38:15
>110 更新失敗とはその行を取得後に誰かがその行を更新してしまった場合におきる
だから更新された最新の行を自分が編集した行の下にでも表示して再編集を即すとかの実装でおkじゃない?
134 名前:名無しさん[sage] 投稿日:2009/04/10(金) 22:42:16
現実的には1行の排他制御が出来てもプログラムって複数行で意味を成すから
予め領域の使用権をロックするとかじゃないと、プログラム開発には使えない気がする
234 名前:名無しさん[sage] 投稿日:2009/04/10(金) 23:12:18
テキストだけ同期させるのならカーソルの取り合いなどにはならない
そもそも編集位置を同期させるメリットは無い
各人好きなところをローカルバッファで編集してサーバーでテキストの同期をとればいい

211 名前:名無しさん[sage] 投稿日:2009/04/10(金) 23:05:54
その画面って、マイケルとはんさむが同じ行を編集してるが
タブで切り替えるようになっているということは
付箋のように行にくっつけて表示させてるだけってことか?
そう。行に編集案がタブとして挿入される。
671 名前:名無しさん[sage] 投稿日:2009/04/08(水) 15:15:53
Eclipseはエディタってより統合開発環境だから
もっとシンプルなエディタの研究もしとくといいぞ
viとかEmacsとかね
エディタじゃないがbashとかも一応やっといた方がいい
695 名前:名無しさん[sage] 投稿日:2009/04/08(水) 15:30:50
上級者はGUIの綺麗さとかこだわらんねん
どんだけ自分好みにカスタマイズできるかや
上級者に向けての機能も大切だけど、初心者が取っ付きやすいように
見た目もそれなりのレベルを目指したい。
792 名前:名無しさん[sage] 投稿日:2009/04/08(水) 15:58:14
やっぱり肝はエディターの仕様だな
エクリプスとまでは言わないがせめてDreamweaverくらいの機能はほしい
いかにも!
971 名前:名無しさん[sage] 投稿日:2009/04/08(水) 16:54:08
emacsもviもcuiみたいなもんだよ
windows版はともかく、unixメインだからな
34 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:20:16
大抵のエディタはマクロで色々出来る
たとえばemacs系はelispでどんどん拡張して
メーラーになったりチャットクライアントになったりWebブラウザになったりする
115 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:45:42
いじられたくなかったらロックする、ってほとんどの場合で全ロックするよね。
デフォルトでは全ロックする仕様で、特殊な場合のみロック解除できるってスタンスかな?
124 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:47:32
「基本的に開発環境では全ロックで使うが、たまに皆でそのコードを共有したい時のみにロック解除をする」っていうやり方をメインに考えてる
131 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:49:25
開発者ようモードと教育用モードでロックの方式変えるとかどう?
それはいいかもしれない
147 名前:名無しさん[] 投稿日:2009/04/08(水) 17:52:04
既存のアプリを流動的に参考として、そこから肉付け、改変、オリジナル機能
を搭載して使いやすくポピュラーにした成功例はあるから、まぁいいんじゃない
まだ先はながいが、、
151 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:53:13
「23:名前&名前 public~」
じゃなくて
「23:編集中 public~」
にして
「編集中」をクリックかマウスオーバーで
名前一覧がポップアップさせたほうがスリム
エディタの名前欄について
153 名前:名無しさん[sage] 投稿日:2009/04/08(水) 17:53:26
いや、リーダーが監視するソフトが現時点で需要があるかないかと
言われればない
もっと在宅プログラマが増えればあるかもしれないけど
ネットを介して外部に作業を依頼したことのある人なら
必要性を感じてもらえると思う(プログラム関係に限らず)
14 名前:名無しさん[sage] 投稿日:2009/04/08(水) 22:07:49
秀丸の表示シンプルになってるけどもっと色々表示できる
アウトラインとタグが結構重宝する
18 名前:名無しさん[sage] 投稿日:2009/04/08(水) 22:09:18
アウトラインは文章を解析して右側にリスト表示できるやつ
後、タグじゃなくてタブだった、ごめんorz
1:1は行と列の表示だなぁ
23 名前:名無しさん[sage] 投稿日:2009/04/08(水) 22:13:08
たとえば、検索すると検索結果が右(それ以外にもできるけど)に表示されて、クリックするとその行に飛んだりする。<アウトライン
他にHTMLのタグとかも設定とかで解析でkちえXMLエディターみたいにも使える。かもね。
@秀丸はソフトウェア開発してたら課金免除されるとかあった気がした。フリーだけかな?
