JetBrains社が開発している Java VM や JavaScript 上などで動く、型の強いオブジェクト指向プログラミング言語。 以下の項目を設計目標に掲げている。
エラー防止の機能はよく働いており、Javaですっかりおなじみ「ぬるぽ」ことNullPointerExceptionがこの言語では意図的にプログラミングしないと出てくれないらしい…。
はじめに Ink APIとは 従来の課題 Ink APIが提供するもの サンプルコードを作成して動作を確認してみる さいごに 参考文献 はじめに こんにちは、最近キャリア採用でNRIネットコムに入社した磯川です。 今回初ブログということで、一番技術的に明るいAndroidアプリの内容にしたいと思います。 最近Jetpackライブラリにアルファ版が追加されたInk APIを触ってみたので、そちらについてまとめました。 Ink APIとは Ink APIは、Androidアプリに手書き入力やその描画機能といったインク表現をシンプルに実装するための新しいAPIとなっています。 今までは線を引くなどの…
はじめに Android Jetpack Composeで、ボトムナビゲーション& 複数バックスタックの実装について解説。 処理の説明 各ボトムタブごとにバックスタックを保持。 例えば、ホーム1→ホーム2→他タブ押下→ホームタブ押下の際、ホーム1に遷移するのではなく、ホーム2に遷移させる。 方法 まず、画面のRoute定義するためNavItemenumクラス作成。 enum class NavItem(val route: String, val icon: ImageVector) { //BottomNavigation HOME("Home", Icons.Default.Home), …
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の設計についても簡単に紹介します。
目指す姿 適応力 適応力 : 心理学。 変化 : 関数型プログラミングのこと。 ⭐️ゴリラ力 : セキュリティ/インフラ/低レイヤーのこと。相手からの猛攻を知識量で耐久する。 成功について 前提 : 努力はしない。これまでの努力のレッドオーシャンを自覚すること。 キーワード : 一攫千金。 タイプ 一攫千金? 補足 本業 OK 自治体 OK 低レイヤー NG NG。まだ「努力」が先頭に来ている。(というより、「楽しさ」が先に来ている) 心理学 ? いい感じ。 誰もいないからこそ、一攫千金を狙えそう。 TODOリスト 広報運営 DONE : 自動ツイート セキュリティ関連 バグバウンティ TOD…
2024/11/26 ・毎日繰り返すルーティンを記録できるアプリがほしいなと思って、自分で作ってみようと思いました。とりあえずやってみます。 ・使うパソコンのスペック:i7-1355U、メモリ32GB ・今日読んだ Android Studio とアプリツールのダウンロード - Android デベロッパー | Android Developers https://developer.android.com/studio?hl=ja&_gl=1*rvorxv*_up*MQ..*_ga*MTYyNzIyNDg3Ny4xNzMyNTU0NDc2*_ga_6HH9YJMN9M*MTczMjU1NDQ…
目次 はじめに Androidパーミッションの基本 パーミッションの種類 パーミッションモデルの変更点(Android 6.0以降) パーミッションをリクエストする方法 マニフェストファイルでの宣言 実行時パーミッションのリクエスト パーミッションの結果を処理する Activityでの処理 Fragmentでの処理 JetpackのActivity Result APIを使用したパーミッション管理 モダンなKotlinコード例 単一パーミッションのリクエスト 複数パーミッションのリクエスト ユーザーへの説明の表示 結論 1. はじめに Androidアプリでは、ユーザーのプライバシーを保護する…
目次 はじめに RxJavaとは 特徴と利点 基本的な使用例 Kotlinコルーチンとは 特徴と利点 基本的な使用例 RxJavaとコルーチンの違い RxJavaとコルーチンを組み合わせる理由 実装例 RxJavaからコルーチンへの変換 コルーチンからRxJavaへの変換 実践的なサンプル: データの取得と変換 結論 1. はじめに リアクティブプログラミングは非同期処理やリアルタイム処理において強力な手法です。Kotlinは、RxJavaとコルーチンという2つの非同期プログラミングのアプローチを提供しています。本記事では、それぞれの特徴を説明し、両者を組み合わせることで得られる利点について解…
もっと柔軟にintdashを活用したいみなさん、 こんにちは。ソリューションアーキテクトの伊勢です。 近年、お客様やパートナー様が自らカスタム機能を実装する場面が増えています。 intdashではサーバーAPIにアクセスするためのSDKを提供しています。 構成を刷新したintdash SDKが2024年6月バージョンより正式リリースとなりました。1 SDKは非常に幅広い使い方が可能です。 入門シリーズとして実践的な内容に落とし込んで解説していきます。 2022年11月バージョンからPublic Beta版を利用できました。↩
はじめに この記事について 以下の記事に触発されて自分でも書いてみました。 yoric.github.io プログラミング言語が好きなので、気になったものを見つけると触るようにしているんですが、ほとんどは新たな発見や驚くような便利な機能があって、毎回感心させられます。仕事ではなかなかあれもこれもというわけにいかないのが残念ではありますが、個人で使うアプリケーションや使い捨てのプログラムを書くときには、なるべくいろんな言語で書くようにしています。 仕事と趣味を合わせて20以上の言語に触れてきましたが、それらのなかでもとくに衝撃的だった言語をいくつか選びました。 これまで触ってきた言語 だいたい時…
JavaのWebフレームワーク事情 変わらないなーと思っていても、気が付いたら大きく変わっているのがJavaの世界です。Webフレームワークも例外ではありません。今からWebフレームワークを採用する基準は、Webフレームワークの元祖ともいえるStrutsが出てきた時期からは大きく変わっています。 しかし、そこで最新事情をチェックしておくか、と「Java Webフレームワーク」などで検索をしても、検索で出てきたものを並べてみただけのようなものが多く、なかなか参考になるようなサイトにたどりつけません。 ということで、前編・後編の2回に分けて最近のJavaのWebフレームワークがどうなっているかをま…
こんにちは、プロダクト開発部の中田です。 今回は、イベント連携基盤の技術選定におけるサービス比較結果のまとめと結論をお伝えします。 イベント連携基盤の技術選定をした話 〜背景・課題編〜 イベント連携基盤の技術選定をした話 〜EventBridgeさわってみた編〜 イベント連携基盤の技術選定をした話 〜Axon + MSKさわってみた編〜 イベント連携基盤の技術選定をした話 〜比較・結論編〜 ←今回はこの話 技術選定の検討自体にも長くかかりましたが、ブログ記事の執筆も大変でした。最後までお付き合いいただけると幸いです。 本記事の概要 これまでの記事では、イベント連携基盤の検討にいたった背景をはじ…
こんにちは、Beta Computing株式会社で学生アルバイトをしていますAndroidアプリケーション開発担当です。 来年4月から正式に入社予定ですので、現在は研修期間としてAndroid開発の勉強を進めています。 今回はAndroid開発のツールキットであるJetpack Composeについて学習した内容を当記事にまとめたいと思います。 Jetpack Composeの公式サイトはこちらになります。 Jetpack Compose UI App Development Toolkit - Android Developers Jetpack Composeとは? Jetpack Com…
はじめに こんにちは。レシピ事業部で長期インターン中の松本 (@matsumo0922) です。先日このブログでも公開した通り、クックパッドでは日本とグローバルで体験を統一する One Experience というプロジェクトを行っています。 One Experience 以前では Android 開発においても日本とグローバルでコードベースが異なり、それぞれ使用している技術やライブラリが異なる状態でした。特にグローバルのコードベース (以下 global-android と呼びます) では AGP のバージョンも低く、加えて groovy + buildSrc と言った旧世代のビルドロジック…
こんにちは、プロダクト開発部の中田です。 今回は、イベント連携基盤の技術選定において、前回のEventBridge編に引き続き、MessageBrokerの候補として挙げたAmazon Managed Streaming for Apache Kafka(以降、MSKと記述)およびAxon Framework(以降、Axonと記述)について、実際にさわってみて気づいた点をご紹介します。 イベント連携基盤の技術選定をした話 〜背景・課題編〜 イベント連携基盤の技術選定をした話 〜EventBridgeさわってみた編〜 イベント連携基盤の技術選定をした話 〜Axon + MSKさわってみた編〜 ←…
こんにちは、中山です 進歩の早い生成 AI 界隈ですが、今春も OpenAI 社から、GPT-4o などの発表があったり、Google I/O 2024 では、Gemini のいろいろな進化が紹介されていました 私たちソフトウェアエンジニアとしましては、これらの最新の生成AIに「使われる」のではなく、「使いこなす」側でありつづけないといけません! このような意気込みのもと、今回は、 Google の Gemini にトライしてみまして、 前回 の Microsoft Copilot とも比較しながら、その特徴を掴んでみたいと思います
Android用のアプリをKotlinで開発しました。 「Androidで内部htmlファイルを表示するプログラムを作った」というのが正しい表現かもしれませんが。 この方法でとりあえず、Androidアプリは完成しました。 でも、20人に作動をテストしてもらって許可をもらわないと、「Google Playストアに公開できない」。 そんなのムリ!。個人開発しているプログラマーに協力してくれる「優しいAndroidユーザーが20名」なんて、いません!だって、「ボッチ」ですから。 やはり、同様に困っている開発者が書き込んでいます。 個人開発の扉を閉ざして、Androidはどこを目指しているのでしょう…
ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。 www.ldi.co.jp 前回の開発環境紹介記事(LDIの開発環境を紹介します!(2023年版) - ローソンデジタルイノベーション テックブログ)から変化があるため、2024年の情報をご共有させていただきます。 はじめに 主なプロダクト 開発環境 プロセス 開発ツール CI/CD デザイン 使用ツール 開発 採用技術の全体像 採用アーキテクチャ 使用言語や主なライブラリ 品質 改善活動 締めのご挨拶 はじめに 私たち、ローソンデジタルイノベーション(LDI)は、 コンビニエンスストアチェーン「ロー…
これまで僕は何社かのiOS領域での技術顧問を引き受けてきた。技術顧問というと、Xで怪しいアカウントが「50社歴任!週末副業で楽に稼げる!」などと喧伝していることがあったり、いかがわしいイメージを持たれている方もいるかもしれない。 過去4年以上に渡って技術顧問を務めてきて「一旦何をやっているんだ」と聞かれることは多かったが、ちゃんとまとめていなかったので、この機会に記録しておく。 これまでの技術顧問 これまで僕は3社で技術顧問をしてきた。ちなみに本記事では各社名の敬称は省略している。 taskey株式会社(2020/3~2023/7) 株式会社マネーフォワード(2021/3~) 株式会社ユビレジ…