Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vim Driven Learning

haya14busa
August 23, 2015

Vim Driven Learning

概要

プログラミングを初めて3年,Vim を使い始めて 2年半,Vim script で Vim プラグインを開発して 2年という僕,@haya14busa が, 「Vim駆動」でプログラミングを学んできたその経験やそこで得たものを話します.

詳細

1) プログラミング初心者でもできた GitHub スター 1000 の Vim プラグインへのコントリビューション,そしてその開発を引き継いだ話

2) 最高のVimの検索拡張プラグインを開発して得た,ツールとして大事なことやスケーラブルなモノを作るための開発方法

3) 一発アイデア系プラグインの勢い開発でワイワイ

4) underscore.js や power-assert-js といった他言語ライブラリを Vim で移植して学んだこと

5) そしてなによりも,Vim駆動学習によって得たかけがえのない人との繋がり

言いたいこと

プログラマーとしての学習の仕方,楽しみ方は人それぞれあっていいハズ. その1つとしての Vim は最高だったので, Vim もオススメだし,Vimでなくても 何か好きになれるものを見つけて開発を楽しんで行きましょう!

haya14busa

August 23, 2015
Tweet

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 17
    そして...

    View Slide

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

    View Slide

  19. 19
    言いたいこと

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 25
    学んだこと

    View Slide

  26. 26
    使ってもらえるツール
    標準や後方との互換性重点
    使ってもらうことで
    自分にとっても有益
    オブジェクト指向もどき

    拡張可能な設計を学んだり
    テストの大事さを痛感したり
    Vim scriptでもプロトタイプベースオブジェクト指向できたりたくさん学べることはある

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 36
    Vim script

    Vim

    拡張するという点

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  43. 43
    まとめ

    View Slide

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

    View Slide

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

    View Slide