JetBrains社が開発している Java VM や JavaScript 上などで動く、型の強いオブジェクト指向プログラミング言語。 以下の項目を設計目標に掲げている。
エラー防止の機能はよく働いており、Javaですっかりおなじみ「ぬるぽ」ことNullPointerExceptionがこの言語では意図的にプログラミングしないと出てくれないらしい…。
github.com greadle.propertiesを弄る isObsoleteJdkOverrideEnabledを有効にしてJava 8未満を無視。 # Enable overriding JDK 6 and JDK 7 with JDK 8 in java toolchains # This flag is required if you don't have JDK 6 or JDK 7 manually installed -# kotlin.build.isObsoleteJdkOverrideEnabled=true +kotlin.build.isObsoleteJdkO…
はじめに こんにちは、新卒2年目の菊池(akikuchi_rks)です。 近年、Androidアプリ開発のみならず、サーバーサイドの開発言語としてもKotlinが急速に注目を集めています。私自身もKotlinを使ってサーバーサイドの開発を行っており、豊富な機能やシンプルな文法に魅力を感じています。 Kotlinを使用していて特に感じるのは、そのコレクション関数の充実性です。コレクション操作はプログラミングにおいて頻繁に行われるため、これらの関数が豊富であることはKotlinの特長のひとつと言えると思います。 また、これにラムダ式を組み合わせることで、よりシンプルで効率的なコーディングが可能とな…
以下のように、additionalPropertiesのtypeを指定すると、値の型を変えられます。 例ではstringを指定しているので、Kotlinで生成した場合Map<String, String>になります。 type: object additionalProperties: type: string type: integerにすればMap<String, Int>になりますし、type: stringのままformat: uuidにすればMap<String, UUID>になります。
非日常生活に入る前に 下書きをしていた記事があったことを思い出しました ARにハマっていて勉強中だったのに…すっかりリセットされてしまいました また日常に戻ったら1からやり直しかな(悲) その時のために まとめたものをアップしておきます 以前アップしたUnityのスマホをタップしてコダックを召喚 everydayisagoodday.hatenadiary.com これのAndroid Studio版ですAndroid StudioでもARアプリができるはずなのでいろいろ調べながら挑戦してみました が うまくいかず保留にしようかと思い始めた頃この記事に遭遇 qiita.com 解説通りにやって…
こんにちは、モバイル開発チームのhyoshです。 弊社では各分野の特定のテーマに沿ってエンジニアが議論する「TechCafe」というイベントを定期開催しています。 PHPTechCafe フロントエンドTechCafe そして先日私を含めた弊社モバイル開発チームが初となる「モバイルTechCafe」を開催しました! rakus.connpass.com 本ブログでは開催までの準備過程や当日の内容についてレポーティングさせていただきます。 TechCafeについて 準備編 テーマ選定 参加者選定 打ち合わせ 当日編 紹介したイベント 複雑さに立ち向かうためのコードリーディング入門 認証体験向上の…
ふと、Android で動作するデジタルアートを作りたいと思い立ち、衝動に身を任せて簡単なものを作った。そのとき学んだことを、忘れっぽい自分のためにメモしておく。 開発環境はAndroid Studio Electric Eel 2022.1.1 目次 準備 - アニメーション - ブレンドモード 本編 - クリエイティブコーディング アニメーション 一定時間ごとに、onDraw()を呼び出せば良い。invalidate()を使えば、onDraw()を強制的に呼び出すことができる。 Handlerを使う方法もあるが、今回はTimerAnimatorで実装してみる。 import ... //省…
むおおおお! 久しぶりに個人ブログを更新したけど、 個人的に脳内を整理するために書き散らしたエントリなので役に立たないかも。 Kotlin Flowを勉強する場合、例えば以下のサイトを流し読む方が役には立つハズ… 勉強するときに見たサイト Android での Kotlin Flow | Android Developers StateFlow と SharedFlow | Kotlin | Android Developers もう迷わないCoroutines(記事版〜余談編〜) Kotlin Coroutines Flow とは。 #Kotlin - Qiita StateFlowの深堀り…
昨日からの続きです 今日は各ボタンをタップした時の処理を編集します // カラーチェンジメソッド fun ChangeColor(colorSelected: String) { when (colorSelected) { "black" -> color = Color.BLACK "red" -> color = Color.RED "blue" -> color = Color.BLUE } paint!!.color = color } // clearメソッド(初期化とキャンバスクリア) fun Clear() { pathList.clear() colorList.clear(…
はじめに 株式会社スペースリー iOSエンジニアの樋川です。 普段は弊社サービスの、物件の撮影を補助/管理するアプリのiOSの開発をしています。 現在、モバイルアプリチームはマネージャー1人、iOS/Android 2名ずつの計5名の構成となっています。 今回は、モバイルアプリチームで行っているモバイルLT会について紹介したいと思います! LT会が始まった経緯 OSを横断して知識を共有する コミュニケーションを増やす 上記2点の機会を増やすために始まりました。 特に完全リモートワークの中で、チーム内のコミュニケーションの重要性が高まっています。 開催方法 頻度は隔週水曜日に1時間ほどです。 発…
今日は手書きメモアプリの描画するクラスCustomSurfaceViewを作成します CustomSurfaceView.ktを編集していきます import android.content.Context import android.graphics.Bitmap import android.graphics.Bitmap.CompressFormat import android.graphics.Bitmap.createBitmap import android.graphics.Canvas import android.graphics.Color import android…
過去にはそれなりにQiitaに記事を書いていたのですが、何を思ったのかアカウントを消したうえでZennに移ったようです。 おそらくその当時はプラットフォームは一つだけ持って記事を公開していく、と考えていたのだと思います。 が、半年ほど前に『Qiita Night』で登壇させていただいたことをきっかけに、再びQiitaのアカウントも作り直しました。 increments.connpass.com しかしその後あまり記事は書かず・・・ そうしている間にしずかなインターネットを始めてみたり、noteをはてなブログに移したりをきっかけにQiitaの使い方も見直そうかと思いました。 今のところ雑に考えて…
先日 Railroads という、Rails開発向けのIntelliJ Platform Pluginを作りました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました - メモ的な思考的な 最初に作った段階では「動くものを作り切る」ことを優先し、 動作が正しいことは実機で担保 テストコードは後で追加 という方針でプラグインを作成・リリースしました。 ただ、今後の継続的なメンテナンスのことを考えると、テストコードがあると色々安心できそうです。 そこで、今回テストコード…
エキサイト株式会社メディア事業部エンジニアの佐々木です。Javaにrecord型が登場し、SpringBootでも結構いろいろなところで使用できるようになりました。今回は、application.ymlからrecordを使用して取り出す方法になります。 前提 application.yml コード まとめ 最後に 前提 環境は下記になります。 $ java --version openjdk 21.0.2 2024-01-16 LTS OpenJDK Runtime Environment Corretto-21.0.2.13.1 (build 21.0.2+13-LTS) OpenJDK 6…
こんにちは、UPSIDERで日々モバイルアプリ開発をしているふっくです。 UPSIDERでは今後、よりアプリ開発に注力し決済プラットフォームの中核的な役割を果たすことを目指しています。 今回は、今後の開発・運用を目指して考えたFlutterアプリ向けのアーキテクチャを紹介します。 ネイティブアプリの世界で触れてきた色々なアーキテクチャ・フレームワークを参考に、開発の後半でも順調にスケールさせることができるように、工夫を凝らしました。 本アーキテクチャで作ったサンプルアプリもあるので、ぜひ以下のリンクから見てみてください。 https://github.com/upsidr/flutter_ar…
Jetpack ComposeのUIのテストについてかなり詳しく聞きました。 よく分かりませんでしたが、ドラッグアンドドロップのような複雑な動作もテストできるようです。 Jetpack Composeのテストについて、createComposeRule() が返すオブジェクトを用いてできることの一覧を挙げてください。 それぞれのメソッドの使い方が分かるような例をお願いします。 4. waitForIdleの使い方をもう少し詳しく教えてください。 5. runOnUiThreadについても教えてください。 UIの検証や操作の例もお願いします。 もし、ブロック内のコードを直接実行した場合、結果はど…
KotlinでMockitoを使う方法を詳しく聞いてみました。 Kotlinのクラスはデフォルトでfinalクラスであるため、通常のクラスはMockitoで扱えません。そこで、依存関係をmockito-coreに代えてmockito-inlineを使用する必要があります。話の流れで最後の方で聞きましたが、むしろ最初に留意すべき点です。 後は、Mockitoで検証できる振る舞いをいろんな側面から聞きました。 メソッドの戻り値だけでなく、モックオブジェクトの呼び出し回数、特定の例外を投げるか、など、さまざまなことを検証できます。 Mockitoの使い方を詳しく教えてください。コードはKotlinで…
Roomデータベースのテスト方法も聞いてみました。 コンテキストはInstrumentationRegistry.getInstrumentation().targetContextで取得します。データベースは、インメモリーデータベースを、RoomのinMemoryDatabaseBuilder()を使用して作成します。 以前、アプリを作成したときはこの方法を知らず、逐一本番環境で実行して間違えたら処理を書き直して再度実行という気の長いことをしていました。 公式ドキュメントを見てもやり方が分からなかったのですよね・・。 RoomデータベースをJUnit4でテストする方法を教えてください。 上記…
Matcherクラス、Mockオブジェクト、各テストの前後の処理を記述するRuleについて、簡単に聞いてみました。 JUnit4で使えるMatcherについて教えてください。 正しい例外が発生するかどうかの検証はできますか? @Testアノテーションで指定できるテストが他にもあれば教えてください。 テストケースはpublicメソッドについてすると聞いたことがあります。この点について教えてください。 ありがとうございます。Androidの環境なのですが、Mockオブジェクトを利用したテストについても教えてください。 initMocksにthisを渡すのはなぜですか? Before, Afterア…
AndroidではJUnit4がテストフレームワークとして用いられることが多いそうです。 通常のクラスを初め、Jetpack ComposeのUIのロジックまで、テスト駆動開発の手法が使えるそうで、仕事で業務アプリを作成したときのUIのテストで散々苦しんだ経験のある僕としては隔世の感です。 Jetpack ComposeのUIをテストする方法については後半で詳しく聞きましたが、できることはもっと多そうです。機会を改めて、さらに詳しく聞きたいと思っています。 AndroidアプリをKotlin, Jetpack Composeで開発する場合、Unit Test等のテストはどうやってすればよいので…
こんにちは。エンジニアの松下です。 最近視力が落ちたな〜と思い、そろそろメガネを新調したいな〜と思っています。 そういえば、 DroidKaigi 2024 が発表されました。去年に引き続き弊社も参加したい! DroidKaigi 2024のティザーサイトをオープンしました🎉2024年9月11〜13日に東京で開催予定です!皆様のご参加をお待ちしております!協賛をご検討の皆様もこちらからお問い合わせください!https://t.co/9wFP54n4N2セッション公募も間もなく開始します。続報をお待ち下さい! #DroidKaigi— DroidKaigi (@DroidKaigi) 2024年…
こんにちは。スパイダープラスでiOSエンジニアとして働いているJです。モバイルアプリを開発している方にはなじみのある名前だと思いますが、iOS、Android両方開発する時に使えるモバイルDBである「Realm」について、今回はお話したいと思います。 ※なお、文中でスパイダープラスとカタカナの場合は会社のこと、SPIDERPLUSと英大文字の場合はサービスのことを指します。 1. Realmの概要 2010年度後半にAlexander Stigsen、Bjarne Christiansenという二人がTightDBというプロジェクト名でスタートして、2014年にRealmと名前を変更して現在ま…
2020年に導入されたというDataStoreオブジェクトを用いて、設定値を保存する方法を聞きました。 SharedPreferencesを改善するために導入されたものだそうですが、キー・値のペアを保持する際、キーに値の型情報を持たせるという手法を用いていたり、非同期処理での読み書きに対応するため、値の読み込みをFlowを用いて行ったりと、かなり独特な使い方です。 慣れるかな・・。 ちなみに以下の例では、Composable関数の変更をトリガーするために、FlowのオブジェクトにたいしてさらにcollectAsState()が呼び出されています。 Jetpack Composeで、Prefer…
kotlinのチュートリアル的な学習です。 お誕生日を祝うメッセージを画面に表示するアプリを作ってみましょう。 developer.android.com 完成図はこのようになります。 Happy Birthday Sam! From Emma と表示されています。スマホ画面に文字を表示させるだけのアプリですが、改行、文字サイズの設定をする必要があります。基礎的なスキルがあれば簡単に作れますが、その段階で躓きかけていた自分としてはありがたい。 新規プロジェクト➡Empty Activity を選択。 Nameを設定。 Minimum SDKはAPI 24に設定。 いつもの、「Hello And…
Jetpack Composeでは、EditViewではなく、TextFieldを用います。 また、保持するテキストは、SpannableStringではなく、AnnotatedStringです。 再表示周りの処理が従来のものと異なるので、似た機能の別コンポーネントが用意されているということだと思います。 データベースへの保存は、Kotlinx.serializationライブラリなどを利用してJson形式にシリアライズしたものを保存するようにすると良いようです。 Jetpack ComposeではEditViewにあたるComposable関数はありますか? 従来の方法と同様に、Spanna…
JsoupというJavaのライブラリを用いて、HTMLを操作する方法を教えてもらいました。 元の文書がXMLの場合、パーサーを指定する必要があるそうなので、忘れようにしたいです。 後半では、読み込み・書き込み時の文字コードの設定方法も教えてもらいました。 Kotlinのプログラムでhtmlの表を、見にくくても良いので、論理的な構造は保ちながらテキストに表示したいです。どうすれば良いでしょうか? 実は、HTMLを保持している元の文書がXMLなのです。同じJsoupライブラリで大丈夫ですか? Jsoupについて、歴史や他のライブラリと比較した場合との特徴を教えてください。 元のXMLに1MBに近い…