ESM アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

Ruby X Elixir Conf Taiwan 2018 に参加しました

こんにちは。@hisasと@swamp09 です。

4/27 - 4/28 で行われた Ruby X Elixir Conf Taiwan 2018 に、弊社から @koic@junk0612@hisas@swamp09 と、引率の @kakutani の5名で参加しました。

4泊5日の日程で、旅費はアジャイル事業部の経費から出してもらいました。今日はその様子をお伝えします。

4/26 (前日)

前泊するため、台湾に移動しました。 5xRubyさんのオフィスでPre Partyに参加しました。

f:id:swamp09:20180517181056j:plain

@junk0612 が、前回の RubyConf Taiwan 2016 で 5xRubyさんのオフィスに書き込んだ 「小林純一(新卒氏)」を「小林純一(旧新卒氏)」にアップデートしていました。 f:id:swamp09:20180520222819j:plain

4/27 (カンファレンス 1日目)

会場入りです。

f:id:swamp09:20180517181128j:plain

1日目は@matz のキーノートで始まりました。 Ruby after 25 years というタイトルでRubyの歴史と未来の話をされていました。 Ruby 3x3 に向けた大きな機能としてMJIT、Guild、Steepが動いており、 それぞれの実装者である@k0kubun@_ko1@soutaroもスピーカーとして台湾に来ていたため会場で紹介されていました。 f:id:hkame6926:20180517190536j:plain

この日の他のセッションで印象に残ったのは、@vzvu3k6k の AST Tools for Your Daily Development でした。 Rubyソースコードをパースするツールの説明の後、RuboCopのCopをライブコーディングで作成していました。 ライブコーディングだったので詰まってしまうところもあり少しハラハラしましたが、観客からのフォローもあり問題なく進行していました。 資料: https://twitter.com/vzvu3k6k/status/989777032199335942

4/28 (カンファレンス 2日目)

@a_matsuda のキーノートで始まりました。 各フレームワークの速さを比較しているGitHubのリポジトリで、Railsはもっとも遅い結果となっていたのは衝撃でした。 松田さんは遅いと言われているRailsを速くするため、遅くなっている原因を探り、パッチを当ててパフォーマンスを改善していました。 実際のパッチはこれらなどです。Reduce extra object creations in TaggedLoggingDon't try to destoy the given string via method argumentReduce String allocations when building Action View tags 松田さんがスライドで紹介したように会場にいた我々もうアプリケーションの遅い原因を探り改善できます。もしその原因がフレームワークにあればそちらにパッチを当てて速くしていきたいところです。 f:id:swamp09:20180521131042j:plain

@mrknワークショップでは、Rubyのデータツールについて学ぶことができました。 Rubyのデータツールの現状についての説明の後、Jupyter Notebookでプログラムを動かしながら進行しました。 タイタニック号の乗客のデータを使って、データフレームの扱いを学んだり、PyCallを使ってRubyからPythonのコードを動作させたりしました。 最後にMNISTというデータセットを使って、数字を手書きした画像を深層学習で解析しました。 機材トラブルがあり、少し時間が足りずに飛ばされた部分もありましたが、セッション3コマ分の充実した内容でした。

セッションの合間にTea Breakがあり、お菓子とコーヒーなどが振舞われました。 その際にスポンサーブースではしゃぐ @junk0612 氏 f:id:swamp09:20180520224807j:plain

カンファレンス終了後に、台湾の Ruby フレンズに夜市を案内してもらいました。すごく人が多く混雑していて、活気がありました。 f:id:swamp09:20180517181322j:plain

4/29 (最終日)

最終日は鼎泰豊で台湾料理をいただき f:id:hkame6926:20180517185713j:plain

世界三大博物館の国立故宮博物院を観光しました。 f:id:swamp09:20180517181336j:plain

まとめ

台湾に初めて行きましたが、観光に行く日本人の方が多いからなのか、街中にカタカナが多く見られたのが印象的でした。

Ruby X Elixir Conf Taiwan 2018のスタッフのほとんどが5xRubyの方々でした。大変ありがたく思うと同時になぜ他の会社の人も参加しないのか中の人に聞いてみたところ、台湾ではRubyで仕事をしている会社がまだ多くないからだそうです。 今回のようなカンファレンスを通じて台湾でRubyが採用される事例が増えていくといいなと思いました。

