Kashibuchi’s blog

勉強のこと、趣味のこと、日々のこと

ITエンジニアとしてやりたいこと(2024-11-18時点)

日々つらいけど、勉強頑張る

子どもがいると夫婦協力して家庭内のイベント・アクシデントも含めて日常をやっていくことになるんですが、 自分の楽しみとして趣味のこともやりたいし、でも勉強しないとやっていけないし、ということで勝手に苦しんでいます。

インターネット上でも、派遣先の会社の部署で共有されるものでも、みんなつよつよエンジニアだなあと、 勝手に打ちのめされています。わたくし。

奮起して勉強しようとすると、エネルギーをまんべんなくバランスよく注ぐことができないので、こけてしまいます。 悲しい。

でも、楽しんで日々勉強していたり、学生時代から専門的に学んできた人たちの背中を追いかけるのが今の自分の位置なのは認めないといけません。

なので、つらいけど、できるところからコツコツと学んでいかないとねという記事です。

じゃあ、なにやりたいの?

ということで以下にやりたいことを列挙。

  • Figmaを学んで、業務向けのWebアプリケーションのデザインを作れるようになる。

    • Start: そもそもの使い方から学ぶ。
    • How: 購入した書籍で学ぶ。
    • End: 各機能のデザインを自分が満足する形で作れるようになる。ストレスなく扱えるようになる。
  • Apidogを学んで、業務向けのAPIの設計、試験ができるようになる。

    • Stoplightは英語のみなのでちょっとハードルが高い…、ので日本語でできるApidogをチョイス。
    • Start: そもそもの使い方から学ぶ。
    • How: チュートリアルをやる。
    • End: 以下できるといいな。
      • 設計してドキュメントを出力
      • テストを設計する
      • 外部アプリからのテスト向けにモックを作る
  • Java、Spring Bootを用いて、自分の理想的な実装でアプリを作る。

    • なにを作る?
      • イベント施設情報管理アプリ
        • 今後呼び出し元としてイベント派遣求人管理アプリを作るものとしてマルチプロジェクトとして実装
  • AI使ってプログラミング

    • あんまり課金したくないんだけど、Github copilotやりたいなあ。月額で1400円くらいだけど、年間払えばちょっと安いし…。
    • 期間とスケジュールを決めて学習していくのがいいかな。毎週何曜日はやるぞ、的な。プラモ作ったりしたいけども、勉強もしたい。できることは増やしたい。

まとめ

多い…。 なにから手を付けるのか。 Javaかな。 できるだけ小さくしましょう。

映画『きみの色』感想 - すっきりさっぱり楽しかったこと、引っかかること

はじめに

超久しぶりにブログを書くことにする。

というのも先日映画を見たからです。 『きみの色』という作品です。

kiminoiro.jp

  • 時間ができたので久しぶり映画を見るぞ。
  • でもなんだか最近参っているからあんまり考えすぎるのは嫌かもな。程よい長さでしんどくないお話がいいな。

ということでチョイス。

上映時間100分が終わってからの感想が素直な「楽しかった」でした。

どういうお話?

全寮制のキリスト教系の女子高に通う日暮トツ子は子どものころから人が『色』で見えていた。 同じ学年の作永キミについてきれいな青だと感じて興味を持ち、好意的に思っていたが接点がないまま過ごしていた。 が、あるときキミが退学していたことを知る。 街の本屋で働いているらしいという噂を頼りにキミを捜し歩いて、古書店『しろねこ堂』で制服姿とは雰囲気が違う、私服でギターを練習しながら店番をするキミに会う。 キミとの会話中に、店にいた音楽好きの男子影平ルイから話しかけられたタイミングでキミとの接点づくりのつもりか「キミとバンドを組んでおりメンバーを募集している」ととっさの嘘をついたことをきっかけに3人は関わり、一緒に音楽を作るようになる。

トツ子のこと

