セッション一覧
Dependent method types を利用した軽量Clean Architecture の紹介
Scalaではドメインを表現するコードから技術詳細を分離するためのアプローチが様々提案されています。 Freeモナドを使って実現する方法や tagless-final を使う方法など近年のScala関西Summitでも紹介されていました。
これらの方法は柔軟性もあり便利な反面、モナド等の高度な概念を理解していないとコード自体も理解するのが難しいという問題も抱えています。
このセッションでは、ひとつのPath Dependent Typesを導入することで古典的なDIとインターフェイス/実装の分離とでドメインコードから技術詳細を分離する手法について紹介します。
こんな人にオススメ
Scalaで簡単なClean Architectureを実現する方法に興味のある人株式会社Tech to Value 代表取締役。Opt Technologies技術顧問。株式会社エフ・コード CTO。 Scalaを中心にWeb開発やITシステムコンサルティングを行っています。
Java 5.0時代の非同期処理技術から学び直すScala/Java非同期処理
このセッションはJava/Scalaにおける非同期処理ツールの歴史を振り返り理解を深めることで楽しいと感じてもらうことを目指します。非同期処理は難しくつらい一方で知的な探究心を刺激してくれる分野です。
現代のプログラミングは非同期処理を行うことが当たり前になってきたと言えるかもしれません。Scalaにも非同期処理を書くことを助けてくれるライブラリがたくさんあります。例を上げればScala標準のFutureもあればMonix、Cats Effect、ZIOなど。
しかしツールやライブラリが多岐にわたるため、それらのツールの抽象度が高いためチュートリアルに従ってコードを書くことはできるものの中で何が起こっているのかわからない人もいるかと思います。
セッションの最初ではJava 5.0時代までさかのぼってJava Memory Modelを始めとした当時の非同期処理技術から解説していきます。これは抽象度が低く具体性の高い処理から学ぶのが理解の手助けになると私は考えているからです。そして後の時代に登場した数多くの非同期処理技術に触れ、時代が進むとともにどういった背景で新しい技術が登場したか、どのように前の時代の技術を土台にしているのかを解説していきます。
発表の中でなにか一つ非同期処理に関して興味を持ってもらえる項目があれば嬉しいです。興味を持ってもらえる項目があれば豊富な文献を提示していますのでそこから自身で学んでいただけると思います。
今回お話を予定する内容には以下の項目を含む予定です
- 非同期処理技術変遷の年表
- Thread, lock, synchronized
- Atomicクラス, volatile変数、Thread-safe collections
- ExecutorService
- callback hellとChaining、Scala Future
- RxJavaとストリーム処理
- immutableオブジェクト
- Akka ActorとThread間共有オブジェクト、トランザクションスクリプト
- Blocking vs. Non-blocking (非同期だがブロッキングな処理について)
- 未来の技術...Java fiber, etc
こんな人にオススメ
非同期処理に苦手意識をもっているひと、苦手・得意を問わずもっと非同期処理への理解を深めたい人Scalaプログラマです。Adobe After Effectsが好きなExplainer video作製者でもあります。マーベリック株式会社で技術広報として働いています。
- Twitter: @RichardImaokaJP
- GitHub: richardimaoka
Chatworkでリアクション機能をリリースした話
Chatworkでは7月にリアクション機能をリリースしました。
リアクションは機能としては比較的シンプルですが、非機能要件も重要でそのための設計や負荷試験にも多くの時間を費やしました。
今回のScalaプログラムではAkka HTTPやMonixを使用しましたが、それらを使ってScalaでどのように実装したのか、どのようなアーキテクチャを採用したのか、どのように性能を改善していったのかなどを紹介したいと思います。
こんな人にオススメ
Scalaプロダクトの実例に興味がある方Chatwork株式会社に2016年入社。入社以来PHPを書いてきましたが、最近Scalaを書くようになりました
資産運用スタートアップの開発で採用した、PlayによるClean Arcitectureでの設計・開発事例
クラウドポートで手がけているFundsは、貸付ファンドという形の新しい投資機会を提供する、資産運用サービスです。
Fundsの開発では、スタートアップとして要求されるスピードに加え、サービスの成長にも対応できるシステムの柔軟性、金融サービスならではの複雑なドメイン固有の要件など、さまざまな課題が存在します。
少人数のチームにおいて、開発段階の開発効率とサービスの成長に耐えうる柔軟性を実現するため、FundsではScala + Playを採用、またClean Architectureを適用したMonolithなアプリケーションとして設計・開発をしています。
本セッションでは、Fintechスタートアップとしての開発戦略に触れつつ、Scalaを活用してどのような設計・開発指針を採用し、開発しているかについての具体的事例をお話します。
こんな人にオススメ
Scalaをこれから業務で採用しようとしている方業務では2015年頃よりScalaを利用。現職のクラウドポートには2016年の創業時より所属し、同社が運営するFundsにおいては、フロントエンド・バックエンド双方のアーキテクチャ設計・開発などを担当しています。
FOLIO のマイクロサービス in Action
FOLIO の証券システムは 24個 (2019/08/26 現在) のサービスによるマイクロサービスで構成されており、その殆どが Finagle の上に実装されています。
そんな FOLIO の証券システムは、2017年7月のβサービス開始から、マイクロサービス単体の扱い方も、システム全体の構成についても自分たちのベストプラクティスをアップデートしながら進化を重ねています。
このセッションでは、2019年現在の FOLIO がどのようにマイクロサービスを設計/開発/運用しているのか、これまでの苦労や今後解決したい課題などについてご紹介しようと思っています。
取り上げるトピックは、各マイクロサービスを構成する技術スタックやそれらを効率よく扱う上での工夫、レポジトリ内のレイヤ分割、マイクロサービスの切り方、運用プラクティスなどを予定しています。
こんな人にオススメ
マイクロサービスによるシステム構築を検討していたり、実践していて事例を聞いてみたい人。シンプレクス、サイバーエージェント アドテクスタジオを経て、2018年2月より FOLIO にジョイン。
FOLIO では、テーマ投資プロダクトの商品管理、参照データ配信、顧客資産参照などの API 開発を行うバックエンドシステムエンジニアをしています。
https://twitter.com/mura_mi
https://github.com/mura-mi
Scala.jsでGoogle Cloud Functionsを利用する前に知りたかったこと
Function as a Serviceの中にはJVMで動かせる環境を提供してるサービスが増えてきました。 しかし、JVMが起動するまでの時間がかかるといった他の言語とは違ったデメリットが見えてきました。 また、私が利用している Google Cloud Platform のFaaSである Google Cloud Functions ではJVMで動かせる環境は提供されていません。 そこで、JavaScriptへ変換してくれるAltJSである Scala.js を利用してGoogle Cloud Functionsで動かす方法を紹介します。
こんな人にオススメ
Scala.jsに興味がある人Scalaで圏論チョット学ぶ
関数型の世界に触れていると一度は目にする圏論。
しかし、圏論について調べてみるとなにを言っているのか全くわからない・・・難しい・・・
そこで本発表では、圏論の様々な概念をScalaでの実装を通して眺めてみます。
- そもそも圏って?合成って?
- Monoid?Monad?
みたいなことを話します。
こんな人にオススメ
圏論学んでみたけど心が折れた人、圏論に触れてみたい人Scala歴2年目、お仕事で広告配信システムのバックエンドをやっています。
GitHub: https://github.com/taniTk
Twitter: @ravineport
Scala における Monad って何だろう?
結局 Monad ってなんでしょう? 象?デザインパターン?型クラス?それとも単なる自己関手の圏におけるモノイド対象? 本セッションでは理論よりも Scala における実態/実装を重点的にお話し、より Monad を身近に感じてもらえるようなお話をしようと思います。
こんな人にオススメ
Scala における Monad が何なのか、気になる人株式会社セプテーニ・オリジナルのエンジニア。
現在はマンガアプリ「GANMA!」のバックエンドシステムの開発を担当している。
エンジニアイベントでの登壇や、書籍『実践Scala入門』(技術評論社)の執筆にも携わる。
Twitter, GitHub: @aoiroaoino
ゼロから始めるScala文法 (再) + 関数プログラミングことはじめ (再) ハンズオン
例年、Scala関西 Summitで行っている、初心者向けセッションとハンズオンの再演です。
「ゼロから始めるScala文法」のオリジナルは amaya さんによって、「関数プログラミングことはじめ」のオリジナルは木虎直樹さんによって行なわれたものです。
前半のセッションでは、Scalaを全く (orほとんど) 触ったことがない方向けにScalaの基本文法をご紹介します。特に他の言語と異なる部分を中心に取り扱いますので、Java又は類似するオブジェクト指向言語を最低限知っていることを前提に進む予定です。
後半のハンズオンでは、単純な例を使い、命令プログラミングと関数プログラミングにおける問題へのアプローチの違いを体験してもらいます。再帰のコードは読みづらい、あるいは、ループなしでどうやってコードを書くのかというような疑問を持っている人には良いかもしれません。
使用予定環境:
- JDK
- IntelliJ IDEA CE
- Scala プラグイン
進行の都合上必ず事前に準備をお願いします
こんな人にオススメ
他のオブジェクト指向言語の知識はあるが、Scala は触ったことがないので始めてみたい人今年も、Scala関西 Summit のスタッフとしてお手伝いしています。