JetBrains社が開発している Java VM や JavaScript 上などで動く、型の強いオブジェクト指向プログラミング言語。 以下の項目を設計目標に掲げている。
エラー防止の機能はよく働いており、Javaですっかりおなじみ「ぬるぽ」ことNullPointerExceptionがこの言語では意図的にプログラミングしないと出てくれないらしい…。
Swift: for i in 1..<5`` Kotlin: for (i in 1 until 5)
もしリストの先頭または末尾だけ操作する場合、ArrayDequeを使え!
スマレジの テックファーム(SES 部門) でWebエンジニアとして働いている やまて(@yamate) と申します。 実務では SES の派遣先で、テーブルオーダーシステムの機能改修業務の設計などを担当しています。(2022 年 3 月〜 2023 年 3 月末予定) 2023 年 1 月からは Flutter を実務で使用することになって、キャッチアップ中です。 はじめに この記事では、 Flutter の MethodChannel を使って Kotlin のコードを実行するサンプルアプリの実装手順をまとめます。 MethodChannel とは api.flutter.dev docs…
雰囲気でrepeatOnLifecycleを使ってきたんですが、ちょっと気になったのでrepeatOnLifecycleの内部処理を覗いてみます!
概要 DropBoxAPIを使用して、一覧を取得します。 開発環境 Mac OS 13.2 Android studio 2021.2.1 Patch 2 事前準備 develop-imonari.hatenablog.com DropBoxの認証画面を表示して認証します。 binding.buttonSign.setOnClickListener { this.context?.let { it1 -> // ブラウザで認証画面が開きます。 Auth.startOAuth2Authentication(it1, {drop_box_app_key}) } } 以下の画面が表示されます。そのま…
概要 kotlinでDropBoxのAPIを使用するための事前設定です。 開発環境 Mac OS 13.2 Android studio 2021.2.1 Patch 2 DropBoxでAPIを使用する準備 DropBoxDeveloperでappを作成 以下のページのcreate appボタンからappを開始します。 https://www.dropbox.com/developers/apps以下の内容を入力しcreate appボタンで作成されます。 作成されたらapp keyをメモしておきましょう。 後で使用します。 AndroidProjectの設定 DoropBoxのライブラリを…
val fruits = listOf("apple", "banana", "pear") fruits.forEachIndexed { index, fruit -> println(index) println(fruit) }
こんにちは。Androidエンジニアの伊藤です。 スギサポwalkという歩数計アプリの開発を担当しており今回は Jetpack Composeを導入したので、この取り組みについて書いていきます! Jetpack Composeとは なぜ導入しようと思ったのか どのように導入していったのか? 問題の解決 プロダクトへの導入方針 実際に導入した箇所の説明 連続ログインボーナス 画面構成について レイアウトについて 工夫した点 改善点 実際に導入してよかったこと 今後の課題 Jetpack Composeとは Jetpack ComposeはAndroidの新しいUIツールキットです。 宣言的UIと…
TL;DR gradle.kts利用の場合、引数をpluginsブロックで参照することはできないようだった 代替案としては、環境変数に設定 -> System.getenvで読み出す形式にするのが一番シンプルそうだった やり方 紹介する内容は以下からの抜粋です(余計なdiffが入ってしまっていますが、lint-and-test-main.ymlとbuild.gradle.ktsだけ見て頂ければ大丈夫です)。 Kotlinのバージョンが対象です。 github.com build.gradle.kts側の設定 環境変数から設定を取得し、取得できなければデフォルトを用いるように設定しています。 p…
TL;DR 自分が遭遇した問題の原因はorg.jmailen.kotlinterプラグインとKotlinバージョン間の互換性が無いことだった プラグインバージョンを確認するのが良いかも 起きたこと Kotlinプラグインのバージョンを1.7.21 -> 1.5.32に変更した所、Caused by: java.lang.NoSuchFieldError: KOTLIN_STAT_LABEl_PROPERTYでsyncが失敗するようになりました。 ログ・スタックトレースは以下の通りでした。 ログ・スタックトレース Execution failed for task ':prepareKotlin…
概要 4 月〜6 月の目標です。 4 月〜6 月の目標 勉強関連 4月から6月の目標(Objective)は「DevOps・CI/CD とプロダクトマネジメント・テストマネジメントの観点を持ち実践できるようになること」です。 理由は持続的な成長ができるソフトウェアおよび好きな技術を導入するには、企画、設計、開発、テスト、運用の広域をカバーできるようになる必要があるからです。 この Objective をソフトウェアテスト・プロダクトマネジメントと CI/CD・DevOps の 2 つの Objective に分割して注力します。 3 ヵ月間の OKR は以下です。 注力分野 Objective…
こんにちは。倉内です。paizaでは、難易度別のプログラミング問題を制限時間内に解き、その結果からプログラミングスキルをS・A・B・C・D・Eの6つのランクで評価する「スキルチェック」というサービスを公開しています。このスキルチェックのランクで、ひとつの目標点となるのがBランクの獲得です。Bランクは「企業がエンジニアに求める実用的な実務スキルに相当する」と定義しています。ただ、プログラミング学習を初めて間もない方、実務未経験でITエンジニアを目指す方にとっては、このBランクのハードルが高く、なかなかランクを獲得できないという声もいただきます。そこで今回は、paizaラーニングの「Bランク獲得ス…
はじめに 富山大学大学院 修士1年(2022年度現在)の吉川晃太です。 github.com 2022年9月から2023年3月までの7か月間、N予備校 Android向けアプリ改善インターンシップに参加しました。 N予備校とは、2016年にドワンゴからリリースされた、パソコンやスマートフォンから映像授業を受けることができるサービスです。N予備校 Androidアプリは現在、Kotlinと呼ばれる、Androidアプリやサーバーサイドの実装に特に用いられているプログラミング言語で、開発が進められています。 本インターンでは、このアプリのフロントエンドの開発に着手しました。アプリ内の授業コース選択…
はじめに STORES 予約 モバイルエンジニアの satoryo です。 この記事は「STORES 予約 における予約者さま向けアプリリニューアルの裏側 Androidアプリ編」になります。 ここからは Coubic by STORES 予約 Android版のリニューアルについてソースコードを交えながら解説させていただきます。 リニューアルの記事について、PM・デザイナー編、iOSアプリ編も公開されていますので、もしよろしければ合わせてご覧いただけたら嬉しいです。 【PM・デザイナー編】 product.st.inc 【iOS編】 product.st.inc アーキテクチャ Androi…
概要 2023 年 1 月〜3 月の振り返りです。 今年から四半期の振り返りも OKR で行います。 1 月〜3 月の振り返り記事 2023 年 1 月〜3 月の振り返りを欠かさず実施しました。 1 月の振り返り記事 msksgm.hatenablog.com 2 月の振り返り記事 msksgm.hatenablog.com 3 月の振り返り記事 msksgm.hatenablog.com 勉強関連 勉強時間 3 ヵ月間で合計勉強時間は約 482 時間でした。 平均 120 時間 ~ 150 時間を目指していたので目標よりも上振れました。 理由としては休みが多かったので注力できる時間が多かった…
社内でラップバトル的な感じで情報共有をする会があるのだが、その場で "ScalaのpartitionMapがKotlinのIterableにはなくて不便だからextension書いた" 的な話をした。 反応も多少あったので調子に乗ってArrow-ktにissue切ってPRだしたら無事に取り込まれた。Arrowの次のバージョンが1.1.6や1.1.7になるか2.0.0になるか微妙なところだが、何れにせよ次期リリースには含まれるはずである。 github.com 感想としては、extension作って便利だったら積極的にOSSに対してコントリビュートして取り込んでもらうというのは今後も有効なムーブ…
バックナンバーはこちら 第1回: Flutter - iOS / Android向け入門1 - ふるすたっくえんじにあの日記 第2回: Flutter - iOS / Android向け入門2 - FirebaseMessaging導入編 - ふるすたっくえんじにあの日記 第3回です。 オブジェクト > jsonやらjson > オブジェクトやらしたいよね? いい感じのORMがなくて、一旦無難にこれ。json_annotation | Dart Packageおもむろにこんな定義を用意しましょう。 import 'package:json_annotation/json_annotation.…
こんにちは、セーフィー フロントエンドエンジニアの沖です。 こちらの記事でも紹介されてますが、セーフィーには様々な種類のエンジニアが在籍しています。 engineers.safie.link 組み込みソフトウェアエンジニア サーバーサイド / インフラ・SREエンジニア AI / 画像処理 エンジニア フロントエンドエンジニア iOS / Androidエンジニア 業務システムエンジニア QAエンジニア データエンジニア 各エンジニアは個人での技術研鑽はもちろんのことチームによっては定期的に勉強会を開いてその知見を共有しています。 チーム毎に勉強会の特色や目的が異なっていたりするので今回はその…
概要 2023 年 3 月の振り返りです。 今月は以下を目標にしていました。 msksgm.hatenablog.com 概要 勉強概要 3 月の OKR 結果 注力分野の振り返り CI/CD テスト 4 月の OKR 読書 OKR の書籍 ソフトウェアテスト教科書 JSTQB Foundation 第 4 版 シラバス 2018 対応 単体テストの考え方/使い方 ソフトウェアテスト技法ドリル【第 2 版】 プロダクトマネジメントのすべて その他 JaSST'23 Tokyo 技術記事の作成 3 月の振り返りまとめ 勉強概要 今月は下表のように勉強していました。 合計で約 161 時間でした。…
一応準備しておこうかと思って試作。あまりちゃんと分かってないので詳細理解は追って・・・ 解いていた問題 atcoder.jp 解法メモ 二分探索する Kotlin(Java)のbinarySearchではリスト内に同値がある場合に返る値が保証されない*1*2ため、lower_boundのように利用できない ので次回以降に備えて作っちゃおう C++の実装*3*4を参考にしようと思ったけど、読めなかった・・・し、今の時点でそこまで汎用性高いのいらないかも 同じ方向性でC#で実装している方がいらっしゃった*5のでC#のコードを参考にしながら実装してみる 実装メモ 一旦↓の感じになった /** * r…
バックナンバーはこちら 第1回: Flutter - iOS / Android向け入門1 - ふるすたっくえんじにあの日記 はい、第2回です。 設定はこれだけですね。特に詰まることもないかと。 Flutter アプリに Firebase を追加すると思ったら詰まりました。 `brew upgrade cocoapods`したら直りました。 main.dartのmainメソッドを編集 void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: Defa…
今月はだいぶAAP(Audio Plugins For Android)で成果の出た1ヶ月になったと思います。1ヶ月を振り返ってみて割とびっくり。 Music tech meetup: LT meetup (3/4) 2月に告知したとおり、3/4にこの名義で開催したのですが、公募からはLTが1件も出てこなくて、目論んでいたLT meetupとはなりませんでした。当日まで自分だけが話すというステータスだったのですが、運営に参加していただくようになったhotwatermorningせんせいにCPUキャッシュ最適化まわりを話していただきました。 自分の「再履修: 2023年までのリアルタイムオーディ…
バージョン kotlin.version=1.8.10 compose.version=1.3.1 問題 以下のGoogle公式のBackspaceでページを戻るプラグインをCompose Multiplatform JS Wasmで使用していると、TextFieldでBackspaceを押すと前のページに戻ってしまいます。 https://chrome.google.com/webstore/detail/go-back-with-backspace/eekailopagacbcdloonjhbiecobagjci HTMLでの動作との互換性はComposeでは重視されていないようです。 h…
概要 こんにちは。サーバーサイドエンジニアの窪田です。 これまでの戦術的DDDについて以下のような記事で紹介してきました。 戦術的DDDをGoで実現する【entity編】 - Yappli Tech Blog 戦術的DDDをGoで実現する【Value Object編】 - Yappli Tech Blog Deep Moduleという観点から戦術的DDDのRepositoryの設計を考えてみた - Yappli Tech Blog 今回は戦術的DDDにおけるトランザクションの扱いについて注目します。 トランザクションは一見インフラ層の関心ごとなのでインフラ層で完結するように思えますが、DDDの…
はじめに ChatGPTの登場により、AIアシストを上手く使えるのとそうでないのとでは大きく生産性に差が生まれるようになってきました。 既存の業務・開発プロセスにいかにChatGPTなどのAIアシストを組み込めるかあるいは変革できるか、今は様々な領域で試行錯誤されている状況かなと思います。 私は現在Androidアプリを開発しているので、Androidアプリ開発にChatGPTを組み込みたいなと思っているのですが、そもそもAndroidアプリの開発環境であるAndroid Studioのプラグインを開発する知識がありませんでした。 AIアシストの導入方法としてはIDE向けのプラグインだけが唯一…