Unipos engineer blog

Uniposの開発者ブログ

WEB+DB PRESSでScala特集記事を執筆しました

エンジニアの大沼です。

8/24に発売されるWEB+DB PRESS Vol.112にて、同僚の谷口、豊島の3人で『実践Scala オブジェクト指向×関数型』という題で特集記事を執筆しました。Fringe81エンジニアとしては前号に続き2号連続での執筆をさせていただきました。

f:id:fringeneer:20190820204709j:plain

私たちの特集では、Scalaの基本的な文法からアプリケーション作成までを27ページの中に凝縮してお届けしています。 WEB+DB PRESS誌では初のScalaについての特集ということで、Scalaを初めて触る方を対象に、Scalaの基本的な使い方からScalaプログラミングの楽しさが伝わる事を目指して、執筆しました。 特集は5章構成となっており、それぞれの概要は下記の通りです。

  • 1章:Scalaの歴史からScalaを利用するためのセットアップ方法について解説しています。
  • 2章/3章:初めて触る方向けにScalaの基本的な文法からコレクションライブラリ等について解説しています。
  • 4章:Scalaの魅力である型安全、簡潔さ、エレガントが実感できるよう、Scalaの応用的な使い方について解説しています。また最近リリースされた2.13における変更点についても解説しています。
  • 5章:1章〜4章まで学んだ事を活かして、実際にWebアプリケーションを実装する内容

お題としたアプリケーションは一般的なCRUD処理ではなく、遊び心溢れるかつ実用的なお題となっているので、興味を惹かれた方は是非本誌をお取りになってご確認ください。

今回執筆するにあたって気をつけたのは、『代数的データ型』『モナド』のような、はじめて触れる人にとって少し難しく感じられるような言葉を使わないようにした点です。 Fringe81のエンジニアインターンではScalaを課題にしているのですが、Scalaは難しそうだ、という学生さんはやはり多いです。 しかし、いざ開発をはじめてもらうと比較的すぐに手に馴染んで書けるようになったという人をたくさん見てきました。 このような状況はもったいないと思い、読者の方々に「やっぱり難しそうだな」と思われないような表現を心がけました。

私達は日々Scalaを利用してアプリケーションを実装していますが、実用性に富みつつ奥深い、バランスが取れた言語と感じています。またプログラミングしていて非常に楽しい言語です!
分量の都合で書ききれなかったこともたくさんありますが、WEB+DB PRESS誌を手にとっていただいた皆さんにScalaの魅力を少しでも伝えられたら嬉しく思います。

また、同僚の泉によるelm Europe 2019の参加レポートも掲載されています。海外のElmコミュニティの盛り上がりがわかるものになっているので、Elmに興味を持っている方々も是非本誌をとって頂ければと思います!

ベルリンでScala Meetupを開催しました!

こんにちは! Fringeのエンジニアの藤野です。

今回ベルリンでScala Meetupを開催しましたので、開催レポートとベルリンのScala事情について紹介します。

開催するまでの経緯

そもそもなんでベルリンで開催?という疑問を持つ方もいるかもしれませんが、実は今年の2月にFringeの子会社であるUniposがベルリンでドイツ支社を立ち上げました! 私もそのタイミングで2月から現地で働いています。

ピアボーナス「Unipos」ドイツの有力メガベンチャーで試験導入開始 〜同時にベルリンに支社を設立しヨーロッパへ進出〜 | News | Journal | Fringe | Be an Explorer

ベルリンではMeetupが盛んに行われており、様々なテーマのMeetupがベルリン各地で頻繁に行われています。 参加者はMeetupアプリを通して定期的にイベント情報を取得し、興味のあるものに仕事終わりに参加します。基本参加費無料で、ピザなどの軽食が提供されるため、気軽に新しい技術のキャッチアップやネットワーキングが行える場として使われています。 また、これらのイベントは基本英語で開催されることが多いです。

ScalaJava、Rust、Pythonなどの言語別Meetupや、Functional Programming、DDDなどのテーマ別Meetupなどバラエティに富んでいます。 規模も100人を超える大きいものから、10~20人の小さいものまで様々です。

弊社Unipos GmbHのオフィスがあるWeWorkでもラウンジを利用してMeetupが開催されることがあります。

今回イベントを自社開催した経緯としては、弊社の支社長佐藤勇志がScalaの新しいMeetupグループを作成した所から始まりました。 作成してから2週間余りで、現在グループのメンバーは100人を超えています!

