はじめにScalaはなんとなく書けるようになったけどライブラリコードとか読めないし、関数型はもっとわかない。 特にF[_]みたいなやついっぱい出てくるけどなに?みたいな人に捧げる記事です。 このようなものは高カインド型などと呼ばれ、なかなか理解が難しいものです。 型のさらなる抽象化の旅に出ましょう。 これはUnderstanding F[_] inScalaの日本語訳です。 F[_]とかいうすごい抽象的なシンタックスはScalaのあちこちで目にします。 これを直感的に理解して、その意味と使い方がわかるようになりましょう。 Overview この記事の目標はこのシンタックスがなぜ必要か理解することです。 そのために抽象化のはしごをだんだんと上り、次のような疑問に答えていきます。 valueとは? proper typeとは? first-order typeとは? first-order
![ScalaのF[_]と高カインド型(Higher Kinded Type)を完全に理解していく - k.dev](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f32b77bea90e120046cbeb2cdae0ec61c97c00d7c%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fimages.ctfassets.net%252Fai4vjpehjr3j%252F1XTnGwva919Mr8lOfAMMPF%252F828310be50af7aaa9cf5c6bd509a8a9a%252Famelie-niklas-ohlrogge-IW-1MgMUvtE-unsplash.jpg&f=jpg&w=240)
Twitterしてたら目に入ったので軽く。Javaにおけるnull。これまでとこれから この後のスライドで、Scalaにおける「何もないもの」の分類はやり過ぎ感はある と言われているんですが、ある程度は誤解に基づく意見だよなぁこれは、ということを言っておこうかなと。Scalaについて 日本では説明が不要なくらいScalaって有名になってると思うんですが一応。ScalaはJVMの上で動作する、(クラス指向の)オブジェクト指向プログラミングと関数型プログラミングを融合させた言語です。 そして、Scalaのコア機能はどちらかというとオブジェクト指向プログラミング寄りです。 オブジェクト指向プログラミングをベースに、関数型の色々なものを実現している感じです*1。 オブジェクト指向プログラミング的な機能として真っ先に思いつくのは何でしょうか? 割と上位の方に、「継承」とか「型階層」とか来るん

ドワンゴのN予備校という教育サービスでプログラミング講師をしている @sifue といいます。N高等学校/S高等学校のプログラミング講師もしており、学内のツール開発や運用などもしたりしています。 最近は生成AIが流行ったこともあって、Pythonだったり、UIが必要なものはどうしてもTypeScriptとReactで実装することも多いのですが、久しぶりにScalaを使っての開発をしてみました。 自身は、Scalaでの開発はニコニコ生放送のサービスを開発するときに使っていた他、N予備校内で提供している大規模Webアプリの教材やドワンゴが当初作成していたScalaテキストの作成などにも関わらせてもらいました。 その当時のScalaは2.12であったわけなのですが、その後2.13が出て、さらに今はScala3系になって3.3.1までバージョンが進み、開発環境が変わってすごく使い勝手がよくなったと

この記事は、Scala Advent Calendar2023の5日目の記事です。 qiita.com 大遅刻してしまいましたが、Scalaは遅延評価できるのでモーマンタイですね。 この記事では、Scalaをクラウドネイティブな環境で使う例の紹介として、ScalaをJavaScriptコードにトランスパイルしてAWSLambdaで動作させる方法を紹介します。 愉快な遠足の始まりだ!!!Scalaプラットフォームの発展Scalaはクラウドネイティブ時代に乗り遅れている?(いえいえ) 想定環境Scala.jsで快適にLambda関数を書いてみよう 最低限のScala.jsを実装する 設定トランスパイルScala.jsコードをLambda関数の呼び出し規約に合わせる 規約を実装するLambda関数を作成する イベントなどの入力 ここまでのまとめScala.jsでライブラリを利用

