BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース GitHub が Web ベースの編集・コミット機能を追加

GitHub が Web ベースの編集・コミット機能を追加

原文(投稿日:2011/08/16)へのリンク

GitHub の新機能:リポジトリ内ファイルの ブラウザ上での編集とコミットが可能になった。コミット前に差分をプレビューすることもできる。

この機能はログイン中の GitHub ユーザに対してボタンとして表示され,"編集(Edit)" と "ファイルの分岐と編集(Fork And Edit this file)" の2バージョンがある。プロジェクトのメンバであれば直接ファイルを編集,コミットできるが,リポジトリに登録されていないユーザには "ファイルの分岐と編集" ボタンが表示されて,プロジェクトが分岐された後にエディタでファイルが開かれる。

エディタ機能は ACE エディタを使用して実装され,構文のハイライト表示や行のラッピングなど多数の機能をブラウザ上で実現している。ACE は Cloud9 IDE など他のプロジェクトでも採用されているエディタで,Mozilla の Bespin/Skywriter プロジェクトによる Canvas をベースとした編集コンポーネントの後継 に当たるものだ。

ACE は2010 年後半に公開された。テキストコンポーネントの描画に Canvas を使用する旧 Bespin/Skywriter や,DOM 要素を編集可能にする contentEditable 属性を使用する CodeMirror 1 などのエディタに対して,ACE では別のアプローチを採用している。
ACE は現在表示されているテキストをHTML 文字列としてアセンブルし,それを DOM 要素のコンテントとして設定することによって自身を描画する。編集操作だけでなく,スクロールやカーソル移動についてもすべてこの処理を行っている。非効率なようにも思えるが,実際はそうではない。最近のブラウザでは,この種の DOM 更新が極めて高速に動作するからだ。
CodeMirror 1 の後継である CodeMirror 2 も,これと同じようなアプローチを採用している。これについては CodeMirror の開発者である Marijn Haverbeke 氏が,contentEditable の使用を止めたことに関する詳細な説明を書いている。さらに contentEditable を利用する上で現在問題となっているのは,モバイルブラウザ上で,編集可能なエレメントに対するオンスクリーン・キーボードの表示が正しく行われないことだ。ただしこれについては,Eclipse Orion プロジェクトなどで回避策の検証が行われている

このような機能を実装したコードホストは GitHub が最初ではない。今年始めには Google Code がブラウザベースのエディタを追加して,ソースリポジトリ内のファイル編集をサポートしている。

このような編集機能は,これまでは GitHub の GitHub For Mac アプリケーションや JGit ベースの EGit for Eclipse など,他の Git クライアントで提供されていた。前述した Cloud9 のように GitHub リポジトリへのポイントを含んだタイトな Git 実装を装備していて,すぐに作業を始められるような Web ベース IDE を考えると,標準の Git クライアントと IDE とを区別するラインは,ますます不鮮明なものになる。Eclipse の Web ベース IDE である Orion も JGit/EGit ベースの Git サポートを装備していて (Orion のサーバコンポーネントとして実装されている),最新の Orion 0.3 マイルストーンの追加機能 に見られるように,その内容も着実に向上している。

この記事に星をつける

おすすめ度
スタイル

BT