2023/06/20 このエントリーをはてなブックマークに追加 はてなブックマーク - WireMockのモックサーバーをGraphQLサーバーとして使うときにツラくならないカスタムmatcherのご紹介

WireMockのモックサーバーをGraphQLサーバーとして使うときにツラくならないカスタムmatcherのご紹介

カテゴリ: , ,




Web APIのモックとかするやつです。
とあるリクエストを投げると、とあるレスポンスを返すなど設定できる。

https://wiremock.org


WireMockのツラミとしてmatcherが脆いというのがある。
意味的には等しいリクエストであっても、リクエストが完全一致とかしないと別ものと扱われてツラいなどあった。

2023/02/12 このエントリーをはてなブックマークに追加 はてなブックマーク - 分配束縛、分割代入、分解宣言の違いって何?似たようなやつ三銃士を連れてきたよ

分配束縛、分割代入、分解宣言の違いって何?似たようなやつ三銃士を連れてきたよ






こんにちは、美味しんぼ はあんまりちゃんと読んだことがないyy_yankです。

社内で話題になってたので、気になり始めて調べて自分なりに整理したものを記事にしました。
間違ってたらご指摘ください


分配束縛、分割代入、分解宣言
構文上はほぼ似たことを行っていそうなのに様々な名前が存在している。


こういうやつ


    const [first, second] = [1, 2]

では、何がどうなっててどういう違いがあるか。


気になりますよね?
調べてみました!(いかがでしたか構文)


2022/12/22 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin Fest 2022を終えて(個人の感想です)

Kotlin Fest 2022を終えて(個人の感想です)

カテゴリ:






Kotlin Fest2022、無事本番を終えることが出来て安心しています。

スピーカーの皆様、参加者の皆様、スポンサーの皆様、運営メンバーのみんな、デザイナーさん、お疲れ様でした!ありがとうございました!

特に自分としてはスピーカーの方、セッション応募を考えてくれた方。たくさんの方にご連絡させていただきお手数をおかけしました。本当に感謝しています。


公開されている資料について、connpassでリンク集があります
ちなみに、カンファレンスの動画はこちらです

https://www.youtube.com/playlist?list=PLmdKKivrabLSY5UNTciKWplnWAiksd3Hx


2022/09/13 このエントリーをはてなブックマークに追加 はてなブックマーク - 2〜3年前のKotlinプロジェクト(Gradle)をバージョンアップするとき必要そうなタスク

2〜3年前のKotlinプロジェクト(Gradle)をバージョンアップするとき必要そうなタスク

カテゴリ: ,




このバージョン古いな。アップデートしたれ!えいえい!
あらうまくいかん。って数回なっているのでメモをする



2022/09/03 このエントリーをはてなブックマークに追加 はてなブックマーク - Server-Side Kotlin meetup vol5.でLT発表してきました

Server-Side Kotlin meetup vol5.でLT発表してきました

カテゴリ: ,

こちらのイベントでLT発表させていただきました。
https://server-side-kotlin-meetup.connpass.com/event/252355/

改めて見ていてただいた方、運営の方ありがとうございました!
発表資料はこちらです。 

2022/01/03 このエントリーをはてなブックマークに追加 はてなブックマーク - 大きく変わったKotlinのコンパイラについて(k2compiler)

大きく変わったKotlinのコンパイラについて(k2compiler)

カテゴリ:

こんにちは、こちらの記事はKotlin Advent Calendar 2021の16日目の穴埋め記事です。

え?もう2022年じゃないのって?
あけおめということでお許しください。

今回は、Kotlinの新しいコンパイラのご紹介です。


2021/12/24 このエントリーをはてなブックマークに追加 はてなブックマーク - KotlinはJDK17で動くの?実際に試してみた

KotlinはJDK17で動くの?実際に試してみた

カテゴリ: ,

こんにちは、yy_yankです。