ぽやぽやとしたのんびり屋、というかマイペースな感じが終始かわいい。 人間が色で見えており自分にとって魅力的な人はよりきれいな色に見える、という感じ方をしているみたいだが、物語的な効果はハテナが浮かぶ。 でも全編通した色彩設計というか色の雰囲気がすごくよかったので、そういった画作りをしている作品内で人に色が重なる描写自体は結構好きだなと感じた。 おっとりしておとなしいけど、自分の気持ちを通すためにまあまあ無茶をするのも面白かった。 街の本屋さんを片っ端から歩いて調べたり、とっさにバンドを組んでいるなんて言ってしまったり(しかもピアノがちょっと程度弾けるくらいで!)、すでに退学済のキミをこっそり寮に招いたり(そもそもこのために仮病で修学旅行を休んでいる)…、まあ無茶をしている。 でも、なんとなく見ていられるのは悪さをしようというものではなくて、本人なりに一番いい選択をしていると思っての行動に見えるからかなと感じた。 まあ、ぽやぽやとかわいいというのがベースのキャラクターなので許してしまう雰囲気がある。 あと!演奏シーンのトツ子が大変かわいい。ライブの時なんかキーボード弾かずにリズムに乗って揺れているだけの時もあるのに! コーラスの時もかわいい。 かわいさ、というか愛嬌があって楽しいキャラクターだな、と。

キミのこと

トツ子とは打って変わってクール美人。 話してもクール、かと思えば結構普通にいろいろ悩む女子。 おばあちゃんと一緒に住んでおり、世話をしてもらっているが、このおばあちゃんはキミとトツ子の通う(キミは通っていた)学校の卒業生。 おばあちゃんからキミへの思いは、普通に学校生活楽しんでほしいなというものと、母校に通っている嬉しさとが混じっているんだろうな、おそらく。 キミは学校の聖歌隊で活躍もしていた生徒だったが、おばあちゃんはじめ周りからの期待を自分の中で大きくしすぎてしんどくなったのか、おばあちゃんには内緒で退学してしまう。 でも、キミは内緒で学校をやめたことに罪悪感を持っている。真面目だなあ。 キリスト教系の、寮もあるような学校なので素敵で清楚な制服なんだが、キミの私服が今時のかっこいいカジュアルなのがとてもぐっときますね。好きなキャラデザ。 使用ギターが兄のおさがりのリッケンバッカーなのもアツい。ストラトキャスターテレキャスじゃないんだ…いいな…。

ルイのこと

変な男子。かわいい。 最初に演奏してみせる楽器がテルミンて!なかなか選ばないわ! 離島に住んでいて、母親がそこで医者をやっているため継がなければならない意識をもっている。 だから音楽大好きだけどやるのは高校まで!真面目だ。すごいなあ。 同世代の友達が(本島側基準だと、になるかな)少ないだろうし、テルミンを演奏するような彼と趣味が合う友達というのは島の中ではできなかったのかもしれない。 トツ子とキミのバンドに誘われたことを喜び、島にトツ子とキミが来たこと大変喜んでいたのはそういう事情なのかなと思いつつ見ていた。かわいかった。 キミとかトツ子に恋愛感情を持ってもいいのに描写されないのは、たぶんそれだけで満足だったのかな(描かれていない以上は掘らない)。 キーボードも弾くし、打ち込みで曲も作る。多才。 お母さんに音楽に打ち込んでいる自分自身と、トツ子とキミとバンドをやっていて借りている教会でバンドの練習をしていることをお母さんに隠しているのは冷静に考えるとちょっとなんでかな?感はあったが。 そういうもんなんだ多分。

全体のこと。楽しかったこと。

画面の色彩設計が気持ちいい。 『色彩設計』でいいんだよね?あれらは。 キャラデザの雰囲気も好み。アップの時の目元がイラストっぽいのが、デザインに対するフェチっぽさを感じてうれしい。 目元はあんな風に見せたいんだなあって。

お話的にはピンチがいくつかあるんだけど、ピンチの終わり方が優しい。 寮への退学者連れ込みの件がばれたときの対応すら優しい。 最後の学園祭ライブで男子メンバーであるルイ君の触れられなさも(「男子?」くらいの台詞あったっけ?覚えていない)。 多分、ピンチとか壁が与える負荷からの突破はこの物語ではあんまり重要じゃない気がする。

基本的にはトツ子視点で描かれていて、トツ子が見ていないはずのシーンについてはまあ当然描かれてはいるんだけど、たぶんあとからトツ子がキミとルイくんから話を聞けるレベルの内容しか映画の中では書かれていないんだろうなと思っている。 キミとお兄さんの関係とかおばあちゃんとの関係とか、ルイくんとお母さんの関係とか島の生活とか、キミからおばあちゃんとルイくんからお母さんへ打ち明けた本当のことや思いとかは詳しくなくていい。 トツ子を中心にバンドを組んで楽しく音楽を奏でて、最後はライブでみんなに受け入れられて、結果トツ子は自分の色も後で知るっていう嬉しさがこの映画の中心なんだろうな。

