JetBrains社が開発している Java VM や JavaScript 上などで動く、型の強いオブジェクト指向プログラミング言語。 以下の項目を設計目標に掲げている。
エラー防止の機能はよく働いており、Javaですっかりおなじみ「ぬるぽ」ことNullPointerExceptionがこの言語では意図的にプログラミングしないと出てくれないらしい…。
ジェネリクス ジェネリックプログラミング 具体的なデータ型に直接依存しない、抽象的かつ汎用的なコード記述を可能にするコンピュータプログラミング手法である。 例のように定義時は具体的なデータ型に依存しないようにしておいて、 利用時にデータ型を設定することで、汎用的なコード記述を可能にする fun main(args: Array<String>) { var objet = genericsExample<String>("JAVA") var objet1 = genericsExample<Int>(10) var object3 = genericsExample<Double>(10.…
参考ページ kotolinのチュートリアルに少しアレンジをくわえた作成してみた。 developer.android.com 上記のチュートリアルで変更した実際に変更したファイル Kotlin関連 MainActivityファイル。 チュートアルには内、ボタンクリック時にダイアログを表示して次の画面に遷移する処理 package biz.winlogic.happybirthday import android.app.AlertDialog import android.content.Intent import android.os.Bundle import android.widget…
はじめに プロジェクト画面のソースコード上部を見るとタブがあります。 今回は、タブのファイル.ktと.xmlについて解説?します。 目次 はじめに .kt .xml .kt 「.kt」はKotlinのktで、メインとなるデータになります。 この「.kt」にアプリの制御するコードを記述します。 プロジェクトを作成すると、下のコードが自動生成されます。 package com.example.sample import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : App…
データクラス オブジェクト指向で、処理を持たないデータだけを保持するクラスを利用したいことがある場合、データクラスを定義する。データクラスはclassの前に「data」というキーワードをつけて定義する データクラスを定義する際には以下の条件を満たす必要がある 1.プライマリコンストラクタが一つ以上の引数を持つ 2.コンストラクタの引数はすべてvar/valを付与してプロパティの宣言とする 3.abstract / open / sealed / innerにすることはできない data class User (var lastName: String, var firstName: S…
継承 継承とオーバーライドを可能にするには、open修飾子を使う必要がある メソッドをオーバーライドするにはoverrideを使う オーバーライドを強制するためには抽象クラスと抽象メソッドを用いる 抽象メソッドとは派生クラスでのオーバーライドを強制するメソッドのこと 抽象クラスとは抽象メソッドを定義できるクラスのこと open class Person (var lastName: String, var fistName: String, var age: Int) { open fun introduction() { println("Name ${fistName} $…
こんにちは!こーたろーです。 いま、技術ブログの記事のためのプログラムを動かしているのですが、実行に時間がかかっているため、コラム書きます。 今日の記事はこちらです。 news.yahoo.co.jp やるなら今!プログラミング副業〜独学で稼ぐ入門書〜: 転職やフリーランスを目指す初心者のための教科書
はじめに KotlinでAndroidアプリ開発をやってみたいと思います。 プログラマーではなく遊びでやってるのでコードはテキトーです。 とりあえず動けばいいやといった感じです。目次 はじめに AndroidStudioの起動 新規プロジェクトの立上げ 画面の構成 AndroidStudioの起動 AndroidStudioを起動させてみます。デスクトップにあるショートカットから開いてみましょう。 もしない場合は、下記のフォルダに「studio64.exe」があると思います。 C:\Program Files\Android\Android Studio\bin起動画面新規プロジェクトを立ち上…
クラスの基本 Kotlinでクラスを定義するには以下のように書く class User { var lastName = "" var fistName = "" var age = 0 fun introduction() { println("Name ${fistName} ${lastName}です。${age}さい") } } fun main() { val user = User() user.lastName = "山田" user.fistName = "太郎" user.age = 44 user.introduction() } アクセス修飾子 修飾子 概要 public…
関数 関数を定義するにはfunを使用する。構文は下記のように記載する //関数の定義 fun 関数名 (仮引数: 引数の型,...): 戻り値の型 {処理} //関数の呼び出し 関数名(実引数,...) 例 フルネームを返す関数 fun getFullName (fistName: String, LastName: String): String { return LastName + fistName } println(getFullName("太郎", "山田")) >> 山田太郎 仮引数と戻り値の型宣言は必須である。戻り値がない場合は戻り値の型として、Unitを指定するが、Unit型…
はじめに 前回から少しづつkotlinを覚えているので、そのメモの続き px-wing.hatenablog.com 配列とコレクション Kotlinで複数の要素をまとめて扱うには、Javaと同様に配列とコレクションを用いる 配列と代表的なコレクション(List・Set・Map)は以下のような特徴がある 配列 最もシンプルな複数の要素を扱う仕組みだが、宣言の段階でサイズを決める必要があるなど柔軟性に欠ける List 配列と同様に複数の要素を扱うことができる、インデックスを指定して値を取得・設定ができる Set Listと似ているが重複した要素は登録しないので、重複のない複数の要素を扱うことが出…
kotlin playground playgroundで試し実行ができるのが便利 https://play.kotlinlang.org/ 変数の宣言 var 変数名: 変数の型 = 初期値 型 概要 Double 64bit浮動小数点数型 Float 32bit浮動小数点数型 Long 64bit整数型 Int 32bit整数型 Short 16bit整数型 Byte 8bit整数型 Boolean 真偽値 Char 文字型 String 文字列型` 型を省略するとこともできる。型推定・型推論してくれている var number = 10 var str = "テスト" var…
今回はタイトルの通り、Kotlin でちょろっと正規表現を行ったのでそのメモです。 結論 Kotlin ではこんな感じで行える見たいですね。正規表現を """ で囲むことで、エスケープが必要にならないのでシンプルに記述することができます。 val pattern = """"^[A-Za-z0-9.-]{3,16}$""" if (Regex(pattern).matches(id)) { // 全ての文字列が正規表現の指定通り } else { // 文字列が正規表現の指定通りではない } 上記の場合は、id 文字列全体が正規表現と一致した場合に true となりますが、一部でもマッチした場…
RxKotlin で実行する Observable のスレッドをどのように切り替えるのか調査したので、調べた内容を簡単にまとめておこうかと思います🦅 それではやっていく まずは、Android プラットフォーム上のメインスレッドで処理を実行できるようにしてみます。Android 固有のスレッドを使用するため iOS における RxCocoa のように、RxAndroid というバイナリが必要になるので依存関係を追加します。 implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' ※ 執筆時点では 3.0.0 が最新でした。詳しくはこちらをご参…
kotlinにはレシーバー付きラムダというものがあります。 使い方はこんな感じです。 // レシーバー付きラムダの定義 val lambda: Int.() -> Unit = { print(this) } // 実行 fun main() { 1.lambda() } // 出力 // => 1 Int.() -> Unitのような型は、kotlinのドキュメントではFunction types with receiver(レシーバー付き関数型)、kotlinインアクションでは拡張関数型と記述されていました。(以降レシーバー付き関数型) 通常の関数型は(Int) -> Stringのように…
Text の変更を取得しようと下記のよう、Listener を追加すると謎のエラーが発生しました。 binding.accountNameInputTextField.addTextChangedListener { println(it.toString()) } // Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. 解決法 アプリレベルの Gradle ファイルに jvmTarget を指定することで解決できました。 kotlinO…
bakabaka99/(/・ω・)/(🐦) ツイートURL:https://twitter.com/1365747275042087000/status/1366456408540139525 ツイート:その次はmicro.bitかscratchを生徒に選ばせるのがいいんじゃないかな。 これやるためには教師が熟成(?)していることとかかなりの時間がいるよね そこはIT強化したいならやらないと あとはmicrosoft office(365?)の使い方とか実践もやったほうがいいね bakabaka99/(/・ω・)/(🐦) ツイートURL:https://twitter.com/13657472…
概要 doma-codegen-plugin とはデータベースのテーブル定義からEntityを生成してくれる素敵なgradleプラグイン。 今回はこのプラグインを動かしてどんなコードができるのか確認してみます。 github.com 便利なサンプルリポジトリ doma-codegen-plugin入りのKotlin向けのDOMAサンプルリポジトリが既にあるので、それを使っていきます。 サンプルでDBまわりの設定とテーブル定義のスクリプトも完備。 あとはビルドするだけです。 github.com まずはお試し 細かくドキュメントを見ていく前にせっかく動くサンプルがあるので、確認をしてみる。 とり…
弊社プロダクト「PHONE APPLI PEOPLE (旧:連絡とれるくん)」では、サーバサイドに Kotlin を採用しています。 今回は、以前から実態を調べたいと思っていた Kotlin の List / MutableList について紹介します。 List / MutableList とは リスト機能のための interface です。 List はリストに対する読込機能があり、 MutableList は List の機能 + リストの書込機能があります。 両者とも kotlin.collections パッケージに置かれてます。 これだけの説明だとただの interface っぽい…
Bill One事業部の山邊です。 2020 年 5 月に Google Cloud Functions が Java11 に対応した。それによって JVM 言語で Cloud Functions を記述することができるようになった。 私も開発に携わっているクラウド請求書受領サービスの 「Bill One」(https://bill-one.com/) ではサーバーサイド言語として主に Kotlin を使用してる。しかし、これまでは Cloud Functions を記述する際は主に JavaScript を利用していた。最近になって Kotlin(JVM 言語)の方が都合が良い要件があったた…
[Podcast] [つくりおき] [今週のいいこと3つ] [各種タスク] [読書] [ソフトウェア開発] [囲碁] [まとめ]
梶田昌弘(🐦) ツイートURL:https://twitter.com/6661392/status/1366046681515573258 ツイート:iftiny:(イフティニー)が国内正規販売店として、micro:bit、DFRobot製品、Yahboom製品の販売を開始 - https://t.co/EAyp3gG0hz https://t.co/uzgWQ9EUu6 Bobby Summers(🐦) ツイートURL:https://twitter.com/927829929923813400/status/1365971070688362496 ツイート:OSOYOO(オソヨー) の …
lombok.NonNull やKotlinの val をコンパイルすると付与される org.jetbrains.annotations.NotNull など、 RetentionPolicy.CLASS のアノテーションを実行時に判定したい場面があった。 RetentionPolicy.CLASS の場合は、 RetentionPolicy.RUNTIME のようにリフレクションでは実行時に情報を取得できないが、クラスファイルには書き出されている。 クラスファイルに情報があるならJavassistで読み込めないかと思って試してみたら、フィールドやメソッドに付与された場合は何とか判定できたので…
下記エントリで Kotlin でやったやつを、C 言語でもやってみました。やってみましたというか、必要に迫られて手早く書きました。またいつか必要になりそうですので、ここに貼っておこうと思います。cheerio-the-bear.hatenablog.comC 言語もここのところずっと遠ざかっていましたので、まだ勘を取り戻すにはもう少し時間がかかりそうです。「あっ!unsigned char とかあったんだ!」みたいな感じになってます。慣れてくると、もっとスマートに書けたりするんでしょうねぇ。 16進数の文字列からバイト配列への変換 unsigned char *util_hex_string_…
今週は第53回を開催しました! 引き続きKotlin Hands-onをすすめています。 前回の様子はコチラ↓ kdnakt.hatenablog.com [第53回の様子] [学んだことや疑問点] [まとめ]
Kotlin + spring-bootのアプリケーションでのDBアクセスをどのライブラリを使って行うが良いかという課題があり、 簡単なコードを書いていくつか試してみたのでそれについてのメモ Java ORマッパーの選定ポイントのスライドを参考にさせていただき、 spring-data-jpa spring-data-jdbc jooq の3つについて比較を、1:Nの2テーブルのみの簡単なCRUD APIを使って実施してみた spring-data-jpa spring-bootのORマッパー=JPAというイメージもあり、ちょっとしたwebアプリを書く際などに今まで利用していたのがこちら。 以…
basictomonokai(🐦) ツイートURL:https://twitter.com/1919301649/status/1365269346197544965 ツイート:◆micro:bit情報毎日更新◆ micro:bit情報 https://t.co/sCq6gMuGq7 齋藤淳@元JI8GRX(🐦) ツイートURL:https://twitter.com/701351987380551700/status/1365254712308629505 ツイート:RT @KSY_RasPi_Shop: 新規取扱品 micro:bit V1・V2どちらでも使用できるmicro:bit用拡張…
×581 建設現場のテレワークに貢献、1000km離れても油圧ショベルをインターネット経由で遠隔操作可能|ARAV株式会社のプレスリリース ×171 Google admits Kubernetes container tech is so complex, it's had to roll out an Autopilot feature to do it all for you • The Register ×85 The Art of Reading More Effectively and Efficiently ×62 ISO 8601: the better date format…
【Engineering Team Presentation】各社の事業を支えるアーキテクチャ - connpass 日経電子版のキャッシュ戦略 API-Secret発行のルール APIkeyの中に検索して出にくい文字列を入れておく Secretの種類判別が可能 GitHub検索をかけて流出に気付ける 表示速度によるWebの離脱率が上がっている 性能チェックはサーバーログではなくフロントエンド側でやるのが望ましい サーバーログだと正しく測定できない レイヤーごとに色々なキャッシュがある ブラウザキャッシュ 再利用時の通信量が減らせる。最速 CDNキャッシュ 配信目的なら高効率 Appバックエン…