Slide 1

Slide 1 text

Vim Driven Learning @haya14busa 2015/08/21-22 #yapcasia (でLTしたかった話) https://www.flickr.com/photos/93538629@N03/8507055960/

Slide 2

Slide 2 text

2 @haya14busa @haya14busa @haya14busa 自己紹介: haya14busa と申しますっ. よろしくお願いします.

Slide 3

Slide 3 text

3 Emacs 率 0 に寄与しています!!! 最近は某参加者のEmacs率がゼロのインターンで Scala を Vim で書いてます

Slide 4

Slide 4 text

https://www.flickr.com/photos/aheram/283162678 ※ This talk != 宗教戦争 @各位 仲良く. 気に入らない方は :%s/vim/emacs/g しながら聞きましょう

Slide 5

Slide 5 text

5 僕のプログラミング歴 プログラミング歴 3 年 Vim 歴 2.5 年 Vim script 歴 2 年 僕はプログラミングを Vim を通して学んできました!

Slide 6

Slide 6 text

6 GitHub の Contribution は.... GitHub での活動も....

Slide 7

Slide 7 text

7 GitHub の Contribution は.... Vim, Vim, Vim, Vim, Python, Vim, JavaScript, Vim, Scala, Vim くらいでやってます!!! (反省もある...)

Slide 8

Slide 8 text

8 There Is More Than One Way To Enjoy / Learn Programming プログラミングを楽しんだり学んだりする方法は1つじゃない. Vim という選択肢まである!! (ハズ) https://www.flickr.com/photos/myoplayer/8523372645

Slide 9

Slide 9 text

9 What I'll talk about 今日話すこと Vim 駆動学習 ということで Vim 駆動でプログラミングをやってきた話をしたい (したかったけど残念 > < )

Slide 10

Slide 10 text

10 初心者からの GitHub star over 1000 Vim プラグインへ コントリビューション そして開発の乗っ取り 1

Slide 11

Slide 11 text

11 僕がコントリビューションしようとした当時 Star 1000 くらいの人気プラグイン (機能紹介割愛) Vim のカーソル移動拡張 https://github.com/easymotion/vim-easymotion

Slide 12

Slide 12 text

12 コントリビューション / 開発引き継ぎ / メンテ して 今ではもうちょいで 2000 ヤッター > < Vim のカーソル移動拡張 https://github.com/easymotion/vim-easymotion

Slide 13

Slide 13 text

13 なにをやったのか? 当時プログラミング歴 1年で Vim script も触ったことのない僕がどうやったのか共有したいっ

Slide 14

Slide 14 text

14 いくつかの Fork に Commit されてた バグフィックスや ちょっとした機能を 取り込んでまとめた 実は本家の開発が止まっていたという背景.何もわかってなかったので簡単に merge したり

Slide 15

Slide 15 text

15 小さくて簡単 But 便利な 機能をコツコツと ちょっとオプション追加して if 分岐させて欲しい機能つけるとか (安易な分岐は後で困るけど最初は気にしない勇気!)

Slide 16

Slide 16 text

16 とにかく! 活動量による!! ゴリ押し!!! 最高!!!! 技術力なんて最初はない.ただただ活動量でゴリ押すゾイ!!! (コードの汚さ的に後で困るけど最初は気にしない勇気!) なんかsugoiやってた

Slide 17

Slide 17 text

17 そして...

Slide 18

Slide 18 text

18 みんなに 助けをもらって 教えてもらって より便利に! こんなこと1人では絶対できませんでした.感謝! (みんな -> TwitterとかLingrとかで助けてもらったり etc...)

Slide 19

Slide 19 text

19 言いたいこと

Slide 20

Slide 20 text

20 技術力 < 好きな気持ち 初心者でも案外デキる 小さいことからだってよい 誰かに助けてもらったり 誰かを助けたりできると それはとっても最高っぽい

Slide 21

Slide 21 text

21 そして 最高の Vim の検索拡張プラギン を開発して学んだもの 2

Slide 22

Slide 22 text

