I participated in ** Scala Fukuoka 2019 ** held at LINE Fukuoka on January 19, 2019!
2019/01/19 (Sat) 11: 00- LINE Fukuoka https://scala-fukuoka.org
Gakuzo-san (Tech to Value) @gakuzzzz
A summary of Scala's language characteristics and surrounding environment, and Scala's orientation.
Statically typed language.
For critical applications, statically typed languages are better suited.
Dynamically typed language is an idea to avoid a state where the whole does not work even if there is a problem in a part.
The expressive power of types is higher than that of Java.
Also suitable for Domain Driven Design (DDD).
Metaprogramming (reflection, macros, etc.) is as easy as Java.
Scala macros are still experimental features and are likely to change in the future.
The paradigm is object-oriented and functional integration.
Subtyping is Nominal Subtyping.
Besides, Go is Structual Subtyping and Ruby is Duck Typing.
Suitable for products that are subject to continuous changes. If it's left unchanged, it might be too much.
JavaScript is the overwhelming number of repositories on GitHub. There is also a lot of Java. Scala and Go are still few.
Scala products include Spark and Akka.
In many cases, Scala is selected to use Akka.
The advantage of Scala is that you can use the Java library as it is.
However, many libraries for Java are designed to be mutable, and it may be a little difficult to use from Scala, which is based on immutables.
There are few Scala engineers.
It is said that the learning cost of Scala is high, but in reality it is not due to language characteristics, but it may be due to other factors.
In the first place, it is very difficult to program properly in an object-oriented manner.
Note: Many engineers are giving up and switching to functional programming.
Mr. Fujii (chat work) @yoshiyoshifujii
An explanation of the points of clean architecture and an introduction of implementation examples in Scala.
https://speakerdeck.com/yoshiyoshifujii/shi-jian-clean-architecture
Policy: Product value and purpose.
Details: Means of product realization. Frameworks and middleware.
The purpose is to separate the heart.
I want to focus on "policy".
I'm addicted to DDD.
I want the "policy" not to depend on the "details".
To consider "details", implement "policy".
There are conflicting points, so balance is important.
See slide.
nulab
forkwel
297 community sponsors over 10 million yen
Know your ideals and know the gap with reality.
The average annual income of Scala engineers is number one. However, there is not much difference in income between languages.
If you want to make more money, it's quicker to join a profitable company than to differentiate your skills.
Turn the loop of outputting and receiving feedback.
It is important to verbalize.
Learn bargaining skills.
Market evaluation> In-house evaluation ・ ・ ・ I cannot get a fair reward.
Market evaluation <In-house evaluation ・ ・ ・ Not crushable
Market evaluation = In-house evaluation ・ ・ ・ Ideal.
By appealing both inside and outside the company and balancing the evaluations, you will be able to work freely.
Jun Kato (chat work) @ j5ik2o
Introducing the domain modeling method focusing on domain events and the implementation example by Scala.
https://speakerdeck.com/j5ik2o/scalakodototomonikao-erudomeinmoderingu
Human: Actor outside the system
Things ... Domain model
Things ... Domain event
Since things represent the relationship between people and things, we will focus on things and organize things.
Event Storming
Use cases-> Domain events-> Commands (operations)-> Actors and domain models
The domain model (aggregate route) has a history (list) of domain events.
The domain model is set to trait so that the model does not depend on the means of implementation (Event Soucing).
Business methods generate a new domain event and add it to the end of its event column and return it.
If multiple business methods must be called as a set, there is a way to implement it as a domain service.
Keep business methods invisible from the outside.
In the repository, insert the event column.
It is necessary to prevent the order of event columns from being out of order (locking, etc.) when trying to persist from multiple threads and multiple processes at the same time.
With Akka Cluster, there is always one actor with an instance of the aggregate route, so there is no conflict.
Mr. Shimada (Every) @smdmts
Explanation of databricks / Spark practice and data visualization. (I don't have much prior knowledge of data analysis, so I can't keep up with it ...)
https://speakerdeck.com/smdmts/databricks-and-spark-with-etl-and-visualization
Databricks
ETL
Mr. Hosoya (CyberAgent) @bake_nezumi
https://www.slideshare.net/bakenezumi/sierscala-web
The story of introducing Scala with SIer.
Play Framework can be used in both Scala / Java.
Java assets can be reused.
Language features such as pattern matching and immutable programming.
Note: Using Java O / R mapper from Scala seems painful.
Doma wrapper for Scala https://github.com/bakenezumi/domala
Mr. Mizushima (Dwango) @kmizu
http://kmizu.github.io/scalafukuoka2019/#/
You have already mastered one or more programming languages, and how to learn a new programming language.
Barriers to learning other languages.
There is an opinion that if you understand one language, you can understand another language.
It is difficult to learn an unknown paradigm.
It is important to understand the structure common to many languages.
It is better to break it down into the above syntax, type system, and semantics.
What kind of program should I write to learn? → A parser combinator is suitable.
Because you will use various functions of the language, you can understand the main points of the language.
Have your own "Hello World".
LT
Emotional Scala
@HonMarkHunt (Bizreach)
# Emosca
Daigoro-san (Rakuten)
Quick introduction to scalafix
Mr. Taniguchi (Hatena) @tanishiking
https://speakerdeck.com/tanishiking/quick-introduction-to-scalafix
Apache Kafka
Mushrooms (freelance) @ aa7th
https://speakerdeck.com/sammy7th/apachekafkanituitetiyotutomian-qiang-simasita
Kishida-san (LINE) @kis
http://d.hatena.ne.jp/nowokay/20190120#1548011826
sbt assembly
.native-image -jar ****. Jar
on GraalVM.Why do you want to be native?
Starts up faster. (However, Scala Native is a little faster)
All Java libraries can be used. (Scala Native can only use the provided libraries)
There are pitfalls such as a natively compiled tail-optimized program but an error at runtime.
We got on the front in Fukuoka and started out on the night of Hakata with four engineers who are getting along well.
The offal grilled shop here is already exquisite, and I thought I would like to go there again when I come to Hakata.
Related ranking: strong> Motsunabe | Yakuin Station , Watanabe-dori Station , Nishitetsu Hirao Station p>
I want to come again next year! !!
Recommended Posts
in conclusion