FLINTERS Engineer's Blog

FLINTERSのエンジニアが綴る技術ブログ

会社名変更のお知らせ

f:id:septeni-original:20210104114450p:plain

  このたび2021年1月4日をもちまして、株式会社セプテーニ・オリジナルから、 株式会社FLINTERS に社名変更することとなりました。


新会社名: 株式会社FLINTERS (読み:フリンターズ)
英語表記: FLINTERS, Inc.
 
FLINTERSは、「FLINT=火打ち石」を語源として、「未来につながる火を灯そう」をミッションに掲げた社名となります。
今後とも変わらぬ御愛顧を賜りますようお願いします。

ちょっとした文字列変換処理を書いた話(あるいはplay-functionalの機能を利用してみた話)

こんにちは。張沢です。

業務で特定の型のインスタンスを文字列に変換する処理を書いた際に、play-functionalの機能を利用したときの話を書いてみます。

例えば、あるオブジェクト(case classなど)があった場合、以下のような仕様の文字列が生成されるような実装について考えます。*1

  • key=value の形式で出力する
  • 各keyは、. で区切られる
  • 配列やリストの場合は、keyの後にzero-based indexを [] で囲んで付ける

具体例は以下の通りです。

case class User(id: Long, name: String, telephoneNumbers: Seq[String])

例1:

val user = User(1L, "user_1", Seq("000-0000-0000", "111-1111-1111"))
user.id=1
user.name=user_1
user.telephoneNumbers[0]=000-0000-0000
user.telephoneNumbers[1]=111-1111-1111

例2:

val users = Seq(
    User(1L, "user_1", Seq("111-1111-1111")),
    User(2L, "user_2", Seq("222-2222-2222"))
)
users[0].id=1
users[0].name=user_1
users[0].telephoneNumbers[0]=111-1111-1111
users[1].id=2
users[1].name=user_2
users[1].telephoneNumbers[0]=222-2222-2222

*1:業務で実装した文字列の仕様は、この記事での仕様例とは異なります

続きを読む

ScalaMatsuri 2020 に今年も出展しました!

株式会社セプテーニ・オリジナルは今年も将軍スポンサーで、通算5回目になりました。

f:id:Nomad_Blacky:20201104183747p:plain

メインセッション「Re-architechting in GANMA!」で登壇しました

GANMA! チームでバックエンドシステムの開発/運用を担当してる青山(@aoiroaoino)です。

今回発表した内容は、ここ一年くらいで実施した GANMA! チーム内でのリアーキテクチャに関する取り組みをまとめたものです。 サービスのリリース直後は最新のツール/最新の考え方のもと最善を尽くして開発されたものだったかもしれませんが、 時間の経過によって陳腐化してしまい、機能開発を行っていく上でこれらの悪影響が無視できない状態となってしまっていました。 それらをどのようにして解消していったのか、その詳細は以下の資料や後ほど公開される動画をご覧ください。

speakerdeck.com

今回の発表までで改善活動で全てが完了したわけではありません。 システムが稼働し続ける限り常に進化を続けなければまた近い将来、同様の状態になってしまうことでしょう。 いかにして技術的負債を制御下に置くか、常日頃からの取り組みが重要です。

今後もこういった活動を通じて得られた知識/知見をチームメンバーで積極的にアウトプットしていきたいと思います。

スポンサーブース で出展しました

スポンサーブースのレポートを担当します、門脇 (@nomadblacky) です!

セプテーニ・オリジナルBOOTHでは以下のセッションを発表しました。

LT: Slinky で Scala.js製 React Webアプリケーションをつくったはなし

speakerdeck.com

Scala.js の React.js フレームワークである Slinky を用いて実際にWebアプリケーションを作成した過程とそのノウハウについて紹介いたしました。

セプオリ史上初!技術も仕事も会社のことも、ココだけの話を大公開!社員が赤裸々に語る『セプオリラジオ』!