Scalaは難しいと思われたり敬遠されがちである。Scalaの難しさについてTwitterなどでアンケートをとったり、ネットでググって意見を吸い上げてみた。議論の叩き台にするみたいな用途を意図しています。 ご意見や記事募集中です。できればTwitterじゃなくて記事だと嬉しいです。流れていってしまうので・・・ また、私見は私見です。 追記(2024-03-08)ちなみに、色々書いていますが僕はScalaが大好きです(このブログでものすごい数の初心者~中級者向けの記事を書いています)し、ネットで言われているような終わった言語ではまったくないです。初心者をサポートして、難しいと感じている部分をほぐして、みんながScalaでワイワイやれるようにコミュニティを立ち上げ、継続的に活動しています。おかげさまで日本の公式Scalaコミュニティとして認めてもらっています。ブログのバナー下のリンクからDis
Ammonite lets you use theScala language for scripting purposes: in the REPL or as scripts. A ModernizedScala REPL. With syntax highlighting, multi-line editing, the ability to load maven artifacts directly in the REPL, and many other quality-of-life improvements missing in the defaultScala REPL. LightweightProgramming inScala.Create scripts that you can run easily from the commandline, with
These are an adaptation of the Ninety-Nine Prolog Problems written by Werner Hett at the Berne University of Applied Sciences in Berne, Switzerland. I (Pip!Gold) have altered them to be more amenable toprogramming inScala. Feedback is appreciated, particularly on anything marked TODO. The problems have different levels of difficulty. Those marked with a single asterisk (*) are easy. If you
2021-09-06 /scala はじめに マクロは楽しくかつ強力なツールだが、使いすぎは害もある。責任を持って適度にマクロを楽しんでほしい。 マクロとは何だろうか? よくある説明はマクロはコードを入力として受け取り、コードを出力するプログラムだとされる。それ自体は正しいが、map {...} のような高階関数や名前渡しパラメータのように一見コードのブロックを渡して回っている機能に親しんでいるScala プログラマには「コードを入力として受け取る」の意味が一見分かりづらいかもしれない。 以下は、僕がScala 3 にも移植した Expecty という assersion マクロの用例だ:scala> import com.eed3si9n.expecty.Expecty.assert import com.eed3si9n.expecty.Expecty.assertscala
はじめに本サイトは、圏論初心者が圏論について学びながら作成した、Scala プログラマのための入門書です。教科書は Bartosz Milewski 氏著の Category Theory for Programmers のScala Edition で、構成も原則これに沿っています。Scala をやっていて、圏論について知りたい・学ぶ土台を作りたいという方の参考になれば幸いです。 目次 はじめに(ここ) 第1部 1章 圏とは 2章 型と関数の圏 3章 いろいろな圏 4章 Kleisli圏 5, 6章 積と余積 7章 関手 8章 関手性 (工事中)9章 関数型 10章 自然変換 第2部 (工事中)11章 宣言型プログラミング 12章 極限と余極限 付録 表記法 Writer 圏における射の合成と、恒等射と、関手について 免責事項 ドキュメントの章構成は基本的に原文に則っていますが、省
こんにちは。クライアントアプリケーション開発部の田中です。 好きな麻雀の役は七対子です。 先日、ChatWork LiveのUIが変更されました。 詳細は下記を御覧ください。blog-ja.chatwork.comUIについては今後デザイン部の方がブログを書くと思うので、今回私の方では技術的なところの紹介をしたいと思います。 (尚、この記事にはWebRTCやビデオ会議システムの話は全く出てきませんので、ご了承ください。) ChatWork Liveのフロントエンド技術について 実は今月のUI更新とは別に、JavaScript部分の大幅な変更を4月末に実施しています。 大まかな設計はすべて@kyo_ago氏がやってくれて、 私は敷かれたレールをただただ歩くだけだったので割と楽させてもらいました。 ChatWork LiveのWebクライアント側は主に以下の技術を使って実装されています。

はじめに 実践ScalaでDDD で発表した中で、エンティティ間の関連を「ロールオブジェクト」として定義する ことをお話ししましたが、スライドでは要約になっています。 実際にプロダクトでやってみて有効なパターンだと感じているので、改めて突っ込んで解説したいと思います。 なお、内容的にはScala をターゲットとしていますが、他の言語にも考え方は応用できると思います。 サマリ DDDで設計していると エンティティ と エンティティ の間に関連があり、その 関連に関するドメインの振る舞い と言うものが出てきます。 例えば 「ユーザー エンティティ」 と 「タスク エンティティ」 がある場合に、その間には 「タスクの作成者」 や 「タスクの担当者」 と言う関連があったりします。 そしてそれらの関連は「タスクの作成者は、タスクを削除する」や「タスクの担当者は、タスクを完了する」のような振る舞いを

Javaな人から見ると、「Scalaって難しい」ってイメージがありますね。俺も最初はそう思ってました。今もですけど。 で、考えてみたんですが、何が難しいって考え方・イディオムになじみがないのが原因かと思ったんです。 ここでは、俺が今までScalaをやってきて得た考え方を紹介します。「Scalaをちょっとやってみたんだけど、とっつきにくくて…」と思われている方は、ぜひご一読ください。 参考資料:Scala入門 -Scalaで書きはじめたJava使い向け -Scala勉強会@東北 Dropbox - 404 神は言われた。「リストあれ。」 Lisperは、リストをどう作るかをまず考えるらしいです。適切なリストが出来たら、プログラムはもうできたも同然だと。同じ考え方は、Scalaでも通用すると思います。 大まかに、こんな流れで考えてます。(リストは最初から与えられることもあるでしょう) 「

こんにちは、かたいなかです。 最近では、GitHubのAPIがGraphQLに対応してしばらくたち、また、先日からAWSのAppSyncもパブリックプレビューとして提供されており、世の中のGraphQLへの熱がだんだんと高まってきているのを感じます。 そこで今回から数回に渡って、ScalaのGraphQL実装であるSangriaというライブラリを使用してGraphQLのAPIを実装する方法を紹介していきます。GraphQLGraphQLはFacebookによって開発されたAPIに対するクエリ言語です。GraphQLを使用することで、クライアントは必要とするデータの情報をGraphQLのクエリとして送信し、サーバはそれに応じてレスポンスを返します。 これにより、クライアントが一つの画面で必要な情報を得るために何度もAPIに対してリクエストしたり、それを避けるために特定のクライアント専用

JJUGCCC 2017 Fallでの発表資料です。

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く