こちらは Kotln Advent Calendar 2021(https://qiita.com/advent-calendar/2021/kotlin)の18日目の記事です

最近(?)JDK17が出ましたね。
ちゃんとKotlinはJDK17で動くのでしょうか?
実際に確かめてみました!


2021/07/27 このエントリーをはてなブックマークに追加 はてなブックマーク - KotlinのContractは気をつけて使ったほうが良い

KotlinのContractは気をつけて使ったほうが良い

カテゴリ: ,

  • KotlinのContractはスマートキャストなどのコードセマンティクスを追加したい箇所をコンパイラに知らせるための言語機能
  • Contractはメソッドシグネチャに現れないし、IDEでの検出もやりにくく適宜実装を見ないと使用箇所が分からない
  • 実装者がイディオム(暗黙ルール)を知ってるか知らないかの話になるので多用は避けた方が良い

2020/12/11 このエントリーをはてなブックマークに追加 はてなブックマーク - VimでLSPを使ってKotlinを書く

VimでLSPを使ってKotlinを書く

カテゴリ: , ,


Kotlinアドベントカレンダー2020(https://qiita.com/advent-calendar/2020/kotlin)の10日目の記事です。



2019/12/26 このエントリーをはてなブックマークに追加 はてなブックマーク - 2019年のyy_yank的Kotlinウォッチ

2019年のyy_yank的Kotlinウォッチ

カテゴリ:

どうも、Kotlinウォッチャーです。

これは、Kotlin アドベントカレンダー (https://qiita.com/advent-calendar/2019/kotlin)の代理投稿になるかもしれないし、
ならないかもしれません、という記事です。

個人的に観測していたKotlinの2019年について振り返ってみようと思います。



僕が感謝するのも変な話ですが、アドベントカレンダーを書いてくれた皆さんありがとうございます!!
特にnnao45さん、doyaaaaakenさん、たくさん書いてくれてありがとうございます!大大感謝!

こういう、アドベントカレンダーを繋げようとする人、そういう推進力がある人はすごい良いと思います。ステキですね。(ただ、まぁ仕事でもないので、絶対穴あけちゃダメ!ってわけもなく。みんながやれる範囲でゆるい感じで楽しめるのがアドベントカレンダーのイイトコだなとも思ってます)


ということで感謝はこれぐらいにしまして。
以下、今年Kotlinに関してウォッチしていたこと総集編となっています。
ではどうぞ。

2019/08/24 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin Fest 2019に行ってきました

Kotlin Fest 2019に行ってきました

カテゴリ: ,



Kotlin Fest 2019行ってきました。
https://kotlin.connpass.com/event/129860/



2019/04/20 このエントリーをはてなブックマークに追加 はてなブックマーク - JVM言語とJDKバージョンを今後どう組み合わすのか

JVM言語とJDKバージョンを今後どう組み合わすのか

カテゴリ: , , , , ,

さて、Java is still freeなわけですが
https://medium.com/@javachampions/java-is-still-free-2-0-0-6b9aa8d6d244
https://www.sakatakoichi.com/entry/javaisstillfree

どのJDKをどのバージョンで使うかねぇという話がありますよね。

JDK 8を使い続けるという選択肢もあります。
いろんなベンダーがLTS(long term support)としているJDK 11を使うということも出来ます。
色々考えてみましょう。

2018/07/28 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin1.3-M1の変更点を読んでたけど結構面白かった

Kotlin1.3-M1の変更点を読んでたけど結構面白かった

カテゴリ:

Kotlin ver 1.3-M1が出ました。

See what’s coming in Kotlin 1.3-M1
https://blog.jetbrains.com/kotlin/2018/07/see-whats-coming-in-kotlin-1-3-m1/

毎回アップデートがあるたびに変更内容を眺めてはいるのだけど、
今回は久しぶりに面白いバージョンアップだなあと思いました!

  • Coroutinesが安定化しました(experimentalじゃなくなりました)
  • when構文で、変数を良い感じに使えるようになりました
  • Functionが255まで使えるようになった
  • SuccessOrFailureってのが増えたけど関数の戻り値にしちゃダメよ
  • unsignedが実験的に導入されました
  • プラットフォームごとのランダム値生成対応

など。



そして今回もshirajiさんみたいにKotlinへコミットしてる日本の方もいて良いですねー。
https://github.com/t-kameyama
多分日本の方?だと思う。



2018/07/05 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin Developers Meetupにちょろっと行ってきました #jkug

Kotlin Developers Meetupにちょろっと行ってきました #jkug

カテゴリ: , ,

2018/06/27にJetBraninsのhadiさんがくるって言うことで、
Kotlin Developers Meetupに行って来ました!

Kotlin Developers Meetup
https://kotlin.connpass.com/event/90679/

準備は@satorufujiwaraさんに任せっぱなしで、
最後ゴミの片付け手伝ったレベルでした…!
すんません!


togetterでツイートまとめましたのでこちらで雰囲気はわかると思います。
https://togetter.com/li/1243940
(ツイート載せて欲しくない方は編集自由にしていますので削除お願いします!)


当日の映像が動画になっています!
@satorufujiwaraさん ありがとうございます!

https://www.youtube.com/watch?v=TGdAvY5i-sU&feature=youtu.be

DSLの話をしていました。
hadiさんはDSLの話をしていることが多い気がしますね。
今回もジョーク混じえつつの良いトークを聞けました!


ビズリーチの方もLTされてましたが、、
みつけたらこの記事に追加します!

あと@yanzmさんが自分の子供にマイクラのmodをKotlinで書いてもらった?的なLTもありました!


せっかくなので、hadiさんに話しかけようと近づいて行ったのですが
英会話ほぼ出来ないので 「I like wasabi」とだけ伝えました。
https://github.com/wasabifx/wasabi

「wasabiはもうkillしたよ」的なこと言われましたw
https://kotlinlang.slack.com/のslackチャンネルとかから#wasabiが消えてたんで知ってたんですけど、直接言われるとなんとなく寂しいですね

wasabiじゃなくてもうktor使って!てことらしいですね。
https://github.com/ktorio/ktor

@shiraj_i さん とか @callipan さんが普通に英語で会話してるのでホォー羨ましいなと思いつつ、 どういう会話かはちょっとは聴き取れるので横で聴いたりしてすごしました。
hadiさんはエヴァンジェリストチームなので世界各国の色々なところを行脚してて、
そのエピソードトークとかがメインだったような気がします!


実際に中の人に会って話す機会はなかなか貴重なことだと思うので
良いイベントでした!
会場提供 & 準備ありがとうございました!
hadiさんまたきてください!

2017/11/22 このエントリーをはてなブックマークに追加 はてなブックマーク - CA.kt(Kotlin Conf報告会)に行ってきました

CA.kt(Kotlin Conf報告会)に行ってきました

カテゴリ: ,


Kotlin Confが羨ましすぎてウォーッてなったので、
ca.kt(Kotlin Conf報告会)に行ってきました。
https://cyberagent.connpass.com/event/70423/

一応、レポートというかログというか思ったことというか。
残しておこうと思います。



2017/08/31 このエントリーをはてなブックマークに追加 はてなブックマーク - 夏のKotlin LT祭を行いました #jkug

夏のKotlin LT祭を行いました #jkug

カテゴリ: , ,









夏のKotlin LT祭と題して、
日本Kotlinユーザーグループ(JKUG)主催でLTイベントを行いました。
会場を提供していただいたDeNAさん、ありがとうございました!!!!!!

https://kotlin.connpass.com/event/61427/

2017/06/26 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlinの演算子オーバーロードはnullableが絡むと少しめんどい

Kotlinの演算子オーバーロードはnullableが絡むと少しめんどい

カテゴリ:


つまりこういうめんどくささがあります。


val f1 : () -> Unit = {}
f1() f.invoke() // OK
val f2 : (() -> Unit)? = null
f2() //コンパイルエラー 
f2?.invoke()  // OK

nullableをレシーバーに取りにくい


f1()という関数呼び出しは、実は演算子オーバーロードという機能によって実現しています。
f1()とコードを書いた時 f.invoke() が呼び出されるというものです。
f1は () -> Unit 、つまり引数なしでUnitを返す関数型をlambdaで表現したものですが
実体の型はFunction0<Unit> というインターフェースです。

Function0の実装はこうなっています。

// kotlin.jvm.functions
// Functions.kt 
public interface Function0 <out R > : Function<R> {
    /* Invokes the function. */     
    public operator fun invoke(): R
}

f1はFunction0自身であり、invokeが実行されます。
これがf2のようにnullableとなった場合にKotlinの演算子オーバーロードはそれを許しません。
f2?.invokeという風に厳密にかけとコンパイルエラーになります。

つまり、nullableな変数の関数呼び出し(nullableな型をレシーバーとする関数呼び出し)をしにくいということです。


前述したコードのf2を、f2?()とかって実行出来れば良いのではという感じもしますが、
Kotlinはそういった言語設計を行っていないようです。
f2?()という呼び出しをサポートする代わりに明示的にf2?.invoke()と書きなさい、としています。
これはnull安全的観点で言うと良いような気もしますが、
突然普段は演算子オーバーロードによって隠蔽されているinvokeという謎関数が出てきた感じになるので、実装者としては混乱するかもしれません。

推測ですが、f2?()とかという書き方をサポートしなかったのは
単純に?を使った記法を利用できる箇所を限定的にしたかったのと、
コンパイラの字句解析とかを簡単にしたい(めんどい)というのがあったのではないかと思います。



nullableだと演算子オーバーロードが利用できないかというとそうではありません。
拡張関数を利用すれば良いのです。
たとえば次のように実装すればinvokeの呼び出しも演算子オーバーロードを介して利用可能です。

operator fun <R> Function0<R> ?.invoke() = this?.invoke()

val f2 : (() -> Unit)? = null 
f2() // コンパイル通る

ただし、Kotlinの標準ライブラリとしてわざわざこういった機能を提供せず
f2?.invoke()と書かせているのは、関数を実行したつもりで関数を実行していないなどのバグの元になるのを防ぐといった意図がありそうですしあまりお勧め出来るソリューションではありません。


もう一つ、理由として考えるられるのは
nullableなものを実行した時の対処というのは大体においてコーディングしている側に委ねられるものだと思います。
たとえばBigDecimal + BigDecimal で返されるのは2つのインスタンスの値を加算したものであるのは自明という感じがしますが
BigDecimal? + BigDecimal
BigDecimal? + BigDecimal?
などは何を返すかはちょっと考える必要があります。
あと、単純に標準ライブラリが膨らみますね。


  • 演算子オーバーロードはnullableをレシーバーにとる時の挙動はあんまりサポートしていない
  • どうしてもやりたいなら実装者側で拡張関数で追加していく必要がある

悪ふざけコードです。


https://gist.github.com/yyYank/02d6c7f64532bb30cd0e63563d90feb2




GA