We are hiring

永和システムマネジメントでは、アジャイルな開発を一緒にやってくれるRubyistを募集中です。 今回の旅費は全部会社が出してくれました!海外のカンファレンスにもお金を心配することなく参加することができます。興味のある方は、Wantedlyからぜひ連絡をください。

Rails / OSS パッチ会 2018年5月のお知らせ

Rails / OSS パッチ会を2018年5月7日(月)に開催します。

この会をひとことでいうと、日頃のお仕事で使っている Rails をはじめとする OSS への upstream にパッチを送る会です。

会には RubyRails のコミッターである顧問の a_matsuda もいますので、例えば Rails に送るパッチのネタがあるけれど、パッチを送るに適しているかの判断やパッチを送る流れが悩ましいときなど a_matsuda に相談して足がかりにするなどできます。

開催時間は 17:00-19:00 となりますがご都合のあう方はぜひご参加下さい。特に募集ページなど設けませんので、興味のある方は永和システムマネジメントの神田オフィスまでお越し下さい。

http://agile.esm.co.jp/about/office.html#nav

今週の Rails 5.2.0 リリースRails 熱の高まった人などお気軽にお越しください。

4/17-4/19 で開催される RailsConf 2018 スピーカー a_matsuda の土産話なども聞けるかもしれません。

railsconf.com

f:id:koic:20180220155115j:plain:w400

Rails / OSS パッチ会 2018年4月のお知らせ

Rails / OSS パッチ会を2018年4月2日(月)に開催します。

この会をひとことでいうと、日頃のお仕事で使っている Rails をはじめとする OSS への upstream にパッチを送る会です。

会には RubyRails のコミッターである顧問の a_matsuda もいますので、例えば Rails に送るパッチのネタがあるけれど、パッチを送るに適しているかの判断やパッチを送る流れが悩ましいときなど a_matsuda に相談して足がかりにするなどできます。

開催時間は 17:00-19:00 となりますがご都合のあう方はぜひご参加下さい。特に募集ページなど設けませんので、興味のある方は永和システムマネジメントの神田オフィスまでお越し下さい。

http://agile.esm.co.jp/about/office.html#nav

先日の Rails Developers Meetup 2018 の流れで Rails 熱の高まった人などお気軽にお越しください。

f:id:koic:20180220155115j:plain:w400

沖縄Ruby会議02で登壇しました

ruby.okinawa

koic です。

ActiveRecord::ConnectionAdaptersの下の世界』というタイトルで登壇しました。

私の発表は以下のような流れです。

Rails を使ったアプリケーションの話ではなく、Rails の中身やその周辺についての話への知見が共有される場もあって良いと思い、今回良い機会となりました。

当日のスライドと前後の日記は以下です。

speakerdeck.com

この辺り詳しく聞きたい箇所などあれば、2018年4月2日(月)に予定している Rails / OSS パッチ会に来ていただくなどで応えたりできるので、そちらお気軽にどうぞ。

今回は角谷フェローに送ってもらいつつ、会場までの道すがら沖縄についての説明をしてもらったりしました。この場を借りて改めてありがとうございました。

最後にいつものやつです。

www.wantedly.com

Rails / OSS パッチ会 2018年2月のお知らせ

Rails / OSS パッチ会を2018年2月26日(月)に開催します。

この会をひとことでいうと、日頃のお仕事で使っている Rails をはじめとする OSS への upstream にパッチを送る会です。

会には RubyRails のコミッターである顧問の a_matsuda もいますので、例えば Rails に送るパッチのネタがあるけれど、パッチを送るに適しているかの判断やパッチを送る流れが悩ましいときなど a_matsuda に相談して足がかりにするなどできます。

開催時間は 17:00-19:00 となりますがご都合のあう方はぜひご参加下さい。特に募集ページなど設けませんので、興味のある方は永和システムマネジメントの神田オフィスまでお越し下さい。

http://agile.esm.co.jp/about/office.html#nav

