tag
Scala
eye-catch
2022/03/17
Scalaのfor式による関数合成を「線路」で理解する
「for式による関数合成」は、Scalaを学び始めた方にとって難しく感じられるトピックの1つなのではないでしょうか。 この記事では、Scala初学者の方や教育を行う方を対象に、for式による関数合成を「線路」のメタファーを用いて理解・説明するアプローチを紹介します。
eye-catch
2021/03/30
Serverless Image Handlerによるセキュアな画像配信の実現
Webサービスを開発する場合、画像配信はtoB/toC問わず必要になることが多いです。人財活用プラットフォームHRMOSの評価管理は2019年にリリースされた機能ですが、データ連携・インフラ整備・セキュリティ強化など、リリースに向けて様々な準備が必要でした。今回はその中から、AWSのサーバーレスを活用して、セキュアに画像を配信する仕組みを構築した時の取り組みをご紹介します。 画像配信を新たに構築した経緯 評価管理をリリースするにあたり、従業員データベースに設定されている顔写真を評価管理に取り込んで、プロフィール画像として利用可能にすることになりました。PoCの段階では、プロフィール画像はユーザーが任意に設定できる画像しかなかったため、画像配信はSNSのプロフィール画像のような公開画像が前提で作られており、以下のような構成でした。 顔写真は個人情報に該当するためセキュアに配信する必要がありますが、画像の閲覧をログイン必須にしてしまうと、Slackやメールなどの通知でプロフィール画像を利用できなくなってしまい、UXが低下してしまいます。そこで、ログインユーザーしかURLを知ることができず、画像の閲覧はログイン不要にできる署名付きURLで配信する仕組みを構築することにしました。
eye-catch
2020/12/22
Multi-Stage Programming、そして脆弱性レジリエンス × Clean Architecture 〜 ScalaMatsuri2020 登壇者インタビュー
2020年10月17日(土) ~ 18日(日)にかけて開催された、アジア最大級のScalaカンファレンス “ScalaMatsuri 2020”。 Visionalからも2名のエンジニアが登壇をいたしました。 本日は「Dotty ではじめるマルチステージプログラミング入門」というタイトルで登壇した鈴木 健一さんにインタビューを行い、その舞台裏に迫りました。
eye-catch
2020/10/16
さらなる型安全性を求めて ~ Refinement TypeをScalaで実現する ~
SoRの性質が強いBtoBアプリケーションでは、「堅く」作ることを求められる箇所がしばしばあります。 Scalaの型安全性が頼もしく感じられるのは、まさにこのような箇所においてです。 「堅く」作るために、私たちがいま注目しているのが refined と newtype というライブラリです。 この記事では、refinedとnewtypeを使ってScalaの型安全性をさらに引き出すテクニックを紹介します。
eye-catch
2018/07/17
Why Stanby moved big data analysis from Amazon Web Services to Google Cloud Platform
Stefan Meier is Lead Engineer at Stanby - the search engine division at BizReach, Inc. Today, he explains why Stanby is moving from Amazon Web Services (AWS) to Google Cloud Platform (GCP) for data analysis. What is the challenge with big data? “Big data is data sets that are so voluminous and complex that traditional data-processing application software [is] inadequate to deal with them."1 One of the most fundamental principles lies in the discrimination between streaming and batch processing. In batch processing, a set of events is collected over time and then processed later, whereas in the streaming model, data is processed in near real-time. Also, when dealing with streaming data new challenges appear, such as handling unordered data with unknown delays (see graph below). Indeed, the collected data events might originate from users with slow Internet connections, users accessing the site from multiple devices or there might be just network delays. Therefore, the gap between the time the event occurred (event time) and the time the event is observed by the system (processing time) ranges from a few milliseconds up to several hours. In order to combine and group related data, methods such as windowing are used.
eye-catch
2018/06/07
入社初日の仕事がOSSへのコミットだった
株式会社BizReachに今年の3月にバックエンドエンジニアとして入社した新米社員の渡部未来(@ababupdownba)です。 入社してすぐ、頑張って仕事を覚えなければ!と意気込んでいたところ、同じ事業部の先輩エンジニアである石橋さんが、「僕のデザートあげるよ」と笑いながら声を掛けてきました。頭の中が「????」でいっぱいになったことを今でも鮮明に覚えています。