モダンプログラマまで何光年?

Webアプリ制作周辺を漂っています。はやくHackerになりたい・・・

2012-03-01

Ruby合宿2012春に参加してきた!

4泊5日のRuby合宿に行ってきました。

楽しかったことは

  • Gitでソース管理できた
  • チーム作業楽しかった

今後の課題としては

  • もっとGitを覚えたい!

初日

Matzの講演後、合宿所に移動。
以下講演で気になった点メモ

  • バブルはじけて仕事減ってサポートしかできなくて、暇だったので作ったのがRuby
  • 気分の良いプログラミング=簡潔・万能感
  • 万能感こそがプログラミングのもてる力だし、プログラミングの素晴らしいところ。社会を変える最後の最後はソフトウェアを書ける人

アイデアも持っていれば更に強い!

  • ソフトウェアを書くことで社会を変えることができる


とりあえず初日は各自「たのしいRuby」読みながら自習ということに。
あと、ソースコードの管理どーしよ?って話が出て、(運営側でSVNは建ててくれるらしい)
いくつか選択肢はあったけどずっと使ってみたかったGitを採用
私のGithubアカウントでリポジトリを作成し、全員commitできるように・・・
これが結構大変だった!

用意された環境がWindowsだったので、「msysgit」をインストール。
GUIコマンドから鍵の生成ができるので、これを利用したわけだが、なぜか接続エラー発生。
付属の「Gitbash」というCUIアプリから普通に
$ ssh-keygen
するとうまくいきました。
これを全員の端末で作業していったんだけど、後から思えばチーム用の鍵を一組用意すればよかったですね。
(公開鍵をGithub側で登録し、秘密鍵をUSBメモリとかで共有する)

そんなこんなで初日はGitの環境を整えることに大半の時間を使っちゃったのがちょっともったいなかった感じ。
次はもっとうまくやれるかなーと。

2日目

この日は朝からRuby講習。
実質講習はこの日だけという過密スケジュール。
午前中3時間でざっくりRubyでのプログラムの書き方とオブジェクト指向について。
午後4時間でDXRubyライブラリを使ったゲームプログラミングのチュートリアルを受けました。
ほんでもってホワイトボードを前にして各自がアイデアを出しながらどんなゲーム作るかネタ出し。
だんだんと方向性が決まっていって、さらにそれを具体的にしていく。
我々5班はデスマーチで失った記憶を取り戻すために「R」「U」「B」「Y」の4文字(記憶のカケラ)を集めるシューティングゲームを作ることに決定。
(この辺のアイデア出しから方向性が決まっていく過程が一番おもしろかった!)
f:id:takumi_aki:20120223152416j:plain
講師のNaCLの方から「全員がPCに向かっていると、誰が何をやっていて、どのくらい進んでいるかがわからなくなる」
「いかにみんなで共有するかが大事」ということを教わりました。
(すごーく重要)

3日目、4日目

後はひたすらイメージをコードにしていく作業。
ホワイトボードに自分達のゲームは「何ができるか」「○○したらどうなる」といった動きを付箋として貼り、
f:id:takumi_aki:20120224083033j:plain

「Doing(やってる)」「Done(終わった)」「やらないこと(時間が余ったらやる)」に分けて管理してました。
f:id:takumi_aki:20120223152350j:plain

みんなそれぞれスキルも違うので、何をどう割り振るかも結構難しいと感じました。
もっと積極的に他の人の作業に首を突っ込んでいっても良かったかな〜と。
あと、ついつい自分の作業に閉じこもりがちなところがあるのを気をつけたいと思いました。
もっと「今こういうコード書いてて、ここで困ってるんだよね〜」みたいなこととか。

5日目

発表当日!
直前までソースコード掃除してましたw
(コメント消したり、不要なファイル消したり・・)

私達の作ったゲームはGithub上で公開しています。
Windows環境にRubyを入れて、DXRubyを入れれば動くはず〜
takumi-aki/rubycamp5 - GitHub

