Furyu

[フリュー公式] Tech Blog

フリュー株式会社の技術ブログです

2014年09月12日

kasuya

#ScalaMatsuri 参加の所感

粕谷です。

国平がボランティアスタッフとしての視点から参加レポートを投稿していたScalaMatsuri。僕は去年のScala Conference 2013に続いての参加となります。

そこで、去年と比べてScalaコミュニティにどのような変化があったか、と言った視点を交えつつ参加レポートを書きたいと思います。

導入企業の増加

去年のScala Conferenceは、コミュニティのコアなメンバーが集まっていた濃い雰囲気がありましたが、今年はそれに比べて段違いにオープンな雰囲気になっていました。要因としては、参加人数の増加が考えられると思いますが、その中でも「Scalaを実際に導入して活用している企業」が大幅に増えている印象が強いです。

カンファレンス内でも各企業が導入・活用事例を紹介していましたが、それらも単なる活用事例というよりも、実際の運用ノウハウの共有などといった、一歩踏み込んだ内容が多かったです。

Scalaの導入事例で面白かったのは、弊社のようにJavaからの移行、という例はむしろ少なくて、RubyやPHPのような動的言語からの移行事例が多いようです。特にスピード感が求められるWeb開発において、運用中のシステム改修の安定化という観点で、静的言語を用いて改修の影響範囲をコンパイル時に検知したい、というニーズが強まり、その中でScalaが採用候補として選ばれるパターンが多いようです。

このあたりは我々がScalaを用いてソーシャルゲームの開発・運用をする際に重視している観点とも共通しています。特にソーシャルゲーム開発は短い開発期間でコードの広い範囲に手をいれるケースも多く、現状の我々の運用方法を考えると動的言語の採用は少し難しいところです。

求人数の増加

Scala導入企業の増加に伴い、当然の流れとして求人数も増加しています。各社ともスポンサーLTでは積極的に採用情報をお話されていました。中には人事部の人と一緒に参加された企業もありました。

ちなみにScalaMatsuri参加企業は東京を拠点とするところが多かったですが、弊社は京都にてScalaを用いた開発を行っておりますので、関西でScala導入企業を探しておられるエンジニアの皆さんはお気軽にご相談ください。弊社のキャリア採用ページはこちらになります。

アンカンファレンスでDDDを学ぶ

弊社では現在、始業前の30分間を利用して、週2日DDD本の読書会を開催しています。
2日目のアンカンファレンスではかとうじゅんいちさんがDDDのセッションを立ちあげられたので、そこに参加してきました。

ScalaとDDDは非常に相性が良い、というのはかとうさん以前からのお考えで、そういった事もあってScalaMatsuriにおけるDDDセッションは盛況でした。
我々も、素人の集まりの読書会ではなかなか議論をしていても明確な答えにたどり着けないものもあったりしますので、有識者と直接対話する機会を得たことは大きかったです。普段の読書会で頻繁に議論になる問題について、直接質問して知見をいただく事ができました。

Scalaという言語の裾野が拡がっている

今年のScalaMatsuriに参加して思ったことは、Scalaという言語が結構な勢いで裾野を拡げているな、ということです。
もちろん、まだ「メジャー言語」と呼ばれるほどの位置づけではありませんが、前述した動的言語からの移行事例などを聴いていると、今後もさらなる普及の可能性があるように感じます。

まだまだフロンティアな世界でもあるScalaの世界。我々と一緒に開拓していきませんか?


2014年04月3日

kunihira

Rubyで標準出力を書き換える

お久しぶりです。
ちょっと前までプロビジョニングとかImmutableInfrastructureにハマっていた国平です。
Chefを触り始めたあたりから、Rubyが楽しくなってきて、最近では隙あればRubyスクリプトを書き殴ってます。
今回は、Rubyの超小ネタをご紹介します。

バッチ処理を動かしてる時って、進捗度を標準出力に出したいですよね。
そんな時に役立つ小ネタがこれです。
とにかく、何も言わずに↓のスクリーンショットを見て下さい。

rewrite_ruby1

分かりますか?
標準出力に、進捗を表示しているのですが、処理の進捗に合わせて出力した内容を書き換えてます。
こういう表示ができると、スクリプトがプロっぽくなりますよね。
この出力を行う方法をご紹介します。

種明かし

やっていることは、とても単純で、

  1. 標準出力に文字を出す
  2. カーソル位置を現在行の先頭に戻す
  3. 1に戻る

この3ステップです。

で、今回一番のミソが ステップ2 ですが、Rubyでカーソルを左に動かすには、

で、OKです。 1文字動かすなら、↓ですね。

当然、左だけでなく上下左右に移動することが出来ます。

というわけで、スクリーンショットのソースはこれ↓

One more thing…

おまけで、今度は逆に減っていくパターンを考えます。
今度は、最初に”#”を10個表示して、どんどん減っていくような表示をさせます。

↑このコードを実行すると…

rewrite_ruby2

なにも表示が変わりません…orz これは、最初に”#”が10個表示されて、その上に更に”#”を9個,8個,7…と書き換えて行っているので、最初に表示された後ろの方の”#”がそのまま残ってしまっています。 なので、ちゃんと上書きするような実装に書き換えます。

実行すると今度は上手く”#”が減っていきます。

rewrite_ruby3

まとめ

Rubyではカーソルを移動させることで、標準出力に出した内容を書き換えることができます。
この機能を利用することで、RubyでCLIスクリプトを書くときに、リッチっぽい表示ができるようになります。

なお、この内容はWindows環境で動作するかは未確認です。(追記:Windowsでも動作しました) 試す時は、Vagrantなどを使って試してみることをおススメします。
Vagrantの使い方はこちらの記事をどうぞw