おっさんながら、こんな風に楽しく青春を送れたらいいな、なんて思ってしまったよ。

楽しかった。

全体のこと。引っかかっていること。

『キャラクターの尊厳を守る』こと

山田監督の思想としてそんなワードがあったなと思いながら見ていたんだけど、それは作品を選ぶやり方だよなと再認識した。 山田監督の作品の色としてやるならば、合う脚本家さんを呼んできっちり作るだけなんだから、外野で客として感想を書くだけの私がああすべきこうすべきということは違うとわかっているけど、それでも、見せたくない部分をむき出しにしたときに出てくるものの魅力は否定できないと思う。 今回の作品はトツ子っていうキャラがいてくれたから、この思想がはまったような感じを受けている。 だって、あの子基本的に楽しそうだもの。 やらかして奉仕活動の罰を受けたりしても、実家に帰ってもお母さん優しいし。 ライブに来ていたお父さんも見るからに優しいし。 『本人が晒したくなかったけど出てきてしまったむきだしの何か』はこの子で見せなくてもいいなと。

やっぱりもうちょっと事情を掘ってほしいかなあ、なんて

キミとルイくんのことです。 もう、尺の都合もあるし、トツ子が中心のお話からブレるしやらなくて正解だと思っていますけどね、どうしてもね。 学校辞めるまでいってしまうかな、親に内緒にしてまで音楽やるかな、とはうっすら思った。 その決断をしたり秘密にしたりする重さがちょっとわかんないなあと。 回想じゃなくて友達への説明だからなあ、しんどい部分ってあんまり言わないじゃん。 なので、その辺の補完が映画の中であったらなあと思ったりしました。 でも!これはトツ子が中心のお話!だから今のでよいの!とも思っています。

とにかくまあ

楽しく見られました。 よかった。

余談

こんなに長くちゃんと感想書いたのほぼ初めてだよ。 よかった書けて。 また何か見たら書こう。

音楽の話とかも書きたい。 ちゃんと感想を言葉にできるようにしたいなあ。

【備忘録】SpringのWebClientでのメモリリークの対処

「spring boot scheduled memory leak」でググったらScheduledとは関係がないけど以下の記事が。

techlab.bol.com

そういえばHTTP Interfaceは内部的にはどうしているんだろうか。

あと、関連してJavaメモリリークについてのBealdungの記事。

www.baeldung.com

あとこれも。本命。 やりそうー。

stackoverflow.com

SpringBoot3(Spring6)でのAPI呼び出し(HTTP Interface)について

WebClientかあ、Reactor難しいなあ……ちょっと楽できないかなあ。

なんてことを思っていたら、

docs.spring.io

「1.3. HTTP Interface」にWebClientによるノンブロッキングを意識しない書き方があるやんけと。

具体的な書き方は

tech-blog.yayoi-kk.co.jp

ik.am

を参照していただくとして、自分ではこれから別の気になる部分の検証をしようかなと。 後日更新します。

やっておきたいこと

  • HTTP Interfaceを使用してブロッキングな戻り値でAPIのレスポンスを得る際、
    呼び出し先のAPI応答時間が長い場合、HTTP Interface内部で動作しているWebClientのスレッドは枯渇して待機時間が伸びてしまうようなことはないのか?
    • 結局WebClientのMonoやFluxと格闘する可能性が出てくる。

とりあえずわかっている問題点①

github.com ↑にあるとおり、@HttpExchangeに指定するURLにapplication.propertiesの内容をセットできない。 回避策は上記のやり取りにあるとおり↓のやり方なんだけど、

github.com

API呼び出しの際にパラメータ扱いしたくないパスまで渡したくはないなあ…。

とりあえずわかっている問題点①

異なるドメインAPIを複数使用したい場合、HttpServiceProxyFactoryのBeanを複数作りたいが、無理っぽい。 WrapしたBeanを作って使用したらいけるんじゃないかなあ…なんて。

github.com

Reactorを理解する

Reactorを理解したい

ことの発端