みんなゲームのレベルがとても高く、この短い期間でよくぞ・・
いろいろとびっくりでした。
ソースコード公開しないのかしら チラッ)|ω・`)

まとめ

相当詰め込み気味の合宿でしたが、それがかえって合宿!という感じで良かったのではないでしょうか。
スキルがバラバラの5人でひとつのものを作る上での試行錯誤やあれこれが一番の醍醐味かも。
自分のしたいことを簡潔にコードで表現できるとすごく楽しいですね。もっとRuby勉強したいなぁ・・・

一緒に参加したみんな、運営の方々、講師のNaCLの方々、ありがとうございました!

2012-02-17

Vim初級者への道

Vimmerとまではいかないけれど、エディタはVim使ってます程度になるまでのメモ。

0. Open Vim

http://www.openvim.com/index.html
ここの"Tutorial"はなかなか良いです。
光っているキーを押すと、ブラウザ上でカーソルが動いたりして愉快。
(英語苦手で何言ってるのかいまいちわかんないけど・・)
インストール不要なので、とりあえずVimがどんなもんか触れてみるにはいいかも。

1. vimtutor

大体の環境でvimは入っていると思うので、端末を開いて

$ vimtutor

でおkです。
30分くらいのVimチュートリアルです。
最低限の操作は説明されているので、これやっておくとネットでVimに関する記事漁るときに戸惑わないですむような気がします。
Windows環境の場合はVim入れるとこからやんなきゃだめですが、いっそこの機会にLinux環境も作ってはいかがでしょうかw

1.5. NetHack

http://jnethack.sourceforge.jp/
最初はカーソルを移動するときの独特のキーバインドに戸惑うかも知れません。
「漠然と素振り続けるのつらい」という人もいるかもしれません。
そんな人には〜
f:id:takumi_aki:20120216221923p:plain
「このゲームはHJKLバインドを使用します」
というわけで、イェンダーの魔除けを探しているうちに自然とVim風バインドが覚えられるスグレモノです。
まずはゲームとかで慣れ親しむといいのかなと。(いわゆる死にゲーなので別の難があるかもですがw)

2.ブログ読む

基本がわかればネットの記事なんかも理解しやすいと思います。
私は↓ら辺の記事を読みました。

Vimのメモ - メモのメモ

文字コード変えるときどうするんだっけ?」
Rubyのコードだからタブ幅2に変えたいんだよね」
とかとか、あの操作なんだっけ?というときに見返すと幸せになれるかも・・


株式会社シャノン技術ブログ: vim で実践! コードリファクタリング

実際にリファクタリングしながらよく使うコマンドを説明していて非常にわかりやすかったです。
コマンドをざっと見てもいまいちどう使っていいのかピンと来ていなかった頃に読んで、ああ、こうするのか、と。


vimで複数行をコピペしたときにインデントがくっついてきてなんかスパイラルしてる感じになって超ウザイときは:a!または:i!でコマンドラインにペーストして<Esc>または . だけの行を入力してEnter押すと上手くいく - 馬鹿と天才は紙一重

タイトルのとおりですw
よくブログ記事とかコピペして、Vimで開いているファイルに貼りつけようとするのですが、インデントが階段状になって「むきいいいいいいいいい!!!!!!」ってなっているときに見つけた記事。ブクマ余裕でしたw

3. .vimrcをいじってみる

といっても何もすごいことする必要はなくて、ネットですごい人の.vimrcをコピペさせてもらうだけです。
後は自分好みにちょっとずつ変更(するために調べて)していけば、よりVimに愛着が湧くのではないでしょうか。

私が参考にしたのはこの方たちです↓

Perl Casual #02でVimについてお話しさせて頂きました - iDeaList::Writing

スライドが素晴らしいです。
初歩的なことをさらっと説明した後、.vimrcに手を加えていってますね。
Perl+notepad++で開発していた頃に読んで、F4キーからPerlチェッカ走らせて、F5キーで実行して結果を表示するバインドに感動した記憶があります。
私は多分この記事読んで、あ、Vim楽しそうだな〜と思い始めたのではないかと・・・


vimを使うべき8つの理由 - (゚∀゚)o彡 sasata299's blog

④ insertモードからnormalモードに戻るのは、Ctrl + j、改行は Ctrl + k でマッピング。あと、括弧を入力したら自動的に閉じ括弧を入力したりとか。
↑がすごく便利!ノーマルモードに戻るときにいちいちescキーまで手を伸ばさなくてもよくなります。



あと、Githubに設定ファイルを上げておくのオススメです。
UNIX系であれば)環境引っ越しても設定引き継げますし。この辺の手順はいずれまとめたいです。

一応私の.vimrcのリンクも貼っておきます。
https://github.com/takumi-aki/dotfiles/blob/master/.vimrc

まとめ

というわけで、Vimを習得するに当たって私がやってきたことや見てきた記事なんかを書いてみました。

私の場合、職場でLinuxサーバの設定をすることになって、confを書き換えるときにviを使ったのがファーストコンタクトだった気がします。
最初はえらく使いにくいエディタだなくらいに思いました。
(矢印キーで移動して、文字を削除するためにxキーを連打してたのは内緒w)
その当時はWindows環境では"notepad++"、Linuxでは"gedit"を使っていました。
しかし、Hackerな人達のブログなどを読むにつけ、段々とCUIエディタに対する憧れが募り、何度か挫折しながらようやく使えはじめているところです。

ぶっちゃけ一本道でぽんぽーんと習得できたわけでなく(そもそもまだ途上ですし)、何度も”Vim練習→挫折→距離を取る”を繰り返しました。
なので、この記事が私と同じような”Vim使いになりたいけど、最初の一歩で挫折している人”の肥しになれば幸いです。

2012-02-02

AgileShibuya meetup #05 に行ってきた

AgileShibuya meetup #05 に行ってきました。

ちょっと前に「アジャイルサムライ」を読んだことをきっかけに、自分の中にアジャイルに関する興味というかもう少し切実な、自分の(画面の外の)開発環境をよくしたいという欲求が生まれたので、ATNDでMeetupを知り、これは行きたい、と。

本日のアジャイル渋谷は、同席した方々とStand up meeting式自己紹介→LTx2→休憩→発表→自己組織化ゲーム、といった流れ。

@HIROCAST さんの発表↓がとても印象的で、いくつもの言葉が刺さった。 http://hiroki.jp/2012/02/02/2972/
(不具合が出ないように)祈りながらデプロイする〜といった話はうんうんとうなずいてしまうし、SVNのmergeでは失敗ばかりしてる OTL
耳が痛い話ばかり・・要はひよっこ以下なのですな。
そして、なかでも刺さったのが
テスト駆動開発を身につけるということは、正しく動くソフトウェアをつくれる能力を身につけるということ」
という言葉。

私は現在ユニットテストすら書けない。 遊びで書くPerlRubyのコードでちょっと試しに書いてみることはあっても、職場で使っているJavaではまったく書いたことがない。
「テストは書きたいけど、どこから手をつけたら・・」
「毎日タスクこなすだけで精一杯で・・」
自分の中でいろいろ言い訳はあるけど、そんなことはいいからとりあえず書けよ、と。
そんな気持ちになりました。

・・・ しかし、結局こうした気持ちもしばらくすれば日々のタスクに追われて忘れてしまう。
そういったことは何度もあった。
残念ながら私には何もしなくてもむらむら湧いてくるほどの向学心はないみたい。
だけど、勉強会やコミュニティに参加すると、いろいろな刺激を受け、勉強したくなる程度にはあるようだ。

だから継続的(Iterative)に勉強会やコミュニティに参加し、刺激を受け続けたいなぁ、と。
そして、できれば自分もアウトプットしていきたい。

とりとめのない内容ですが、そんなことを考えました。

:最後に
私は勉強会とか、「全くわからないよりはある程度わかるようになってから参加しようか・・」とつい思ってしまうのですが、やはり「現在できないけど興味はある!やりたい!」って人こそ行ったほうがいいと思いました。
スゴイ人を間近で見る機会でもありますしね。
ともあれ初のアジャイル渋谷はMeetup、飲み会ともに本当に楽しかったです!
唯一の心残りは終電の関係上〆の鍋を食べそこねたことくらいですw
ぜひまた参加したいですね。

2011-10-17

初めてのYAPC::ASIA

YAPC::ASIA Tokyo 2011に行ってきました!


ーー前夜祭ーー

普通に飲み会でした!
18時過ぎについたら、すでにあちこちで談笑の輪ができてました。
最初は気後れしてしまい、なかなか話しかけられなかったのですが、同じ初参加っぽい人つかまえて職場の悩みなどを語り合いました。
”先端の技術を学びたいし、使いたいけど、日々の業務はレガシーコードに埋もれがち”、”いまの自分のやり方が良くないことはわかっているけど、どう変えていったらいいの?”という悩みは私だけではないみたいですね。
「ここから一歩を踏み出したいですよね〜」って話になりました。

帰りに余ったビールをお土産にいただいてゴキゲンw


ーー1日目ーー

CPANモジュールガイド編集後記+α」

主に「CPANモジュールガイド」からこぼれたモジュールのお話でした。

WAF「Danser」ぜひ使ってみたいですね。

ネタはいろいろあるので可能なら続編も、ということらしいので首を長くして待たせていただきます。
あと本にサインしてもらえました!

ーー

ATNDで「東工大の芝生で Perl Cafe in YAPC」にJOINしたものの、うっかりノーパソの充電を忘れたためうろうろ・・後ほど無事合流できました。

みんなで輪になって昼食取りつつ雑談・・・後なぜかハンカチ落としをやることにw
近藤先生が何度も走らされていてかわいそうでした。

ーーー

perl meets beats」
techno-catさんの発表はとてもcoolで格好よかった!
1と0の配列からMIDIファイルを出力!
よくまぁ、思いつくものです。脱帽です。

ーーーー

スイーツコーナで「ParuMon」と「Acme大全2011」入手。
「ParuMon」はあっという間に売り切れてました。
Acme大全2011」は山積みでした。(おもしろい本だと思うのですが・・)

ーー懇親会ーー

「初めてのPerl」翻訳者の近藤先生に挨拶できたり、
ParuMonをプレイしたり、makamakaさんにサインをもらったり、なんかもういろいろ。
あっという間すぎる2時間でした!

行く前は、YAPCってGeekな人たちが集まってPerlのコアな話をしているなんかすごい場所でしょ?って思ってたんです。
でも、行ってみたら(もちろん高度でよくわからない部分もあったけど)ネタLTあり初心者向けの発表ありで、あと、みなさんめちゃくちゃノリのいい方たちばかりで、話かけたら気さくに答えていただけました。
PerlMongerになりたいけどいまはまだ匍匐中、、、でもいつかはこの輪の中に入りたい!自分もなにか作りたい!という気持ちにさせてもらえました。

ーーーーー

所用のため2日目は参加できなかったのがとても残念でした。
来年はぜひ3日間フルに参加しらいです。

ーーまとめーー

学生無料はありがたかった!(本当にありがとうございました)
普段ブラウザ越しにしか見ることのできないPerlMongerたちに会えた!
懇親会は楽しかった!食べ物もおいしかった!
すごい人たちがいっぱい!
すごくなりたい人たちもいっぱい!
プログラミングに対する”熱”をもらえました、来年はなんらかのかたちでお返ししたいなぁ
全然技術的にたいしたことない、自分なんかが行っていいのだろうか?と迷っていたけど、行ってよかった!と思いました。

むしろ私みたいな”今はレガシーな書き方しかできないけどいつかは・・・”と思う人こそ行くといいかもですね、”いつか”の距離がちょっと縮まる気がします。とりあえずコードを書きたくなります。

スタッフ&発表者の方々本当にありがとうございました!お疲れ様でした!

2011-10-17

YAPC::Asia Tokyo 2011でカードゲーム買ってきた

YAPC::Asia Tokyo 2011に参加してきました!

楽しさてんこ盛りのイベントで何を書けばいいのか迷いますが、とりあえずスイーツエリアで販売されていたPerl Monger Training Card Game「ParuMon」をご紹介します。


どーん!!
f:id:takumi_aki:20120218174031j:plain
表紙には「迫り来る納期の攻撃に耐えながら、CPANモジュールを駆使してプロジェクトを完遂しよう!」
・・・とあり、怪しさ満点。(制作makamakaさん)


プレイヤーはPerlMongerに扮し、毎ターンカードを引いたり、HP(Hack Point)を消費してCPANモジュールをuseすることでプロジェクトを進捗させていきます。
(あ、あと第1ターンに「use strict;」と宣言しないとペナルティがあります)
対象年齢は”Perlに興味があるお年頃+”となっており、作者いわく「6歳くらいからですかね(笑)」


f:id:takumi_aki:20120218174038j:plain
開けるとこんな感じです
DBI、まだ出てないのか~」、「Calyst依存厳しいよね~」とか、「ぐげぇえ まさか納期がこの日だったとはぁ!!」とか言いながらカードゲームに興じるうちに、CPANモジュールと依存関係について学べるというスグレモノ!
ちなみに全カード中約3分の1を占める「現場カード」は納期に襲われたり、仕様が追加されたりとロクでもないものばかり・・
実際の開発現場の阿鼻叫喚が忍ばれますw


「新人研修にもぴったり!」という触れ込みですが、かなりカオスな研修になりそうな気が・・・
そんな研修があったらぜひ参加したいですがw


1日目の懇親会で他の参加者の方とプレイしてみたのですが、カードを引くときは「出社!」と叫ばなくてはいけないというルールがあり、PerlMongerの方々ビール片手に「出社!」「出社!」と叫びながらカードを引くという異様な光景にw

ともあれこのゲーム、昼休みのPerl布教用に、またコミュニティの席での話題作りに、うってつけのアイテムではないでしょうか?
また一歩Perlの輪も広がりますよね〜(ひとりソリティアしつつ・・)