茶トラ猫エンジニア

フリーランスとして働く、先が見えないエンジニアのメモ帳

やさしいKotlin入門

Androidアプリの開発言語として正式採用されたKotlinですが、サーバサイドのアプリを作る上でも活躍の場は広がっています。

なるべく簡潔にプログラムを書ける特徴があることから最初は違和感も多いですが、文法的にも他の言語からの移行もしやすく慣れると便利な言語となります。

特にJavaとの親和性は高いので、Java経験者はAndroidを含めてもチャレンジする価値はあると思います。

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

【Kotlin入門】sha256で文字列からハッシュを作成する

Kotlin で文字列をハッシュしようと思ったら、それっぽい関数やクラスが見当たらなかったので調べてみました。 少し前までは md5 や sha1 が主流でしたが、最近は sha256 が無難なところでしょうか。 sha256でハッシュする sha256でハッシュする もし PHP で…

【Kotlin入門】関数のオーバーロードで引数違いの使い分け

前回、「クラスの基本構造(変数、関数、継承)」でクラスの作成や継承について紹介しました。 www.saratoga.jp その中で、メソッド(関数)のオーバーライドを使いましたが、今回はオーバーロードについて触れておきたいと思います。 引数違いの同一関数名 ポリ…

RestTemplateでクライアント証明書の認証を突破する

SpringBoot のフレームワークを使った環境下で、別のサーバと http や https で通信する場合、RestTemplate のライブラリが便利です。 どの言語、フレームワークでも似たような機能は用意されていますが、やはり PHP に比べると利用するまでが比較的面倒です…

【Kotlin入門】クラスの基本構造(変数、関数、継承)

Kotlin のクラスは他の言語と同じような構成なので多く語ることはありません。 しかし、少しだけ書き方に特徴のある部分もあるのでそこだけチェックしておきます。 プロパティ(フィールド変数) メソッド 継承 サンプルプログラム プロパティ(フィールド変数)…

【Kotlin入門】配列の中身を繋げるJoinと文字列を分解して配列にするSplit

「SpringBootのCharacterEncodingFilterで特定のURLパスの文字コードを変更する」の記事で、String 型の配列に入れている文字列を「|」の記号で繋げる処理を書きました。 www.saratoga.jp これは、パターンマッチングの OR の条件のためでしたが、配列の中身…

SpringBootのCharacterEncodingFilterで特定のURLパスの文字コードを変更する

Kotlin と Sprint Boot の組み合わせでアプリを作っていて、外部から Shift_JIS(SJIS)の文字コードでリクエストを受け付けないといけないケースが発生したので対応。 以前「SpringBoot(Thymeleaf)でレスポンスの文字コードを指定する」でも書いた通り、レス…

【Kotlin入門】例外処理のハンドリング(try,catch)

Java や PHP でもお馴染みですが、Kotlin にも例外処理をハンドリングする仕組みがあります。 構文も同じく try, catch を使います。 今回は Kotlin で例外処理のポイントを紹介していきます。 アプリは致命的なエラーを見せたくない 例外発生のプログラム …

【Kotlin入門】正規表現で文字列の部分置換をする

以前「フォーマットされた文字列に動的な値を差し込む」で、固定文字列の一部に動的な値を埋め込む方法を紹介しました。 www.saratoga.jp 今回は、文字列の中で不要な文字を除去したい場合や、一部の文字を別の文字に置換したい場合の対応をしたいと思います…

【Kotlin入門】Base64でエンコードとデコード

暗号化するほどのデータでもないけど、なんとなく生で流すのが嫌なデータってありますよね。(通信経路の暗号化とは別の話です) そんな時は簡易的に情報を Bse64 でエンコードして、送信先でデコードしてもらう手段も検討されます。 逆に相手からエンコードさ…

【Kotlin入門】フォーマットされた文字列に動的な値を差し込む

Kotlin に限った話ではないですが、どのプログラム言語を使っていても文字列の中の一部分を動的に変更したい場面に遭遇します。 例えば以下のような文字列の場合です。 今日は 50 人のお客様が来店しました。 「50」の部分は毎日変動するけど、他の文字列は…

SpringBoot(Thymeleaf)でレスポンスの文字コードを指定する

通常であればアプリケーションで使用する文字コードは 1 つだと思います。 今の時代なら「UTF-8」でしょうし、古いサイトであれば「EUC-JP」や「Shift_JIS」もまだまだ現役です。 しかし外部との連携が増えてきた昨今、相手側のサイトの都合上、レスポンスで…

【Kotlin入門】java.timeパッケージで今日の日付を取得

Kotlin で当日の日付を取得しようと java.util.Date を使っていたのですが、それはもう時代遅れだという指摘を食らったので java.time パッケージを利用することにしました。 Java8 から登場した java.time パッケージ、早速紹介していきたいと思います。 ja…

【Kotlin入門】複数項目の相関チェックと文字列の長さ判定