www.meetup.com

この事からベルリンでのScalaの勢いを感じ、弊社でもこの勢いを後押ししようとMeetupの開催の話が持ち上がりました。

ベルリンのScala事情

ベルリンでもScalaは人気の言語だと感じています!理由としては上記に記載したScalaグループのメンバーの集まり具合に加えて、

  1. Scalaを利用しているベルリンの企業が少なくないこと
  2. 世界最大のScalaカンファレンスであるScalaDaysが定期的にベルリンで開催されていること も理由として挙げられます。

Scalaを利用しているベルリンの企業ですが、有名所でいうとファッション通販の会社であるZalandoがあります。ZalandoのエンジニアはMeetupでもよく見かけます。その他にも、広告系、マーケティング系のスタートアップなどでも使われています。あくまで私の肌感ではありますが、今まで出会ったScalaエンジニアの働いている企業のバラエティを考えると、使っている企業が少なくはないと言えます。

また、ScalaDaysが2014年、2016年、2018年と2年ごとにベルリンで開催されています。 以前、別のScala Meetupグループを主催しているエンジニアに会ったのですが、彼はScalaDaysで登壇した経験があり、ベルリンでもScalaは人気あると言っていました。

Scalaに関するMeetupも頻繁に開催されていて、私も今までいくつか参加したのですが、Reactive DDD、モデリング、FunctionalといったScalaでよく話題になるテーマが多く、先日はZIOに関する発表を聞きました。やはり技術のトレンドは世界共通で日本とトレンドは特に違いがない印象です。

Meetupレポート

今回主催したMeetupですが、「Sushi&Scala」と言う名前で開催しました。名前の通りMeetupでは寿司を提供しました(ベルリンでも寿司は人気です)。

セッションは開催決定から開催日まで日がなかったこともあり、他スピーカーの募集が間に合わず、私一人のセッションでした。 タイトルは「ServerSide Architecture in Scala」で、Uniposで使用しているCleanArchitectureとCQRSを中心に約30分間英語で発表しました。今回のイベントでも参加者はドイツ人は少数で、インド人、ポーランド人、ロシア人、中国人など様々な人種の人が参加しました。

今まで行ったMeetupでもそうだったのですが、発表中にも質問が飛んできました。疑問に思ったらその時に質問して、より深く理解しようとする姿勢はとても素晴らしいと思います。また発表してる側としてもインタラクティブなセッションになって、スピーカーと聴衆が一体感が生まれました。

f:id:fringeneer:20190819174801j:plain
発表の様子

発表後のネットワークセッションでは、寿司を食べながらScalaの話で盛り上がりました。cats使ってる?ZIOについてどう思う?など最後までScalaを中心とした技術話をしました。

f:id:fringeneer:20190819174751j:plain
発表後のネットワークセッション

所感

英語が堪能ではない私の発表に対しても、真摯に聞いてたくさん議論してもらいとても良い経験になりました。またそのような積極的に議論に参加する姿勢は見習わなくてはならないなと思いました。 これからベルリンでScalaを盛り上げれるように頑張っていきたいと思います。

Cloud Native Days Tokyo 2019/OpenStack Days Tokyo 2019に参加しました #CNDT2019

Fringe81 エンジニアの森本です。 7/22(月)〜7/23(火)で開催された Cloud Native Days Tokyo 2019/OpenStack Days Tokyo 2019にエンジニアの遠山とともに参加してきました。

f:id:fringeneer:20190723212553j:plain

Cloud Native Days Tokyo 2019

昨年度までは Japan Container Daysという名称でコンテナ/クラウドネイティブ技術の日本最大級のカンファレンスでした。 今年はCloud Native Daysと名称を改め、またOpenStack Days Tokyoとの共同開催し、日本最大級のクラウドネイティブとオープンインフラストラクチャーの祭典となっています。

また総セッション数は2日間で100セッション近くもあり、またKubernetesやOpenStackのアップストリームトレーニングも開催され、クラウドネイティブ技術に関心を持っているエンジニアには必見のイベントとなっています。

cloudnativedays.jp

以下にいくつかセッションの内容と感想を紹介致します。

転職したら Kubernetes だった件 / That Time I Changed Jobs as a Kubernetes.

ZLabの須田さん、大塚さん、 稲津さんのセッション。

