:
今年も無事開催することが出来ました。昨年は午後だけのイベントでしたが今年は午前からの開始でボリュームアップしての開催です。 今回のテーマは「日常」。普段から Ruby をどう使っているのか、どんな工夫をしているのかを感じていただければと思います。
:
岡山 Ruby 会議の最初のセッションは Okayama.rb を主催し、るびま編集者としても活躍されている小西雅也さんです。「私と Ruby の付き合い方」というタイトルで、普段どのようなツールや開発環境を使って Ruby を楽しんでいるかを語っていただきました。
:
前回の岡山 Ruby 会議に続いて、テストについてのお話を聞かせてくれる株式会社リゾームの山本さんの講演です。
山本さんは 2011 年 7 月に開催された RubyKaigi 2011 に参加してテストに対する意識が高くなり、担当しているプロジェクトに自動テスト環境を導入して開発を行っていました。しかし、プロジェクトが進行するにつれてテストコードが膨らんでしまい、テストに時間がかかるようになってしまいました。
「テストが遅いので、ローカルのマシンでテストを行うと開発の妨げになる……」。
山本さんはテストが開発の妨げになることを防ぐために、次のことを始めたと話しました。
これでしばらくは快適に開発が行えるようになりました。しかし、さらにプロジェクトが進行するとテストコードがもっと膨らんで、またもテストに時間がかかるようになりました。そこで、山本さんは複数マシンで並列にテストを実行することを考えました。Jenkins で並列にテストを実行する運用のために、次のことをしっかりと決めておかないといけないと話しました。
Jenkins のビルドパイプラインについてはデモ画面を見せながら、山本さんが取り組んできたことをわかりやすく説明しました。また「全てのテストが同時に終わるようにテストコードを分割する」「全てのテストが通っていないとリリース用ブランチに push できないようにする」と並列にテストを行うときに大事になる考えを話しました。
問題に遭遇するたびに改善策を探していき、「快適に開発が行えるようにしたい」という想いが伝わってくるお話でした。Ajax のタイムラグで時々失敗してしまうテストがある問題や、複数のテストが同時に実行されてときに結果が混ざって見にくくなってしまう問題が残っているので、今後はそれらを改善したいと話しました。
:
「Ruby を知って、人生が変わった」。
そんな発言で場を沸かせた、専門学校ビーマックス学生の行森さんの講演です。
行森さんは中学生の頃に学校で Linux を触っているところを先生に見つかり、「中高生 Ruby プログラミング講座」というイベントに出てみるように勧められ、Ruby に興味を持つようになりました。それからは東京のイベントで講演をしたり、オープンスクールでプログラミング講座を開いたりと、活発に行動していたそうです。オープンスクールでは四則演算のプログラムを作る講座を開いたり、アルゴリズムについての話したり、ライブコーディングをしたり、どうすれば参加者がプログラミングに興味を持ってくれるのか考えて教えてみましたが、思うようにいかないことが多かったそうです。最近は「”まつもとさん”と言う日本人が作ったプログラミング言語だよ」と Ruby について簡単な説明をして、自分で作ったゲームを遊んでもらう方法がうまくいっていると話しました。また、このような活動を続けているうちに、家族のコンピュータに対する見方が良くなったそうです。Ruby で「日常」を変えようとしている姿は、参加者たちに大きな印象を残したでしょう。
学校で長期休暇を楽しく過ごせるアプリを作る課題が出されて、Ruby でゲームを作ろうと考えていたそうですが、課題で使用する言語が Java に決められてしまったそうです。「岡山 Ruby 会議で Ruby のことを話してきた」と教授に熱意を伝えて、「日常」で Ruby が使える機会を増やしていただきたいと思います。
:
遠路、大阪から来ていただきました。株式会社アジャイルウェアで受託開発をされている川端さんの発表です。 川端さんは元々 Java エンジニアで、アジャイル開発を実践、その経験から書籍の執筆もされたそうです。2
そして使う言語が Java から Ruby に変わったときに衝撃を受け、自分はプログラマとしてまだまだひよっこだと感じたそうです。 そんな Ruby で受託開発を始めて、2012 年に株式会社アジャイルウェアを設立。 川端さん自身はここ 1 年くらいプログラミングをしておらず、経営業務と営業がメインとの事です。 本日は、Rubyist と一緒に仕事をしたというお話をしていただきました。
開発事例の紹介では、いくつかのプロジェクトの事例を発表されたのですが、どのプロジェクトも競合が居るなかで受注を獲得できた決め手は短納期や、低コストだったそうです。Ruby による生産性の高い開発が武器になっているんだなと感じました。
また、開発の生産性が高まると色々な変化が出たそうです。 ドキュメントをほとんど、納品物としても作らくなったとのことです。ドキュメントを作成・修正して意識合わせするよりもプログラムを作成・修正して意識合わせする方が早くなり、プログラミングが要件定義そのものとなったとのことです。 そしてこのようなスタイルで開発を進めているので要件を細かく伝えなくても良くなるようになったそうです。
次にテスト駆動開発はできないというお話もしていただきました。テスト駆動しようと思うと、要件が最初にある程度決まってないと出来ないのですが、細かい要件を聞かずにソフトウェアを作りながらすすめるため、頻繁に変更も発生することからテストを最初に書いて開発するという流れにならないとのことです。
発表後にもたくさんの方が質問されており、Ruby でのアジャイル開発の実際の事例が参考になったかたが多いのではと感じました。
:
PHP 界で有名な大垣さんがなんと岡山 Ruby 会議に登場です。セキュリティの専門家でもある大垣さんに Rails アプリのセキュリティ対策について語って頂きました。
まずはじめに、Rails に限らない一般的な IT セキュリティのお話をして頂きました。 IT セキュリティの 3 要素として機密性・完全性・可用性の 3 つがあげられます。
よくある勘違いとして「セキュリティは完璧でなければならない」という意見がありますが、リスク管理を行い許容できるレベルまでの対策を行うことが大切とのことです。そのための指標として法律や標準、ベストプラクティスにならうことが重要です。
Rails4 から採用された仕組みとして Strong Parameter があります。Controller でバリデーション3を行うことで、Model よりも入力に近い場所でチェックを行うことが可能となりました。これは Model でのバリデーションと組み合わせて使用することで「多重のセキュリティ・フェイルセーフ」になりより強固なアプリケーションを構築することができます。
クロスサイトスクリプティングの対策になります。 JavaScript インジェクションは侵入経路が多岐にわたる上、クライアントで実行されると全くログに残らないため非常に厄介です。基本的には Rails 標準の Helper を使うことが大切とのことです。
Rails4 も Rails3 と同様の CSRF 対策が施されています。ただおかしなリクエストが来た時の挙動が変更になっているので注意が必要とのことです。
またセッション ID はログイン後に reset_session でリセットすることが望ましいそうです。
Rails で Web アプリケーションを作る上で次のサイトを必ず参照して欲しいとのことです。
一般講演の終了後に、希望者が LT を行う時間が設けられました。今回の岡山 Ruby 会議では 9 名の方が発表されました。
倉敷市で仕事をされている山本由佳里さんは、島根県で生まれ育った父の影響で島根県が推進しているプログラミング言語である Ruby に興味を持つようになり、書籍などで勉強されていたそうです。また、父が役員をしている株式会社システム工房エムがまつもとさんが勤務されているネットワーク応用通信研究所(NaCl)と関わりがあるそうで、Ruby により興味が持てるようになったそうです。仕事では Java を使った開発を依頼されて、「Ruby を使いたい!」と思いがあっても Ruby を使えない場面が多いそうですが、「Ruby が使いたいならば Ruby を使える仕事を待つのではなく、自分で積極的に Ruby を使っていくのが良い。」と話されました。
画像処理を行うライブラリである PureImage について @keisuke_n さんが発表されました。PureImage には文字やグラフの描画をはじめとする様々な機能がありますが、Rubyist にとって何よりも嬉しいと思うことは Ruby の標準ライブラリだけで作られていることです。「Ruby の標準ライブラリは適度にパフォーマンスチューニングされているので、標準ライブラリだけで作れば早い処理ができるようになる。」という考えを話し、標準ライブラリだけを使ったピュアなコードを書く方法を参加者たちに勧められました。
2013年8月31日に大阪で関西 Ruby 会議 05 が開催されます。@muryoimpl さんは招待講演者として Rubyist として活躍している方を呼んだことや「survive」という開催テーマについて話し、参加者たちが関西 Ruby 会議 05 に興味を持つように、楽しく宣伝されました。
Ruby の Proc オブジェクトで関数合成や引数の入れ替えをできるようにする lambda_driver という gem4 を @razon さんが紹介されました。関数型プログラミングが好きな Rubyist は多いので、この gem に興味を持った方は多いのではないでしょうか。
mikutter という Ruby で書かれた Twitter クライアントを @kasoku_ksk さんが紹介されました。@kasoku_ksk さんは 「プラグインが自由に作れること」や「Ruby のコードを実行できること」などの mikutter の利点を話し、多くの人に使ってもらいたいという気持ちをアピールされました。
レガシーブラウザに対応させるときの苦労を @LuckOfWise さんが発表されました。@LuckOfWise さんが関わっているWebアプリケーションでは、レガシーブラウザ専用のWebページを用意し、コードを分割することでレガシーブラウザに対応させたそうです。しかし、メンテナンスの手間が増えてしまうので良い方法とも言えません。@LuckOfWise さんは「レガシーブラウザ対応は断りましょう。」と話されました。
Okayama.rb に初めて参加し、そこで感じた楽しさをイワタさんが発表されました。Okayama.rb はプログラミングが好きな人たちが岡山市のファミリーレストランに集まってワイワイ話したり、コーディングをしたりするコミュニティです。イワタさんは Ruby 初心者ですが、Ruby の開発環境を整えるところから話を聞くことができたそうなので、「初心者でも楽しめます。」と話されました。
Kotlin という JetBrains 社が開発したプログラミング言語を @patorash さんが紹介されました。Kotlin は Java の思想をベースにして作られた言語ですが、Rubyist でも読み易いコードが書けるそうです。
FizzBuzz を実装する中で Ruby の機能を学べると小西さんが発表されました。小西さんは Fixnum クラスに新しいメソッドを追加して FizzBuzz を実装する方法(オープンクラスによる実装方法)や、Ruby 2.0 から加わった Module#refine と main.using を使う方法を紹介されました。
昨年と同じ Ryoutei 座スタジアムでの懇親会で、会場のプロジェクタを活かしてのLT大会を開催しました。 飛び入り参加OKのLT大会で、大変盛り上がった懇親会となりました。