JetBrains社が開発している Java VM や JavaScript 上などで動く、型の強いオブジェクト指向プログラミング言語。 以下の項目を設計目標に掲げている。
エラー防止の機能はよく働いており、Javaですっかりおなじみ「ぬるぽ」ことNullPointerExceptionがこの言語では意図的にプログラミングしないと出てくれないらしい…。
Spring WebFlux/R2DBC/jOOQ/PostgreSQL/Kotlin Coroutines環境で、不意にselectクエリがハングする状況が何度か有りました。 関連する内容が多すぎて原因は解析し切れていませんが、そのような状況に対して見出した3つの対処法をまとめます。 何かより良い対処法をご存じの方いらっしゃいましたらコメント頂けると嬉しいです。 1. Flow内から別クエリを呼び出さないようにする 1発目から無条件でハングする場合、まずこれが疑われます。 特にトランザクションが有効になっているような場合、「前のクエリが終わってなくてコネクションを掴めない ⇔ クエリ結果の消…
jOOQで組み立てたクエリをConnectionFactoryへ直発行する仕組みを作ったのでまとめます。 なお、これは事情が有って作ったものであり、本来一切推奨できないコードであることはご承知おき下さい。 コード全体は以下の通りです。 基本的にはSelectクエリでの利用を想定しています。 import io.r2dbc.spi.Connection import io.r2dbc.spi.ConnectionFactory import io.r2dbc.spi.Readable import io.r2dbc.spi.Result import kotlinx.coroutines.flo…
以前こちらの記事で書いた通り、プロジェクト作成方法をまとめておこうと思います whitedog0215.hatenablog.jp 開発環境 記事作成時点での開発環境は以下になります Android Studio Koala Feature Drop | 2024.1.2 XCode Version 15.2 使用しているOSはMacです KMPプロジェクトの作成 www.jetbrains.com 公式サイトのこちらの手順に沿って進めていきます Android Studioでの開発環境はすでに構築済みの前提になります Kotlin Multiplatform pluginの導入 クロスプラッ…
Jetpack Composeは、Android UI開発に革新をもたらす強力なツールキットである。そのメリットと魅力は以下の点にある。 メリット宣言的UIKotlinとの統合コンポーネントの再利用性リアクティブプログラミングモデルプレビュー機能 デメリット学習曲線パフォーマンスの懸念サードパーティライブラリの対応 魅力効率的なUI開発が可能 宣言的UI 開発者は、UIの最終的な状態を記述するだけで良く、その実現方法をフレームワークに委ねることができる。これにより、コードの可読性が向上し、保守が容易になる。 Kotlinとの統合Kotlinの言語機能を最大限に活用し、簡潔で表現力豊かなコードを…
Kotlinのメリット・コードの簡潔さKotlinは、Javaよりも短く簡潔なコードが書けます。これにより、開発時間の短縮や可読性の向上が期待できる。・Null安全性Kotlinはデフォルトでnull安全性が組み込まれており、null参照によるエラーを防ぐことができる。・Javaとの互換性KotlinはJavaと高い互換性を持ち、既存のJavaライブラリやフレームワークを利用できる。・マルチプラットフォーム対応Kotlinは、ネイティブ、ブラウザ、サーバーサイドなど、様々なプラットフォームで使用できる。・拡張機能Kotlinは既存のクラスに機能を追加する拡張機能をサポートしている。Kotlin…
状況 jOOQのコード生成後にフォーマッティングするため、kotlinterを用いfinalizedBy("formatKotlin")としていたプロジェクトで、nu.studer.jooqからorg.jooq.jooq-codegen-gradleに移行する際、以下のようなエラーが出るようになりました(※編集しているため実際のエラーメッセージと異なる可能性あり)。 Reason: Task 'formatKotlinMain' uses this output of task '...' without declaring an explicit or implicit dependency…
概要 Web API: The Good Partsという本を読んで、Web APIの仕様内で統一を図ったほうが良い点があることが分かった。 たとえば、パスで使用する文字列の単語の分かれ目をどのように表現するのか。 この記事では、Spring Web MVCで実装したWebAPIのパスがケバブケースになっているかどうかをJUnitでテストする。 使用する言語やライブラリ Kotlin 1.9.25 Spring Boot Starter Web 3.3.3 JUnit Jupiter 5.10.3 方針 Spring Framework公式リファレンスによると、パスとリクエストハンドラのマッピ…
こんにちは! 技術本部 Sansan Engineering Unit Mobile Applicationグループの桑原です。この度、Sansanモバイルアプリでは開発スピードを加速させるため、実プロダクトにKotlin Multiplatform(以下、KMP)を導入しました! まずは1画面の導入から始めましたが、今後は既存の画面も順次KMPに移行していく予定です。この記事では、Androidエンジニアの視点から、SansanアプリにKMPを導入した背景やその成果、さらにKMPの設計についても簡単に紹介します。
最近、FlutterとKotlinの勉強を開始しました。 参考書を見ながら勉強を進めていたところ、今まで遭遇していないエラーが発生したので今後のためにメモとして残しておきたいと思います。 【Flutter】Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.の解決法に関するメモ エラー内容としては以下です。 Module was compiled with an incompatible…
はじめに こんにちは。バックエンドエンジニアの齋藤です。 現在PHP→Kotlinへのリアーキテクチャを進めていますが、最近実装した機能でリリース前の負荷テストを行ったところ、JVMのクラッシュが発生しました。 リアーキプロジェクトでは、ECS・Fargate環境を利用していますが、JVMがクラッシュするとタスクが終了してしまい、エラーログ(hs_err_pidxx.log)を確認できず、また高負荷環境でのみクラッシュが発生するためローカルで再現もできず困っていました。ChatGPTから「S3に保存する方法がよいらしい」という情報をもらい、クラッシュ時にS3にログを保存して、後で確認できるよう…
目指す姿 適応力 フィジカル強化 : セキュリティ分野 適応力 : 心理学 変化 : 関数型プログラミング 成功について 前提 : 努力はしない。これまでの努力のレッドオーシャンを自覚すること。 キーワード : 一攫千金。 タイプ 一攫千金? 補足 本業 OK 自治体向け対応 OK セキュリティ分野 NG NG。まだ「努力」が先頭に来ている。(というより、「楽しさ」が先に来ている) 心理学 ? いい感じ。 誰もいないからこそ、一攫千金を狙えそう。 TODOリスト セキュリティ関連 (成功者)バグバウンティ バグバウンティ入門(始め方) サイボウズ 完了 : 登録/脆弱性診断環境アカウント払出し…
初めまして、2024/10/01にバックエンドエンジニアとして入社した張です 読み方はタイトルのように、ちょうと申します 部署 meviyの共通部分を開発、運用保守のチームに所属しています バックエンドエンジニアとして入社しましたが、 必要に応じてフロントエンドにも携わるチームです 技術スタック role language framework front-end typescript React back-end Scala play 詳しい内容はここにあります ついでに、 僕はMacプラスUS配列キーボード派で、会社では少数派のようです 実はJIS配列を使うと、commandを叩くつもりで英…
前から気になっていたRecyclerViewのスペース…orz 両脇にspace部品入れられないじゃないか!と思っていたら…どうやら、space部品をあえて設定するのではなく、RecyclerViewの中で出来るようですw <androidx.recyclerview.widget.RecyclerView android:layout_marginStart="8sp" android:layout_marginEnd="8sp" --- 省略 --- /> この記述をするだけで、スペースを左右に設定してくれる!!という便利な宣言があったとは…w これを知ったのは、RecyclerViewを…
TextViewに前・後ろへ1つのアイコンを表示するのは結構簡単で、レイアウトに記述しちゃえば表示するんだけど…。 <!-- 前ver --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/test" app:drawableStartCompat="@drawable/baseline_image_24"/> 文字列の間に入れるってなると、このやり方では出来なさそうなので…色々調べてみました! 参考になったHPはこちらです^ ^ …
はじめに こんにちは、WEARフロントエンド部Androidブロックの酒井柊輔です。普段はファッションコーディネートアプリWEARのAndroidアプリを開発しています。 WEARアプリは2024年5月に大規模なリニューアルをしました。そのため新たに多くの画面やUIを開発する必要がありました。しかしWEARアプリはビルド時間が長く、少しの変更を確認するだけでも数分かかるため、新規のUIの作成やUIの変更と確認に多大な時間を要していました。 このような課題を弊チームでは、UIの開発と確認をするための、ビルド時間の短い簡易アプリを作成することで解決しました。本投稿ではそのUI確認用簡易アプリを用い…
こんにちは、エス・エム・エス テックブログ運営の大縄です。 今回は、同時期に SRE としてエス・エム・エスに入社した加我さん、山口さんによる、コミュニティ活動に関する対談記事をお届けします。 自己紹介 ——本日はよろしくお願いします。まずは自己紹介をお願いします。 加我さん: 私は 2024 年 4 月にエス・エム・エスに中途で入社しました。新卒では Java プログラマーとして中小の SIer に入社したんですが、色々と社内での調整があり、 QA エンジニアとしてキャリアをスタートしました。その中で、サーバーのミドルウェアの検証や評価計画を行う過程で OS のインストールやハードウェアの構…
toastyは先日tokioから発表されたORMです。 tokio.rs このORMは現状開発段階のもので、まだ実用に耐えうる段階にはないとGitHubには書かれています。というか、crates.ioにはダミー用関数が用意されているだけで、プロジェクトの依存に追加したとしてもまだ何もできません。現時点で対応しているのはsqliteとDynamoDBのようで、他のデータベースないしはCassandraなどには今後対応予定とのことです。async対応しています。また、SQLとNoSQL対応しているとなると、両者を抽象してくれるなにかかと思われるかもしれませんが、両者に対する操作を抽象してくれるわけ…
whitedog0215.hatenablog.jp こちらの記事の続きになります 新規開発だったらこの手順でいいと思いますが、世の中そんなに新規開発することってないですよね 開発当初にAndroid、iOSアプリを別々に作成してそれぞれメンテしているようなシチュエーションもよくあると思います 今回はそんな感じの場合を想定して、Kotlin Multiplatformでsharedモジュールを作成して両OSから呼び出せるAPIを作成していきたいと思います サンプルプロジェクト こちらにサンプルプロジェクトを作成しました github.com トップ階層がandroidのプロジェクトとなっており…
こんにちは!スタッフエンジニアの @kenkoooo です。先日、賃貸住宅のデータサービス「estie レジリサーチ」の提供を開始しました。 prtimes.jp estie レジリサーチとは、賃貸住宅物件の取得や運用の意思決定をサポートするためのツールで、データ収集や分析を高速に行えることをウリにしています。アプリの技術選定もこれに沿ったものになっています。サービス全体は、ウェブアプリ・査定サービス・データパイプラインといった要素からなりますが、この記事ではウェブアプリ側で採用されている技術を見ていきます。 Rust によるバックエンド estie レジリサーチはデータが肝になるアプリなので…
はじめに Kotlinを使った事は全然無いですが、過去のLTテーマで発表された「これどうやって動いてるんだ? Spring Framework/Bootのソースを読む」や「Kotlin向けOSSに貢献してきて感じたアレコレ」の資料を読んだことがありました。 これらの資料が非常に勉強になったのもあり、面白そうだったので初めて参加してみました。 参考リンク Server-Side Kotlin LT大会 vol.13 - connpass Server-Side Kotlin Meetup - connpass #serverside_kotlin_meetup - 検索 / X LT編 LTでは…
はじめに 皆様こんにちは、ソーシャル経済メディア「NewsPicks」(Media Infrastructureチーム)エンジニアの北見です。 弊社では Server Side Kotlin を採用しており、昔に書かれた一部のコードは Java ですが、基本的に新規コードは Kotlin で書いており、既存の Java コードも Kotlin 化を推し進めています。 tech.uzabase.com tech.uzabase.com 今回は Kotlin の sealed class を使って、コードをシンプルにする例をご紹介します。 kotlinlang.org 微妙に異なるけど殆ど同じ処理…
こんにちは、大阪開発拠点でマネーフォワード クラウド連結会計を開発しているTaskです。 今回、JavaのカンファレンスであるJJUG CCC 2024 Fallに参加したので、聴講したセッションを紹介したいと思います! JJUG CCC JJUG (Japan Java User Group) CCCは年2回、春と秋に開催される国内最大級のJavaカンファレンスです。 日本全国のJavaユーザーが一堂に会し、Javaに関する良質なセッションが提供されるイベントです。 僕たちのチームではバックエンドにKotlinとSpring Bootを使っています。 一方で、JJUG CCCではJavaに限…
はじめに 2024年10月25, 26日に有明で行われたKaigi on Rails 2024に、参加してきました!! 今回はKaigi on Rails初参加かつ最近Railsの世界に飛び込んだメンバーが気になったセッションをレポートしていきます! レポーター otaka(@oh_minisera) 新卒は病院で理学療法士として従事。2社目からエンジニアに転職しシステム開発会社、DMM.comを経て2024年5月にスマートバンクにJOIN。 今までPHP、Server-Side Kotlinを使用。スマートバンクからRuby on Railsを始める。 kurisu(@ryomak_13) …
PIXIV DEV MEETUP 2024 運営チームのrenmaです。 ピクシブは2024年9月20日(金)にオフラインの完全招待制カンファレンス「PIXIV DEV MEETUP 2024」を開催しました。 当日の会場の様子はこちらの記事にてご紹介していますので、あわせてご覧ください。 inside.pixiv.blog MEETUPで行われた登壇セッションはキーノート、メインセッション、LT(ライトニングトーク)セッションの3つに分かれており、計42名の社員が登壇しました。登壇セッションではピクシブのビジョンを実現するためにチャレンジしていることや、プロダクトを支える技術、そしてその裏に…