Rails 5.2 が master からブランチアウトされて、Rails 6.0 の開発がはじまったところなので、そのあたりのネタでワイワイやりたい人なんかもお気軽にどうぞ。

f:id:koic:20180220155115j:plain:w400

2018 アジャイル事業部 年始のご挨拶の会を開催しました

はじめまして。2017年度入社の@hisasです。

2018/01/24に永和システムマネジメント東京支社にてアジャイル事業部 年始のご挨拶の会を開催しました。

esminc.connpass.com

カレンダー配布会

今年も年始のご挨拶ということで、2018年度カレンダーの配布と、

f:id:hkame6926:20180126113922j:plain

各月を担当した弊社社員による熱いLTが行われました。

f:id:hkame6926:20180126113057j:plain

当日のTwitterハッシュタグ#oblove_calendar です。

スライドの紹介

以下に公開されているスライドを紹介します。


GraphQL Subscription with Relay and Action Cable

@hibariya

speakerdeck.com


@babel/polyfill 再確認

@muryoimpl

speakerdeck.com


欲しいものを作ろう

@colorbox

speakerdeck.com


Write Code Every Day

@swamp09

speakerdeck.com


すぐできるDocker

@hidenba

speakerdeck.com


Elixir

@emattsan

www.slideshare.net


パイプラインオペレータの作り方

@wat-aro

esa-pages.io


Assert First

@hisas

speakerdeck.com


書籍『テスト駆動開発』7つの魅力のご紹介

@haru01

speakerdeck.com


まとめ

今年は技術寄りな内容のLTが多く、これ後で試してみたいなと思うものばかりでした。

中でも新卒で同期の@swamp09 の発表は、彼自身が毎日コードを書くことを実践しているということで刺激を受けました。

また、個人的には学生時代お世話になった@machida@komagataがお越しになっていたので、発表する前は成長した姿を見せられるか緊張しましたが、楽しく話すことができました。

会場へお越しくださった皆様、ありがとうございました。

今年もよろしくお願いいたします。

リリース前のプロジェクトを Ruby2.5 で動くようにするためやったこと

明けましておめでとうございます。新年最初の仕事は昨年の勤怠入力でした。

さて、2017/12/25 に Ruby2.5 がリリースされましたね。今日は、今私がやっているプロジェクトの Ruby を 2.5 にした時に行ったことを書きます。 リリース前のプロジェクトのため、Ruby2.5 対応のゴールは、アプリが起動し、テストがパスすることとしました。

私のプロジェクトでは、開発環境から本番(リリース前なので稼働はしていませんが)まで Docker を使っています。

まずは、https://hub.docker.com/_/ruby/ に 2.5.0-alpine が来ているのを確認後、Dockerfile を書き換えビルドしました。また開発環境には BUNDLE_PATH と node_modules に別途マウントした Volume を指定していたため、この Volume をクリアする必要がありました。これは、使っている gem や npm のライブラリにネイティブライブラリのものを使用していたためです。

アプリの起動までには、一箇所修正が必要でした。それは、devise 4.3.0 を使用していたのですが、そのバージョンだと Ruby2.5 の syntax change を踏んでいました。そのため、修正されたバージョンである 4.4.0 にアップデートすることで起動が可能となりました。

テストでも一箇所修正する点がありました。concern したモジュールのテストをモデル側でする際に、description に以下のような書き方をしている箇所がありました。

module Authenticable
end

class User
  include Authenticable
end

describe User::Authenticable do
end

この User::Authenticable と書かれているところで、NameError が発生するようになりました。 これは Ruby2.5 でトップレベルの定数探索が削除された ことによる影響でした。 なので、ここは User::Authenticable'User::Authenticable' のように文字列にすることで回避しました。

私のプロジェクトは、まだ規模も小さいため、これぐらいの修正で対応が完了しました。

これにより、pp を require せずに使えたり、Hash#tranform_keysHash#slice を使えたり色々便利な機能を ActiveSupport なしで書けるようになって便利になりました。 また、3 倍早くなったと噂のブロックパラメーターや do ... endrescue などが使えるようになるのも楽しみです。

それでは、良い一年を。