22 Vim のインクリメンタル検索で...

Slide 23

Slide 23 text

23 Vim のインクリメンタル検索で...全部のマッチをハイライトする! 標準では最初のひとつだけハイライトする. GitHub -> https://github.com/haya14busa/incsearch.vim

Slide 24

Slide 24 text

24 一方ロシアは 標準搭載した ちゃんとincsearch.vim 独自の拡張もあります > <

Slide 25

Slide 25 text

25 学んだこと

Slide 26

Slide 26 text

26 使ってもらえるツール 標準や後方との互換性重点 使ってもらうことで 自分にとっても有益 オブジェクト指向もどき で 拡張可能な設計を学んだり テストの大事さを痛感したり Vim scriptでもプロトタイプベースオブジェクト指向できたりたくさん学べることはある

Slide 27

Slide 27 text

27 実用的なものを 開発するだけが プログラミングではない たのしい非実用開発! 3

Slide 28

Slide 28 text

28 もちろん 必ずしも 便利なツールを 作る必要はない なにか作りたいけどネタないとかよくある.使ってると出てくるので待つ.満足しないのが大事

Slide 29

Slide 29 text

29 おもしろ系開発 ということで一発ネタ系の開発とかに走ることもある

Slide 30

Slide 30 text

30 こんなツイートがあったら....

Slide 31

Slide 31 text

31 Vim で実装するしかないな...? https://github.com/haya14busa/eew.vim

Slide 32

Slide 32 text

32 こんなツイートがあっても....

Slide 33

Slide 33 text

33 もちろん Vim で!!! ↑gif だからクリックしてみてください! https://github.com/haya14busa/niconicomment.vim

Slide 34

Slide 34 text

34 反応もらいやすい とにかく手を動かすと 意外と勉強になる そしてなにより 楽しい! 実はさっき紹介したプラグインは2つとも mattn さんからPR飛んできたりしてなるほどってなった おもしろ系開発だと...

Slide 35

Slide 35 text

35 Vim script の 外にでて 外の便利なものを Vim script に持って帰る 4

Slide 36

Slide 36 text

36 Vim script は Vim を 拡張するという点 で 最高の 言語 ではあるのだけれど 足りないものがある LTトリで発表してたKuniwak さんの vint もそうだけど便利ツールは揃ってきてもいる

Slide 37

Slide 37 text

37 underscore.js を移植して underscore.vim 作ったり underscore.js の _.chain() の仕組みとか実装してみてわかった https://github.com/haya14busa/underscore.vim

Slide 38

Slide 38 text

38 最近では... これ言いたかっただけです @t_wada さんスイマセンっ( 汗 テスト書いてないとか お前それ Vim script の前でも 同じこと言えんの?

Slide 39

Slide 39 text

39 Vim 版 power-assert を実装したりしました! ASTとか触るの初めてでめっちゃ面白かった https://github.com/haya14busa/vital-power-assert

Slide 40

Slide 40 text

40 外のモノを Vim script に持って帰ると Vim の拡張もしやすくなるし 他言語のライブラリの 実装方法や仕様も学べて よいことしかなかった 何かの言語を軸にしていても外の世界をみると世界が広がる

Slide 41

Slide 41 text

41 そうして 得られた何よりも 大切なもの. 5

Slide 42

Slide 42 text

42 そうして 得られた何よりも 大切なもの. 5 Vimmer じゃない方を含めた 他の開発者達との繋がり たくさん助けてもらったり,たくさん勉強させてもらったりしていて最高.

Slide 43

Slide 43 text

43 まとめ

Slide 44

Slide 44 text

44 There Is More Than One Way To Enjoy / Learn Programming 再掲.Vim に限らず人それぞれ好きなものをみつけて... https://www.flickr.com/photos/myoplayer/8523372645

Slide 45

Slide 45 text

45 Let's Enjoy Programming! みなさんプログラミングを楽しんでいきましょう!!! ありがとうございました!!! @haya14busa https://www.flickr.com/photos/myoplayer/8523372645