2013-07-20

Kanazawa.rb Meetup 11 で喋ってきた

「『意識高い』もくもく」なのに合計すると1時間くらい喋ってた。皆さん、邪魔してごめんなさい。

今回喋ったのは

  • できる!Meetupデザイン
  • Git小咄二題

の二つ。

特に Git の方は前回 meetup 10 でみんなが避け気味だったけど実際やるときにはできた方がいい reset –hard と rebase の話を中心にするという大胆な構成。と言ってもそんな難しい話ではない。

  • コミットオブジェクトは自身の参照先を知っている
    • だから Pro Git の図の矢印は人間の感覚の反対方向を向いている。このことは知ってないとダメ。
    • Subversion と違ってコミットオブジェクト自身が関係を持っているのでそれを組み替えることができる。これが rebase
  • rebase はコミットオブジェクトの同一性にこだわらなければ実際の pull/push をスムーズにするのに使えばいいよ
  • reset –hard は rebase の反対向きに使える
    • これを知っていればたぶん stash を使う場面はほとんどなくなる。commit 以外の作法を知るのは面倒なのでもう全部 commit しちゃえばいいよ。

今回は rebase -i は無視。

喋ったあとに軽くディスカッションして、自分はコミットオブジェクトの同一性に何もこだわっていないんだなぁということに気がついた。

diff が合っていればいいし、というか後から読みやすい diff ができた方が嬉しいし、コミットオブジェクトが同一かどうかよりも成果が出る方が重要で、

成果を出すことをためらわなくていいように便利な機能はどんどん使えばいいじゃん

と思っている。ちゃんと動くかどうかはコミットオブジェクトの同一性ではなくテストで保証すべきだ。

確かに自分が100人からの開発者の上に立つ立場であったら Git の導入にはいろいろ思うところはあるだろうなという気はしている。そして先日 Twitter の timeline で見かけた、だったら Mercurial 使えばいいじゃんという意見には今はすごく納得している。

そして 自分は 自分の膝を撃ち抜く自由が欲しい、と。

これ、Ruby に対して感じる自由と同じだなと気づいた。Rails の人たちが GitHub 使い始めたのが間違いなく大きかったと思うけど、Rubyist の志向と Git ってやっぱり相性がいいのかもしれない。

なんてことを思った週末でした。

※ 攻殻機動隊 S.A.C. 2nd GIG ネタをちゃんと盛り込めたのがいちばんの収穫だったかもしんない。

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm