JetBrains社が開発している Java VM や JavaScript 上などで動く、型の強いオブジェクト指向プログラミング言語。 以下の項目を設計目標に掲げている。
エラー防止の機能はよく働いており、Javaですっかりおなじみ「ぬるぽ」ことNullPointerExceptionがこの言語では意図的にプログラミングしないと出てくれないらしい…。
Androidアプリの開発に取り組むなら、プログラミング言語の習得は避けて通れません。以前はJavaが主流でしたが、現在はKotlinという言語が推奨されています。どちらの言語も広く利用されているため、両方の特徴を理解しておくことが重要です。Javaは歴史が長く、Webシステムなど多くの現場で使われている実績があります。一方でKotlinは記述が簡潔で、エラーを防ぎやすい仕組みが整っているのが利点です。新しいプロジェクトではKotlinが選ばれる場面が増えており、学習の優先度は高いでしょう。言語の文法を覚えるだけでなく、開発キットを使いこなす技術も同時に求められます。画面のボタンを押した時の動…
週ごとに暑さと寒さが入れ替わり、人間に優しくない令和時代を生きている開発部の小宅です。 Android開発で誰もが一度は「とりあえず this 渡して動いたからヨシ!」とやり過ごす Context。でも、こいつの裏側を知ると、実は結構マニアックで面白い使い方ができるんです。 今回は、実務で「おっ」となるようなContextの活用テクニックを3つ紹介します。 1. attachBaseContext のオーバーライドで「局所的に言語やテーマを上書きする」 「アプリ全体じゃなくて、この画面だけ英語にしたい」「このActivityだけダークモードを無視したい」などなど、開発をしていると、たまにこうい…
はじめに SPAの画面遷移を検知する場合の問題点 SPAの画面遷移を検知する方法 最後に はじめに Androidエンジニアの篠本(ささもと)です。 今回は、WebViewにてSPA(Single-page application)の画面遷移を検知する方法について、ご紹介をさせていただきます。 なお、この記事は以下の環境を前提としています。 Kotlin 1.9.24 Android APIレベル 35 また、iOSにおけるWebViewでのSPAの画面遷移の検知については、以下の記事にてご紹介しておりますので、気になる方はこちらもご参照いただければ幸いです。 techblog.ldi.co.…
こんにちは。開発部第一グループの岡田です。 今回は、動画をピクチャーインピクチャー(PiP)で再生できるAndroidアプリの実装方法についてご紹介します。 使用技術 Kotlin 2.0.21 ExoPlayerライブラリ 主な機能 動画の再生 PiPモードへの切り替え(動画を小窓で再生しながら他の操作が可能) 実装ポイント 1. ExoPlayerのセットアップ build.gradle.kts implementation("androidx.media3:media3-exoplayer:1.8.0") implementation("androidx.media3:media3-ui…
この記事は はてなエンジニア Advent Calendar 2025 24日目の記事です。 🎄 Happy Holidays! 2025年も残すところわずかですね。キンダープンシュがおいしい季節です。 この記事は Kotlin 2.3.0 および Ktor 3.3.3 に準拠しています。また、記事中に挿入しているイラスト画像は Nano Banana Pro により生成しています。 Ktor は JetBrains が開発する Kotlin 向けの HTTP フレームワークです。HTTP サーバーだけでなく、HTTP クライアントも提供されています。Kotlin coroutines を活用…
こんにちは!ソリューション開発部の片岡です。 普段はKotlinを使ったバックエンド開発を行っています。 今回はMCP(Model Context Protocol)のサーバーとクライアントをKotlinで実装する機会があったため、その知見を共有したいと思います。 本記事は OPTiM TECH BLOG Advent Calendar 2025 Day 18 の記事です。 MCPとは MCP(Model Context Protocol)は、Anthropicが提唱するLLMアプリケーションとデータソース・ツールを接続するための標準プロトコルです。 LLMが外部ツールやデータにアクセスするた…
以前、androidのアプリ開発の実用性について触れましたが、現在はその状況が大きく変わっています。2017年にGoogleがKotlinをAndroid開発の公式言語として採用したことで、アプリ開発の現場では劇的な変化が起こったからです。 Kotlinは元々JetBrains社が開発した言語で、Java仮想マシン上で動作する特性を持っています。最大の特徴は、Javaとの完全な互換性を保ちながら、より簡潔で安全なコードを書けることです。null安全性が言語レベルで組み込まれており、NullPointerExceptionという開発者の頭を悩ませる問題を大幅に削減できます。記述量の面でも大きな違…
この記事はSafie Engineers' Blog! Advent Calendar 10日目の記事です こんにちは!Safie(セーフィー)でモバイルアプリの開発をしている河原(@rui_qma)です。 🚀 はじめに:なぜComposeでドラッグ&ドロップが必要なのか 従来のViewシステムとの壁 AndroidチームではAndroid ViewベースのUIから Jetpack Compose ベースのUIへの移行を進めています。 弊社のプロダクト「Safie Viewer(セーフィー ビューアー)」のカメラ一覧画面には、カメラの順番をドラッグ&ドロップ(D&D)によって並び替える機能があ…
この記事はセーフィー株式会社 Advent Calendar 2025の12月6日の記事です。 こんにちは! セーフィー株式会社のAndroidエンジニアのジェローム(@yujiro45)です🎄 昨年、私が書いた「AndroidでSceneViewを使って、3D/ARを表示する」という記事で、アプリに3D/AR機能を簡単に実装できるライブラリを紹介しました。 しかし現在、SceneViewはメンテナンスされておらず、コントリビューターさんのGitHubでのコメントによれば新しいリリースの予定はありません。 出典:Github, https://github.com/SceneView/scen…
謎の型Runnnableについての質問。うーん、まあ大体正解。実行処理Run()を持つという決まりのインターフェイスだと。 ただの関数みたいなものなので呼び出し側によって変わってくるわけだな 後の解説で分かるんだけど、Handler.はメインスレッドに処理を渡す役割で、Threadは別のスレッドを新しく立てるメソッドなのでそっちに渡されるとそっちで実行されるだけの話と これ名前が悪くないかい?Oerrideなんて言うから・・。で、元のメソッドを使おうと思ったらSuper.で呼び出すと言うだけの話でした。 なるほどね、はいはい。 ということはこのOverrideの仕組みはAndroidでアプリを…