数値判定や文字列の文字数判定など、リクエストの中身をチェックする際は Spring Boot の @Validated アノテーションに任せて、data class のフィールドごとに個別にチェックをしています。 例えば文字数の最大が 20 文字列の場合はこんな感じ。 @get:Size(m…

【Kotlin入門】クラスオブジェクトをJSONに変換する

Kotlin を触ってもうすぐ 3 週間が経過します。 Spring Boot との兼ね合いもあるけど何か新しいことをするたびにハマりますね・・・。 今回はクラスオブジェクトを JSON に変換する方法を紹介したいと思います。 ライブラリ別の使用方法 GSON Moshi(Kotshi) …

【Kotlin入門】自分で関数を定義する方法

ここまでは Kotlin の標準で用意されている関数を使ってきましたが、開発を進めていく上で標準の関数では対応できないものがでてきます。 そんな時は自分で関数を作って対処します。 他のプログラム言語でも同様だと思いますが、例えば PHP に比べると Kotli…

【Kotlin入門】連想配列のような表現ができるMapの使い方

前回紹介した List と同じく、kotlin でも使われる頻度が高いのが Map です。 PHP 経験者だと連想配列と言えばしっくりくるかもしれません。 キーと値のセットで 1 つの要素を管理できるので、直感的にわかりやすい構造になっています。 今回はこの Map の活…

【Kotlin入門】配列よりも実用性のあるListの使い方

kotlin には配列と似たような使い方ができる List が存在します。 List 自体は Java 経験者にはおなじみですが、kotlin では MutableList を使う機会も増えてきます。 いわゆるコレクション(Collection)の一種ですが、List は重要になってくるので要チェック…

【Kotlin入門】ソースファイルを消してしまった場合の逆コンパイル

本来ならやっちゃダメなミス。 Git にプッシュする際に、パッケージの階層調整をしていたらついついコントローラのファイルを削除してしまいました。 しかも、まだ Git にプッシュしたことがないファイルです。 「IntelliJ IDEA」や「Eclipse」などの IDE か…

【Kotlin入門】型ごとに適した配列定義について

Java でも同じですが、Kotlin でもあまり数値や文字列に特化した配列を使うケースは少ないです。 どちらかというと、List や Map クラスを利用するパターンが圧倒的に多い。 しかし、ちょっとしたループ処理や値の保持には適している部分もあります。 今回は…

【Kotlin入門】forとwhileを使った繰り返し処理を行う

kotlin で繰り返し処理を行いたい場面に遭遇した場合、基本的には for や while が使われます。 場合によっては、map や list などのコレクションを使用する際に、わざわざループ処理を書かないケースもあるかもしれませんが、今回はそこには触れません。 ま…

【Kotlin入門】ifとwhenによる条件判定を使い分ける

「Kotlinで範囲を表すRange変数の使いどころを探る」で紹介したサンプルプログラムで、if による条件判定を少し紹介しました。 www.saratoga.jp 今回は、その if による条件判定と when による条件判定をあわせて紹介したいと思います。 一般的な開発であれ…

【Kotlin入門】範囲を表すRange変数の使いどころを探る

ここまで、Kotlin で使える変数の型をみてきましたが、最後に他の言語では見かけない Range 変数というものがあります。 これは何を表しているのかは想像がつきやすいのですが、どういった場面で使えるのだろうか、そして実際の開発現場では一般的に使われて…

【Kotlin入門】Boolean型の活用と論理演算子

今日は Kotlin の現場で使われているロジックを初めて見ました。 これから、実際に運用されていくソースを触ったり、既存ソースを参考に自分で組んでいくことになるので、基本的な部分をチマチマとやっていく余裕はなくなりそうです。 以前、「Kotlinの2種類…

【Kotlin入門】文字列の中に変数を埋め込む文字テンプレート

「Kotlinの2種類の変数と型宣言の基本パターンについて」の記事では、主に「Hello, world!」をサンプルとして使いました。 www.saratoga.jp その際、String 型の変数に「Hello, world!」の文字列を代入するだけでした。 今回はその String 変数を活用して、…

【Kotlin入門】2種類の変数と型宣言の基本パターン

Kotlin のコメントの書き方の説明をした際に、チラっと変数を使ったサンプルソース(最後のソース)も書いてみました。 www.saratoga.jp 今回は Kotlin の変数や型の宣言について紹介したいと思います。 Kotlinの変数の宣言方法 valとvarの違いについて 変数の…

【Kotlin入門】コメントの基本パターンの書き方(3種類)

前回、Kotlin で「Hello, World」を試してみました。 www.saratoga.jp 今回から Kotlin のプログラム言語について少しずつ勉強していきます。 まずはコメントの書き方から進めていきますよ。 Kotlinのコメントの種類 1行コメント 複数行コメント Kotlinのコ…

【Kotlin入門】main関数の基本的な書き方について

Kotlin の「Hello World」のサンプルを見てわかる通り、main 関数の書き方に少し特徴があります。 今回は Kotlin の関数の基本的な書き方を紹介します。 関数の定義 関数名と関数のブロック 関数の引数 プログラムの命令文 関数の定義 以下のロジックを見る…

【Kotlin入門】「Hello World」を1分で試す

Kotlin がどんなものかは他のサイトを見てもらうとして、これから少しずつ Kotlin を覚えることになるかもしれないからお決まりの「Hello World」です。 Kotlin はブラウザ上でも実行確認できるのでいいですね。 Try Kotlin まあ、Hellow World が実務で役立…