入社したらKubernetesクラスタの一員として働くことになったという、奇想天外なストーリーを通して、普段kubeletやkube-contoroller等が裏側で実行してくれていることを人間が手で実行して理解するという内容でした。

普段、意識していない裏側の仕組みを知ることで、問題が発生した際のトラベルシューティング等に役立てることができる、とても有用なセッションです。

また非常にユーモラスなストーリー形式で説明して頂いたおかげで、難しい内容にも関わらず、最後までとても興味深く、楽しく聴くことができました。

Understanding Envoy

TetrateのTaiki Onoさんによるセッション。

Service Meshに必須のproxyであるEnvoyについて、そもそもEnvoyがなぜ必要とされているのかの背景から、Envoyの詳細、ユースケースの事例までを紹介していました。 このセッションを聴くだけで、Envoyについて、おおよその概要やメリット、ユースケースを掴めるのではないかという、Envoyをまだキャッチアップしていないエンジニアには、必見のセッションでした。

特にユースケースの事例紹介については、そもそも利用している企業がどのような目的、何を解決したくて導入したかまでを含めて、紹介して頂けたので、非常に分かりやすかったです。

私自身、全然Envoyについてキャッチアップできていないこともあり、聴くことができて、とても良かったと思えるセッションでした。

KubernetesJVMアプリを動かすための実践的ノウハウ集 / JVM on Kubernetes

Oracleの早川博さんのセッションでした。

JVMはコンテナ技術との相性はよくない面がある、としつつも、エコシステムの大きさ故のメリットも大きく、使える物なら使っていきたい。ではどうすればk8sJVMを上手く組み合わせて使えるのか?という発表でした。 ①ローカル開発、②ビルド、③デプロイ、④監視の順に、それぞれ推奨される方法や便利ツールを紹介いただきとても実践的な内容でした。 私的にはコンテナイメージサイズのダイエットの話が面白く、jarの依存関係をツールで導出した上で不要モジュールを削減しカスタムJREをビルドするという方法は知らなかったので、試してみたくなりました。

弊社ではサーバサイドにScalaを全面採用しているので、JFRなどの定番ツールは普段から利用していましたが、コンテナ周りの各種最適化についてもキャッチアップしていきたいと思いました。

歴史から紐解くLinuxカーネルのコンテナ機能

gihyoでも連載を持つ(LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術:連載|gihyo.jp … 技術評論社)加藤泰文さんのセッションでした。

内容は2000年〜現在までのLinuxの進化のうち、コンテナ機能に関係するアップデートを振り返り、振り返りついでにデモをするという発表でした。 どのようにLinux側の機能を組み合わせて隔離されたリソースを生成するのかが視覚的にも分かりやすく、とても面白かったです。 他の聴衆の皆さんも食い入るように発表画面を見ていたのが印象的でした。

普段Dockerコマンドを使っている分にはこういったレイヤーの話は知らなくてもあまり困らないのですが、いつか線になる点としてとても重要な知識だと思います。

Actor Model meets the Kubernetes

非常に幸運なことにproposalを採択して頂き、発表する機会を頂きました。

内容はステートフルなアプリケーションが必要とされる背景から、構成する方法の説明、Kubernetesと連携した際のメリットの紹介となります。

当日はたくさんの方が聴きに来て頂き、本当にありがとうございました。

まとめ

セッション以外での取り組みで、とても興味深かったのは、なんといってもCloud Native Deep Diveではないでしょうか。クラウドネイティブ技術について、現場での試行錯誤や課題を自由に議論する取り組みで、誰でもホワイトボードに悩みを書くことができ、それに対して自由に回答や議論することができます。

人だかりができる程の盛況ぶりで、クラウドネイティブ技術のオープンさを体現するとても良い取り組みだと感じました。

f:id:fringeneer:20190723213400j:plain

今回初めて参加しましたが、クラウドネイティブ技術について、2日間で主要な技術のキャッチアップや各社の事例まで知ることができる、とても貴重な機会でした。 聴きたいセッションが多すぎて、悩んだ参加者も多かったのではないでしょうか? また参加登録者も1200人超を超え、セッションやスポンサーブースもとても盛況で、クラウドネイティブ技術の盛り上がりを大いに感じることができるイベントでした。

開催頂いたスタッフの皆様方、本当にありがとうございました。

次回は大阪での開催とのことで、こちらも必見のイベントですね!

cloudnativedays.jp