この記事は Scala Advent Calendar 2023 13 日目の記事です。 はじめに 私的には Scala.js の利点として JavaScript / TypeScript 向けのライブラリを利用しつつ Scala の書き心地を得られる。 純粋関数型プログラミングを容易にできる。 という二点が特に大きいと考えています。 しかし、せっかく Scala で副作用を隔離して気持ちよくコードを書いていても、JS / TS 向けライブラリの中には import するだけで環境変数読み込みや HTTP リクエスト等の副作用が発生するような危険なライブラリが存在します。1 この記事では、そのような 「import で副作用を起こすライブラリ」 をどのように副作用を起こさずに扱うかを書き記したいと思います。 また、この記事では副作用の隔離について Effect runtime として Ca
この記事は、Scala Advent Calendar 2023の5日目の記事です。 qiita.com 大遅刻してしまいましたが、Scalaは遅延評価できるのでモーマンタイですね。 この記事では、Scalaをクラウドネイティブな環境で使う例の紹介として、ScalaをJavaScriptコードにトランスパイルしてAWS Lambdaで動作させる方法を紹介します。 愉快な遠足の始まりだ!!! Scalaプラットフォームの発展 Scalaはクラウドネイティブ時代に乗り遅れている?(いえいえ) 想定環境 Scala.jsで快適にLambda関数を書いてみよう 最低限のScala.jsを実装する 設定 トランスパイル Scala.jsコードをLambda関数の呼び出し規約に合わせる 規約を実装する Lambda関数を作成する イベントなどの入力 ここまでのまとめ Scala.jsでライブラリを利用
Indoor VivantsAnton Sviridov. I love reinventing the wheel and I usually use Scala for that. TL;DR We are deploying an app to Cloudflare using Scala.js We are using ScalablyTyped We are using Scala 3 heavily Code on Github Deployed app Cloudflare API bindings Welcome to the "Put ma Scala on yo cloud" series I want to say that I'm kicking off a blog series, but even I don't believe that. If I did,
はじめに Scala.jsというプロジェクトがあります。 Scalaで書いたプログラムをJavaScriptに変換する、とてもクールなツールです。 ただ、もちろん言語自体が違うため、完全なマッピングが可能な訳ではありません。ベストエフォートでセマンティクスを維持したままJavaScriptに変換しますが、いくつか対応付けが困難なケースがあります。 その中でも特にScalaの Future をJavaScript上でどのように表現するか? という点に関しては、JavaScriptの深みを知れるとても良い題材だと思ったので、まとめてみようと思います。 ※ 一応Scala.jsをネタに出してますが、Scalaを知らなくても理解できるように書いたつもりです。 ScalaのFuture Scalaには並列処理を行うためのデータ型として Future があります。 Future は、ある時点において利
最近Scala.jsの話をすると結構な人がRTしてくれる。TypeScriptの他にAltJSには今どんなのがあるのかな、という話に引用RTでScala.js今アツいですよという話をしたら結構ウケた。世間的にはTypeScript alternativeに興味がある人も多いようだ。一方、ネットに残っているScala.js情報は数年前のものが多いようで、あまり積極的に日本語での情報発信がなされていない様子。そこで、ここ最近Scala.jsはどういう感じなのか、そしてどうすれば始められるのかという情報をまとめると需要があるかもしれないと思い、書くことにした。 Scala.jsは数年前まではオモチャみたいな感じだったんですが最近はTSのライブラリから自動で型が生える仕組みがあったりめちゃバンドル小さくなったりとめちゃくちゃ進化してます!! https://t.co/c06IZGWhYF— Win
環境 OS: Windows 11 Java: OpenJDK 17.0.7 Scala : 3.3.0 Scala.js : 1.13.0 ScalaHTML: 0.1.1 ScalaCSS : 0.8.0-RC1 Akka: 2.7.0 Akka-HTTP: 10.5.2 諸々の設定は下記のようです。 val scala3Version = "3.3.0" val AkkaVersion = "2.7.0" val AkkaHttpVersion = "10.5.2" ThisBuild / organization := "$organization$" ThisBuild / scalaVersion := scala3Version ThisBuild / version := "0.1.0-SNAPSHOT" lazy val root = (project in file("
この記事はScala.jsのUIライブラリであるLaminarをステップバイステップで学習していこうという記事の第一弾だ。 いくつかの記事に分けて、現時点で自分が知っているLaminarの知識や知見をまとめていくつもりだ。 あまりどのような構成にするかは考えていないけれど、Scalaにある程度親しんでいる人がLaminarで基本的なアプリケーションを書けるようになることを目指す。 今回は、Laminarの紹介と初歩的な使い方、ビルド方法を説明する。 Laminarとは Scala.js -- TypeScriptの対抗馬 Laminar 最小のLaminarプロジェクト ビルド定義 DOMを組み立てる イベントストリーム 動作確認用HTMLファイル 最小のLaminarプロジェクトをビルドする まとめ Laminarとは Laminar(発音はラミナー)とは、Scala.jsのために開発さ
Laminar とは...? 🤔となった人はこちらの記事も読んでみるといいかもしれません. Goal レポジトリはこちら Hands-on 使うもの Scala.js sbt Vite Laminar ライブリロードでインタラクティブに開発するためにシェルを二つ開いて一つで npm run dev を、もう一つで sbt ~fastLinkJS を実行します. npm run dev で vite の開発サーバーが立ち上がり、http://localhost:3000 でアプリケーションがサーブされます. sbt ~fastLinkJS を実行すると src/main/scala 以下の 変更を検知して 変更があるたびにビルドが走ります. display UI まずは src/main/scala/tictactoe/Index.scala をみてみましょう. 次のようなコードがあります
この記事は Scala Advent Calendar 2021 14日目の記事です。 Scalaで一番easyな構成を考えたい Scalaでマスタメンテや運用補助の簡単なアプリを手軽に作りたいときどうしましょう? requirements マスタメンテ画面など手軽に作りたい フロントとサーバーが分かれてないほうがいい フロントとサーバーを統合するのでOpenAPIやTapirはむしろ不要! 個人的コンテキスト しばらくvueのプロジェクトの改善をやっていて、大きく育ったSFCをコンポーネントに切り出すのがつらかった。誰でも安全確実に高速でリファクタリングできないと意味がない! playframework + twirlは楽だけど そもそもhttpすらいらない よねという話をAirframe RPCの話題で聞いていて、もっとシンプルなRPCないかなと探してみた。。。 すると、さすがliha
Laminar は Scala で書かれたリアクティブな宣言的 UI ライブラリです. Scala でコードをかいて Scala.js にコンパイルすることでブラウザで動作するフロントエンドアプリケーションをつくれます. Scala.js と Laminar, Scalacss, Scalatag を使えば、JS を一切使わずに型安全に Scala でフロントエンドを構築することができます. TypeScript の狂気的な型(誉め言葉)や JSのゆるゆるな言語仕様に疲れたそこのあなた! Scala.js を使ってみませんか? この記事では以下のデモサイトのコードをいくつか抜き出して Laminar の書き方をざっくり紹介します. このデモでは Laminar と Laika という Scala 製のテキスト変換ツール(pandoc のように中間AST を挟むことで多様な入力形式に対応して
Scala Advent Calendar 2022 - Qiita 1日目の記事です scala.js でビルドした成果物を npm にアップロードすることありますか? 私はある。 普通に scala.js でビルドした js を npm にアップロードしようとするとこういう感じの流れになります。 sbt fullOptJS とかで js にビルド ビルド成果物(.../target/scala-2.13/foo-opt.js とか) を適当なディレクトリにコピー そのディレクトリに package.json と、npmにアップロードする README.md を設置 npm login して npm publish まあ、これでも別にいいっちゃいいのですが、いくつか気に入らないところがあり build.sbt の設定と、package.json の設定を別々に管理することになる (ver
使用ライブラリなど Scala.js scalajs-react akka-http circe モデリング ゲームのコアにあたる部分の実装指針です。 オセロのルールを閉じ込めたOthelloクラスを作成し、以下の2つの状態を保持 ボード ... 盤面。どこに何色の石が置かれているかを保持。 手番 ... 次は黒/白どちらの手番か(これは、通常プレイであれば、ボード上の石数から判断することも出来るものの、通常プレイ以外の拡張モードの構想もあり、切り出すことにしました) ゲームの情報を保持するGameクラスを作成し、勝敗や参加者のIDを保持 このクラスがOthelloインスタンスを内包しています。 参加者はParticipantクラスで定義 名前と状態(フリー、参加待ち、観戦中、対戦中)を持っています。 認証認可周りは今回の本題ではないので、ふわっと作ってます。 実装戦略 以下、どういった方
こんにちは。クライアントアプリケーション開発部の田中です。 好きな麻雀の役は七対子です。 先日、ChatWork LiveのUIが変更されました。 詳細は下記を御覧ください。 blog-ja.chatwork.com UIについては今後デザイン部の方がブログを書くと思うので、今回私の方では技術的なところの紹介をしたいと思います。 (尚、この記事にはWebRTCやビデオ会議システムの話は全く出てきませんので、ご了承ください。) ChatWork Liveのフロントエンド技術について 実は今月のUI更新とは別に、JavaScript部分の大幅な変更を4月末に実施しています。 大まかな設計はすべて@kyo_ago氏がやってくれて、 私は敷かれたレールをただただ歩くだけだったので割と楽させてもらいました。 ChatWork LiveのWebクライアント側は主に以下の技術を使って実装されています。
Re: 僕らを縛る Node.js という呪いについて - あるいはなぜ TypeScript 以外が真っ当な選択肢にならなかったか https://d.potato4d.me/entry/20220405-nodejs/ へのアンサーソング。 プログラミング言語としての JavaScript の話をする。 2010年頃、Python 2 でプログラミングを学習した自分にとっては Node.js + CoffeeScript が Better Python だった。 CoffeeScript は当時の JS(ES3~5) に足りない機能を補ってくれて、Python と同じく空白制御のオフサイドルールなのが気に入った。見た目が少しだけ Ruby っぽいので当時全盛だった Rails の人間に訴求するにも有利だった。 Node.js のモジュールシステムである Commonjs は Pytho
この記事の内容は https://github.com/i10416/scalajs-cloudfunctions.g8 レポジトリにテンプレートとして置いてあります. テンプレートを使えば GCP と GitHub Actions の Workload Identity Pool を使って Keyless 認証でデプロイできるようになっています. g8 i10416/scalajs-cloudfunctions.g8 REAME に従って、Terraform と GitHub Actions の環境変数を設定設定する 以上の手続きでサンプルをシュッとデプロイできるようにしてあります. 概要 cloud functions は(Request, Response) 型( express の Request, Response に似ているが少し仕様が違う )を受け取って Any または Pr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く