SlideShare a Scribd company logo
エディタ戦争のお話エディタ戦争のお話
nasa9084nasa9084
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
1 / 40 2016年01月15日 20:07
自己紹介自己紹介
名前
北村壮大 : Masahiro Kitamura
HN : nasa9084
所属
北海道大学
工学部
情報エレクトロニクス学科
コンピュータサイエンスコース
情報認識学研究室
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
2 / 40 2016年01月15日 20:07
えでぃたえでぃた
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
3 / 40 2016年01月15日 20:07
エディタとはエディタとは
テキストエディタ(英語:text editor)とはコンピュータで文字情報(テキスト)のみのファイル、
すなわちテキストファイルを作成、編集、保存するためのソフトウェア(プログラム)である。
一般に、文字情報の入力、削除、コピー、貼り付け、検索、置換、整形などの機能を備えている。
Microsoft Windowsのメモ帳や、Mac OS Xのテキストエディット、UNIXのvi、Emacsなど、
多くのOSやデスクトップ環境に最初から装備されている。
- Wikibedia より -
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
4 / 40 2016年01月15日 20:07
エディタの種類エディタの種類
スクリーンエディタ
emacs, vi, Sublime Text, Atom, …
ラインエディタ
ed, ELDIN
ストリームエディタ
sed, awk, perl, python, …
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
5 / 40 2016年01月15日 20:07
IDE (統合開発環境)IDE (統合開発環境)
統合開発環境(とうごうかいはつかんきょう)、IDE (Integrated Development Environment) は、
ソフトウェアの開発環境。従来、コンパイラ、テキストエディタ、デバッガなどがばらばらで
利用していたものをひとつの対話型操作環境(多くはGUI)から利用できるようにしたもの。
最近のIDEには、GUIアプリケーション開発のための迅速なプロトタイピング (RAD) が可能なものが多い。
統合開発環境を使うことによって、巨大かつ複雑なソフトウェアでも、作成者に負担をかけることなく
開発することが可能になる。
- Wikipedia より -
→ MS Visual Studio, Xcode, Eclipse, NetBeans, IntelliJIDEA, …
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
6 / 40 2016年01月15日 20:07
戦争?戦争?
エディタ戦争(Editor War)とは、プログラミングを行う人々(特にハッカー文化に属する人々)の間で続いている、
どのテキストエディタが一番よいかというテーマの論争である。その中でも二大陣営といえるのは、vi愛好派とEmacs愛好派である
ハッカー文化においては、愛好するソフトウェアを宗教的狂信とも言える尊敬を持って扱う伝統があり、
そのようなソフトウェアの中でもテキストエディタはもっとも一般的である。
自らの選択したエディタが最善であると信じるグループ間で数々の論争(フレーム)が発生してきた。
- Wikipedia より -
→In short:: プログラマ界でのきのこたけのこ戦争
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
7 / 40 2016年01月15日 20:07
今日のお話今日のお話
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
8 / 40 2016年01月15日 20:07
エディタをさらっと紹介エディタをさらっと紹介
登場するエディタ
emacs
vi/vim
Sublime Text
Atom
Brackets
nano
今回は本当にさらっと
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
9 / 40 2016年01月15日 20:07
emacsemacs
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
10 / 40 2016年01月15日 20:07
どんなエディタ?どんなエディタ?
主としてUNIX環境・CLI環境で使われる
GUI環境もある
OSSで、多種の実装がある(emacsen)
GNU Emacs
NTEmacs
エディタ戦争の二大陣営の一つ
バッファという概念でファイルを操作
emacsがあればPC上で行うことは大体できる
ブラウザも標準搭載
emacs lispで拡張・設定
テーマ機能
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
11 / 40 2016年01月15日 20:07
バッファバッファ
emacs上でのファイルのコピー
他のエディタでいうところのウィンドウやタブ
ファイルだけではなくいろいろなバッファがある
ディレクトリ
メッセージ
いわゆるウィンドウは「フレーム」と呼ぶ
「ウィンドウ」はフレームの中でのバッファ表示領域
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
12 / 40 2016年01月15日 20:07
キーボードから手を離さず作業できるキーボードから手を離さず作業できる
多彩なキーバインド
いわゆるキーボード・ショートカット
emacsでのすべての動作を個別に割り当てることができる
意味ベースのキーバインド
キーボードの配列に依存しない
例
Ctrl-f : 一文字右へ(Front)
Ctrl-n : 一行下へ(Next-line)
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
13 / 40 2016年01月15日 20:07
emacs lispによる設定emacs lispによる設定
独自プログラミング言語emacs lispで設定を記述
→エディタとしての基本的な機能も設定ファイルで変更できる
~/.emacs.d/init.elに設定を書く
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
14 / 40 2016年01月15日 20:07
設定の例設定の例
改行の動作
カーソル位置によって改行の動作を変更
キーバインドの設定
キーバインドはすべて変更可能
→キーバインドを変更可能
プレフィクスキーを使用することで無数のキーバインドが設定可能
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
15 / 40 2016年01月15日 20:07
emacs lispによる拡張emacs lispによる拡張
emacs lispを使うことでエディタの機能を拡張できる
パッケージシステムも搭載
→他の人が作った拡張を利用可能
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
16 / 40 2016年01月15日 20:07
拡張の例拡張の例
補完機能
company.el
文法チェック
�ycheck.el
emmet
emmet.el
命名辞書
codic.el
定型文入力補助
yasnippet.el
メールクライアント
mew.el
gitクライアント
magit.el
twitter
twittering-mode.el
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
17 / 40 2016年01月15日 20:07
vi/vimvi/vim
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
18 / 40 2016年01月15日 20:07
どんなエディタ?どんなエディタ?
主としてUNIX環境・CLI環境で使われる
GUI環境もある : gvim
最近だと"vi"コマンドでvimが起動することが多い
エディタ戦争二大陣営の一つ
UNIXの設計思想
do one thing, and do it well
モードという概念でファイルを操作
軽量・高速に動作
大体のUNIX環境で標準搭載
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
19 / 40 2016年01月15日 20:07
モードモード
vi/vimではモードを行ったり来たりしながらファイルを編集する
コマンドモード
コマンド入力をするモード
カーソル移動
hjklで移動
コピー
ペースト
保存
編集モード
ファイルを編集するモード
普通に文字が打てる
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
20 / 40 2016年01月15日 20:07
.vimrcによる設定.vimrcによる設定
シェルの設定ファイル同様、~/.vimrcに設定を書くことでカスタマイズ可能
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
21 / 40 2016年01月15日 20:07
vim scriptによる拡張vim scriptによる拡張
独自スクリプト言語vim scriptを使うことで拡張が可能
プラグイン管理システムも存在(NeoBundle)
emacsとは違い自分でインストール
安定感はないとかあるとか
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
22 / 40 2016年01月15日 20:07
拡張の例拡張の例
補完機能
neocomplete.vim
文法チェック
syntastic
emmet
emmet-vim
定型文入力補助
Neosnippet.vim
git補助
fugitive.vim
twitter
TwitVim
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
23 / 40 2016年01月15日 20:07
Sublime TextSublime Text
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
24 / 40 2016年01月15日 20:07
どんなエディタ?どんなエディタ?
web系で最近流行のエディタ
綺麗な見た目が特長
タブ型のGUI
Pythonで書かれている
拡張もPythonベース
シェアウェア(体験版が無制限で使用可能)
$59 ≒ ¥6958
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
25 / 40 2016年01月15日 20:07
JSONによる設定JSONによる設定
設定はJSONで書く
多言語でも使われるので慣れてればすぐ書ける
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
26 / 40 2016年01月15日 20:07
Pythonによる拡張Pythonによる拡張
プラグインシステムを導入すると拡張できる(Package Control)
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
27 / 40 2016年01月15日 20:07
拡張の例拡張の例
補完強化
All Autocomplete
文法チェック
SublimeLinter
行末空白ハイライト
TrailingSpaces
ベンダープレフィクス調整
Autopre�xer
emmet
Emmet
git補助
Git
twitter
Sublime Tweet
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
28 / 40 2016年01月15日 20:07
AtomAtom
GitHub発の新エディタ
綺麗なGUI
Chromiumベース
electron
OSS
動作はまだまだだが成長が早い
大容量ファイルは苦手
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
29 / 40 2016年01月15日 20:07
ユーザインターフェースのカスタマイズユーザインターフェースのカスタマイズ
ChromiumベースなのでJS、CSSでカスタマイズ可能
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
30 / 40 2016年01月15日 20:07
パッケージシステムパッケージシステム
パッケージシステムを標準搭載
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
31 / 40 2016年01月15日 20:07
拡張の例拡張の例
文法チェック
Linter
Grunt
grunt-runner
Gulp
gulp-control
twitter
elastic-twitter-stream
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
32 / 40 2016年01月15日 20:07
BracketsBrackets
Adobe謹製のエディタ
フラットなGUI
デフォルトで日本語対応
フリーソフトウェア
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
33 / 40 2016年01月15日 20:07
ホバービューホバービュー
画像ファイル文字列の上にカーソルを乗せると画像がポップアップ
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
34 / 40 2016年01月15日 20:07
ライブプレビューライブプレビュー
HTML/CSSをブラウザでリアルタイムに結果表示
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
35 / 40 2016年01月15日 20:07
クイックエディットクイックエディット
HTML上でタグに適用されているスタイルをその場で編集
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
36 / 40 2016年01月15日 20:07
拡張機能マネージャー拡張機能マネージャー
デフォルトで搭載
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
37 / 40 2016年01月15日 20:07
拡張の例拡張の例
文法チェック
Interactive Linter
emmet
Emmet
定型文入力補助
Brackets Snippets
git補助
Git
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
38 / 40 2016年01月15日 20:07
nanonano
CLIエディタ
ほぼメモ帳並みの機能プラスアルファ
正規表現検索
シンタックスハイライト
画面下部に操作方法
最近のLinuxだと結構入っている
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
39 / 40 2016年01月15日 20:07
THANK YOU!THANK YOU!
エディタ戦争のお話 file:///mnt/A2C043EDC043C66F/Users/owner/Dropbox/digi-poro/#3/...
40 / 40 2016年01月15日 20:07