セプオリラジオと称して、セプオリで働くエンジニアにインタビューを行いました。
弊社の技術指針の話や、どんな社員が所属して仕事をしているのか、そして今ホットなリモートワークに対する取り組みなど、ベテランから若手まで、またエンジニアに留まらず多様な職種の方々の生の声を皆様にお届けしました!

LT: 大変だよ、Tagless-final パターン

speakerdeck.com

GANMA! のバックエンドエンジニアである青山さん(@aoiroaoino)の発表です。 言語内DSLを構築する手法である Tagless-final を導入した際の悩みどころなどをお話しました。

熟練Scalaエンジニアの匠の技術を盗め!リアーキテクティングの技をライブで披露します!

Scala研修で作成されたPlayFramework製のWebアプリケーションをビジネスの成長を見据えた、モノリスからモジュラモノリスへとリアーキテクトしていく様子をライブコーディングでお伝えしました。

裏セプオリラジオ

上記のリアーキテクティングライブのあと、雑談している間に話が盛り上がり裏セプオリラジオが始まっていました😂 最近業務で取り組んでいるScalaを使った開発の話から、ScalaからAWS CDKを扱う話になりました。 こちらは以前、scala-tokyo というイベントで発表していますので興味がある方はこちらをどうぞ。

speakerdeck.com

技術読本を配布しました

f:id:Nomad_Blacky:20201104184300p:plain

ダウンロード

毎年恒例の「技術読本」を今年も公開しております!

弊社エンジニアの知見をたっぷり凝縮した読み応えのある本になっていますので、上記のURLからダウンロードしてぜひご覧ください!!

最後に

セプテーニ・オリジナルBOOTHに参加いただいたみなさま、ありがとうございました。
また、初のオンライン開催だったにも関わらず快適なイベントを提供いただいた、ScalaMatsuriのスタッフの方々にも多大なる感謝を申し上げたいと思います。ありがとうございました。
今後ともセプテーニ・オリジナルでは日本のScalaコミュニティの一員として貢献していきたいと思っております。

また来年もお会いしましょう!

Web上でVRゴーグルを使って没入体験ができるWebXRが面白い!

皆様こんにちは。シャープのマスクが当たったものの、未だ未開封で使いどきが分かっていない菅野です。

シャープのマスクも人気ですが、今はVRゴーグルも熱いです!
Oculus Quest 2が先代よりパワーアップしつつ価格はダウンして登場し「VR元年」到来かと言われています。(毎年言われています)
とにかく、高性能なVR機器が3万円台という気軽に買える価格(?)になったので私は発売日にGETしました!
VRです。

f:id:zakknak:20201103070817j:plain:w500

エンジニアなら自分でなにか作りたくなるよね?

ゲームも6DoFのトラッキングと左右の視差による立体視で本当にそこにいるような感覚です。
今まで平面の板に映っていたのを3Dだと思っていたのが馬鹿らしくなります。

f:id:zakknak:20201103070402j:plain:w400

そうなると、このVR世界を自由に創造したくなりますよね?
できるだけサクッと。
そこで役に立ちそうなのがWeb上でVRやARのコンテンツを作成できるWebXRという規格です。

HTML上のCanvasタグに3Dの描画をすることができるThree.jsではWebXRをサポートしているので、このライブラリ経由で割と簡単に実装することができます。

Three.jsを試す

続きを読む

実施レポート:社内向けトレーニング

ScrumMaster 兼 組織開発部の責任者として組織改善などやっております貫名です。 9月に外部トレーナーにご協力頂きながら社内向けオンライン研修(トレーニング)を実施しましたのでそのレポートを投稿します。

今回は弊社のアドバイザーとして定期的にサポート頂いている Odd-e Japan 江端一将 氏と同社 貝瀬岳志 氏にプライベート・トレーニン*1を実施して頂きました。

*1:今回は江端さんによる「Scrumプライベート座談会」を全社員対象に、貝瀬さんによる「ProductOwnerワークショップ」を特定メンバー対象にそれぞれ実施しましたが、本ブログでは主に前者についてレポートしていきます

続きを読む