「新規開発しましょう。」「Javaでよいですよ。」「任せるから好きに作ってね。」 からの - Spring 5以降なのでRestTemplateがメンテンナンスモードになっており、WebClientが推奨されている※1 - リアクティブプログラミングなんもわからん

※1: RestTemplateのJavadocを参照

spring.pleiades.io

最終的にやりたいこと

  • WebClientを使用してSpringBootアプリケーションからAPIの呼び出しを行い処理がしたい
  • デプロイ先はTomcatなので、アプリそのものはSpringWebFluxではなく、SpringMVCで実装※2

※2: 「SpringWebFluxはNetty使ってね。Tomcatでは動かないよ。」的な

spring.pleiades.io

↓こういうことも書いてあるからやりようはあるのかもしれないけども…

spring.pleiades.io

参考

qiita.com

speakerdeck.com

github.com

projectreactor.io

www.alpha.co.jp

以下、理解のためのメモ

『Reactive Streams 入門 #jjug』にて

2015のスライドで古いけど、基本的な考えを押さえていると思います。
個人的には理解のベースとして大変役立ちました。

キーワード、かな

  1. "データフロー"を記述するためのプログラミングモデル
  2. "変更の伝播"をプログラマに代わって実行するランタイム

組み合わせ可能(composable)

関数同士の組み合わせでデータのフローを作る、と理解

Future/Promise ~略~ データフローはあるが変更の伝播はない

そうなんだ!?

『reactive-streams』のREADMEにて

これはリアクティブプログラミングのための仕様であり、インタフェース。
詳細に理解する必要はあまりないように感じる(なぜなら普段使うのは実装されたSpringのReactorだから)。
おおよその理解をしておいて、実装のドキュメントで理解しきれなかったら改めて参照する、でよいかも?

  • Publisher

    • Google翻訳に突っ込むと『出版社』になる。 publish -er で「出す者」 程度の方がいいかな?
  • Subscriber

    • Google翻訳に突っ込むと『購入者』『加入者』などになる。

パブリッシャーは、サブスクライバーから受け取った要求に従ってそれらをパブリッシュする、潜在的に無限の数のシーケンスされた要素のプロバイダーです。

Google翻訳 データの受け側の処理能力による制限をうけるから、PublisherはSubscriber側の許可を得ながらデータを渡すイメージかな。

『PROJECT REACTOR』のハンズオンにて

FluxとMono

  • Reactive StreamsのPublisherである
  • Fluxは0~n個のonNextイベントを持ち、Monoはひとつ

参考: Javadoc projectreactor.io projectreactor.io

The recommended way to learn about the Flux API and discover new operators is through the reference documentation, rather than through this javadoc (as opposed to learning more about individual operators). See the "which operator do I need?" appendix.

ということでこれ↓も

projectreactor.io

公式のハンズオン解答例

github.com

こちらのsolutionブランチを参照。

アルファシステムズさんのブログは……

またあとで……

GradleのWrapperをバージョンアップする

Spring Initializrが作ったWrapperのバージョンアップ手順。

>gradlew.bat wrapper --gradle-version=8.0.2
Downloading https://services.gradle.org/distributions/gradle-8.0.1-bin.zip
...........10%............20%............30%............40%............50%............60%...........70%............80%............90%............100%

Welcome to Gradle 8.0.1!

Here are the highlights of this release:
 - Improvements to the Kotlin DSL
 - Fine-grained parallelism from the first build with configuration cache
 - Configurable Gradle user home cache cleanup

For more details see https://docs.gradle.org/8.0.1/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

BUILD SUCCESSFUL in 39s
1 actionable task: 1 executed

やりたいことメモ(備忘録)

アプリを作りながら勉強したい

なんのアプリ?

稼働時間入力アプリにしよう

実現したいこと

  • ログイン機能
  • プロジェクト名を入力して登録
  • 登録済プロジェクト名を選択して時間計測
  • カレンダーから週毎、月間の累積稼働時間を参照
  • 計測した時間を修正

やること

画面作成

  • HTMLとCSSのみでひとまず作成

アプリ機能作成

  • SpringBootを使用
  • DBはとりあえずインメモリ
  • TDDで開発

ちょっとリッチに

  • モーダルウィンドウで確認メッセージ表示(モーダルのライブラリ選定)
  • 時間計測を非同期で処理(JavaScriptJQuery?Vue.js?)