More Related Content

More from nasa9084

webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめる
nasa9084
 
Web Environments
Web EnvironmentsWeb Environments
Web Environments
nasa9084
 
Efsta student session
Efsta student sessionEfsta student session
Efsta student session
nasa9084
 
LT!
LT!LT!
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQL
nasa9084
 
DIVE INTO /regexp?/
DIVE INTO /regexp?/DIVE INTO /regexp?/
DIVE INTO /regexp?/
nasa9084
 
HTTPのお話
HTTPのお話HTTPのお話
HTTPのお話
nasa9084
 
Introduction of Programming language
Introduction of Programming languageIntroduction of Programming language
Introduction of Programming language
nasa9084
 

More from nasa9084 (9)

webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめる
 
Web Environments
Web EnvironmentsWeb Environments
Web Environments
 
Efsta student session
Efsta student sessionEfsta student session
Efsta student session
 
LT!
LT!LT!
LT!
 
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQL
 
DIVE INTO /regexp?/
DIVE INTO /regexp?/DIVE INTO /regexp?/
DIVE INTO /regexp?/
 
HTTPのお話
HTTPのお話HTTPのお話
HTTPのお話
 
Introduction of Programming language
Introduction of Programming languageIntroduction of Programming language
Introduction of Programming language
 

エディタ戦争のお話