Home About Contact
Kotlin Serialization で JSON を扱う その3 Gradle プロジェクト

過去に Kotlin Script で Serialization を使うコードを書いた。 今回は普通に Gradle プロジェクトでそれを使うことにした。

» Read More
Kotlin の apply の T.()->Unit について調べた

Kotlin の apply の型のシグニチャーはこれ:

» Read More
Kotlin serialization で JSON を扱う その2

前回は、ごく簡単な json データを扱っただけなので、 今回は、もう少し複雑かつ実践的な json データを kotlinx serialization を使ってパースしてみます。

» Read More
OpenAI API で GPT-4o-mini に英作文の添削をしてもらう

以前に大学受験の学生に英作文の添削を頼まれてつくったものです。 普通に ChatGPT でもできると思いますが、 毎回添削対象英作文以外のプロンプトは固定なので、APIでつくりました。 単に間違いを修正するだけでなく、修正個所について箇条書きで説明してもらうようにプロンプトで指示を出しています。

今なら GPTs を使うとよいのかもしれません。

API の場合、月額課金ではなく使用量に応じた課金なので、処理量が少なかったり実験レベルのアイデアの検証には API 課金の方が良い。

なお、 ここではシンプルにエンドポイントのURLに所定形式のJSONを投げて回答をもらう方式で実装していきます。 実装言語は Kotlin です。

» Read More
Kotlin Multiplatform プロジェクト用のライブラリの作成と利用

以前のポスト Gradle を使ってライブラリプロジェクトを作成して local maven に publish、それをアプリケーションプロジェクトで使う(覚え書き) でつくった names というライブラリを Kotlin Multiplatform 用にする(覚え書き)。

» Read More
改善版2024)kotlin でパーサーコンビネータを実装する HtmlWriter の導入

このポスト 2024年改訂版) データ変換を Writer Monad 的に処理する を書いていて このパーサーコンビネーター( 改善版2024)kotlin でパーサーコンビネータを実装する 【おまけ】 HtmlBlock の改良) は Writer モナド的な発想で書けばもう少しパーサーのインタフェースがシンプルになることに気づいた。

その覚え書きです。

» Read More
2024年改訂版) データ変換を Writer Monad 的に処理する

データ変換を Writer Monad 的に処理する その1というポストを一年くらい前に書いたのだが、 今時点で最新の kotlin で作動させようとしたところ、 このコードが作動しなくなっていた。

» Read More
Kotlin で Maybe その4

Kotlin で Maybe その3をベースにさらに修正した。 Maybe を monad にする覚え書き。

» Read More
Gradle を使ってライブラリプロジェクトを作成して local maven に publish、それをアプリケーションプロジェクトで使う(覚え書き)

自分用のちょっとしたライブラリを local maven に publish しておくと便利。 その方法とそれを使う方法。

» Read More
Kotlin Multiplatform で Kotlin/JS するときに JSON を扱う

org.json で JSON 操作するコードを書いていたが Kotlin/JS ではこれは使えない。 そのかわりに Serialization JSON を使った。

以前のメモ

» Read More
改善版2024)kotlin でパーサーコンビネータを実装する 【おまけ】 HtmlBlock の改良

このエントリーは 改善版2024)kotlin でパーサーコンビネータを実装する【追伸】 の続きです。

この方法を使ってパースした場合、 最後にHTMLを出力する段階で HtmlBlock をまとめるコードがあるのですが、 やっていることは同じ種類の HtmlBlock を一つにしているだけです。 しかし、 HtmlBlock を sealed class として用意しているので、それを まとめる だけの操作をするのにもこれだけのコードを書く必要があります。

» Read More
改善版2024)kotlin でパーサーコンビネータを実装する 【追伸】

このエントリーは 改善版2024)kotlin でパーサーコンビネータを実装する 【後編】Bold パーサーを追加してみる の続きです。

後編では Hello, **World**! Hello, *Again*! というイタリックとボールドマークアップが混在した文字列をパースしました。 このとき、パーサーはイタリックやボールドの開始・終了に相当するマークアップ文字列を見つけてそれを <i></i> とか <b></b> に変換するという 発想で実装していました。

別の考え方として、イタリックのマークアップで囲まれた部分がイタリック属性を持つ文字列(ここでは Again がイタリック属性を持つ文字列)、 ボールドとしてマークアップされた部分がボールド属性を持つ文字列(ここでは World )という発想もあり得ます。 直接HTMLへ変換するのではなく、いったんASTに変換したいなどといったケースでは、このような発想でパーサーを書いた方がよいでしょう。

今回は前回のコードを修正して、 この 別の考え方 で実装してみます。

» Read More