『他者と働く』を読んだ感想

この記事は「2024年の"推し"本 Advent Calendar 2024」の16日目の記事です。

adventar.org

『他者と働く──「わかりあえなさ」から始める組織論』が普遍的にオススメできると感じたので、感想を書きつつ推します。

publishing.newspicks.com

続きを読む

TSKaigi Kansai 2024に参加しました~ #TSKaigiKansai

2024/11/16に京都市勧業館「みやこめっせ」で行われたTSKaigi Kansai 2024に参加しました。いつもより淡々と書きます。

kansai.tskaigi.org

参加理由

  1. TSKaigi(東京のやつ)に参加しなくて若干公開したから
  2. 業務で使っているけどTS全然わからんから
  3. 同じ会社のメンバーが登壇するから
続きを読む

JJUG CCC 2024 Fallに登壇しました! #jjug_ccc

2024/10/27に行われたJJUG CCC 2024 Fallに登壇しました。

この記事では登壇の振り返りを行い、登壇内容の詳細は話しません。

続きを読む

東葛.devのイベント設計、全部教えます! #toukatsu_dev

東葛.devというイベントを立ち上げ主催をしています。 千葉県北西部の東葛地区を中心とした地域ITコミュニティです。

詳しい立ち上げの経緯やスタンスなどは次の記事を見ていただければと思います。 hk-it.hatenablog.com

この記事では定期的に開催しているオフラインイベントのコンテンツをどういう考えで決めているかを共有します。

地域ITコミュニティイベントやってみたい人(そんな奇特な人がいるのか?)の参考になればと思います。

続きを読む

【非公式】JJUG CCC 2024 Fall セッション詳細出現単語予習! #jjug_ccc

2024/10/27(日)にJJUG CCC 2024 Fallが行われます。

ccc2024fall.java-users.jp

↓参加登録はこちらです jjug.doorkeeper.jp

私は前回に引き続き、当日スタッフ、登壇を行いますが、せっかくなので初参加やJava歴が浅い方でも参加しやすいようにセッション詳細に出てくる技術系の単語を総ざらいます。

これにより、当日のセッション選びや事前勉強の助けになればと思います。

JJUG CCCとは

JJUGのCCCです!

日本Javaユーザーグループ(JJUG)のクロスコミュニティカンファレンス(CCC)です!

例年2回、春と秋に開催する日本最大のJavaコミュニティイベントです。 Java関連の技術や事例に関する良質なセッションが行われ、また異なる分野で活躍するJava技術者が一堂に会する場ともなっています。

※Doorkeeperから引用

ここから単語紹介!基本的にJava文脈での紹介になります。※ChatGPTにわりと頼っています。

ジェネリクス

クラスやメソッドで使うデータ型をパラメータ化する仕組み

例として、List<String>など。このListにはString型しか入らないことを制限できます。 あとからどの型を取るか決めることにより型安全性が高まり、コンパイル時にエラーを検出できるため、バグを減らすことができます。

OpenAPI

OpenAPIは、RESTfulなAPIを設計・記述するための標準仕様

APIのエンドポイント、リクエストやレスポンスの形式、認証方法などをYAMLやJSON形式で記述します。 記述した定義から、APIの自動ドキュメント生成や、クライアント・サーバーコードの自動生成、テストツールからAPI利用が可能になり、効率的に開発が進められます。

ドメイン駆動設計

ドメイン駆動設計(DDD: Domain-Driven Design)は、ソフトウェアの複雑な業務ロジック(ドメイン)に焦点を当て、設計を行う手法です。 ドメインとは、システムが解決しようとする業務や問題領域のことで、業務担当者が密に連携し、共通の言語(ユビキタス言語)を使ってモデルを定義します。ドメイン駆動設計は、複雑な業務ロジックを反映した設計を行うことで、システムの変更に強くなるため、特に大規模なシステム開発で有効です。

Kotlin

Kotlinは、Javaとの互換性があるプログラミング言語で、Javaのコードと一緒に使えるため、Javaからの移行がスムーズです。Kotlinはシンプルで安全な文法を持ち、Nullを明示的に扱う仕組み(Null安全)などが特徴です。

オブジェクト指向プログラミング

オブジェクト指向プログラミング(OOP)は、データとそれに関連する操作を「オブジェクト」としてまとめて扱うプログラミング手法です。オブジェクトは、データ(属性)とメソッド(操作)を持ち、各オブジェクトが相互に作用することで一つのプログラムを完成させます。

Spring

Springは、Java向けの強力なフレームワークです。依存性の注入(DI)やアスペクト指向プログラミング(AOP)などをサポートします。また、データベースアクセス、セキュリティ、トランザクション管理など、多様なモジュールで幅広い機能を提供し、開発を効率化します。

Spring boot

Spring Bootは、JavaのフレームワークであるSpringを簡単に使えるようにしたツールで、設定や構成を自動化し、迅速なアプリケーション開発が可能になります。最小限の設定でWebアプリケーションやマイクロサービスを立ち上げられ、組み込みのTomcatなどのサーバーも自動的に提供され、開発者がすぐにプロジェクトを開始できる利点があります。

Mutation Testing

Mutation Testingは、コードに小さな変更を加えてテストの効果を評価します。元のコードを変更した「ミュータント」に対して既存のテストケースを実行し、テストがその変更を検出できるかを確認します。テストが失敗すれば、テストケースが効果的であることがわかりますが、成功した場合は改善が必要です。これにより、テストの品質を向上させることができます。

テストピラミッド

テストピラミッドは、テスト戦略を視覚化したモデルで、テストの種類を層に分け、下層に多くのテストを配置します。ピラミッドの下部にはユニットテスト(個々の関数やメソッドのテスト)があり、中間に統合テスト、上部にエンドツーエンドテスト(システム全体のテスト)があります。この構造により、効率的にテストを実行し、バグを早期に発見することが可能です。

MicroProfile

MicroProfileは、Javaのマイクロサービスを開発するための仕様セットです。MicroProfileは、効率的にマイクロサービスを構築できるようRESTful APIのサポート、コンフィギュレーション、マイクロサービス間の通信、ヘルスチェックなどの機能があります。

Valhalla

Valhallaは、Javaに対して新しいデータ型やメモリ管理のモデルを導入を目指すプロジェクトです。値型(value types)をサポートすることで、パフォーマンスの向上とメモリ使用の最適化を図ります。Valhallaは、Javaの堅牢性を保ちながら、より効率的なデータ処理を可能にすることを目指しています。具体的にはList<int>ができるようになるといったものです。

Event Sourcing

Event Sourcingは、アプリケーションの状態を変更する代わりに、その変更を表すイベントを記録するアーキテクチャスタイルです。この手法では、すべての状態変更がイベントとして保存され、システムの現在の状態は過去のイベントを再生することで再構築されます。これにより、データの履歴を簡単に追跡でき、デバッグやデータの復元が容易になります。また、イベントストリームを使用して、リアルタイムの処理や分析も可能になります。

CQRS

CQRS(Command Query Responsibility Segregation)は、データの変更を「コマンド」とデータの取得を「クエリ」に分ける設計パターンです。分離により、パフォーマンスやスケーラビリティが向上し、特に大規模なシステムや複雑なビジネスロジックに有効です。イベントソーシングと組み合わせて使用されることもあります。

MyBatis

MyBatisは、Javaのデータアクセスフレームワークです。SQL文をXMLファイルやアノテーションで定義し、オブジェクトとデータベースのマッピングを行います。また、JDBCのラッパーとして機能し、トランザクション管理やキャッシングなどの機能も提供します。これにより、開発者はデータベースとのやり取りを効率的に行えるようになります。

TestContainers

TestContainersは、Dockerコンテナを利用してテスト環境を簡単に構築できるツールです。これにより、データベースやメッセージキューなどの外部サービスをテスト用に一時的に立ち上げ、実際の環境に近い形でテストを実行できます。これにより、開発者はより信頼性の高いテストを行い、環境の一貫性を保つことができます。

Spring Modulith

Spring Modulithは、Spring Bootアプリケーションをモジュール化するための機能です。これにより、大規模なアプリケーションを小さな、独立したモジュールに分割し、開発やテストを効率的に行うことができます。各モジュールは明確な役割を持ち、他のモジュールとの依存関係を管理することで、アプリケーションの保守性を向上させます。

Qodana

Qodanaは、JetBrainsが開発した静的コード解析ツールです。Javaコードなどを自動でチェックし、潜在的なバグや問題点を早期に発見することができます。セミコロン漏れなどの文法ミス、変数の使い方などの潜在的なバグ、コーディング規約違反を検知できます。

Quarkus

Quarkusは、Javaでクラウドネイティブなアプリケーションを開発するための、オープンソースのフルスタックフレームワークです。特に、コンテナやサーバーレス環境での実行に特化しており、従来のJavaアプリケーションよりも高速かつ軽量に動作するように設計されています。

Micronaut

Micronautは、Javaでマイクロサービスを開発するための、軽量かつモダンなフレームワークです。特に、コンテナ環境での実行に最適化されており、高速な起動と低メモリ消費を実現します。

GraalVM

GraalVMは、Java仮想マシン(JVM)上で動作する多言語仮想マシンです。Javaアプリケーションのパフォーマンス向上とクラウドネイティブな環境への適応に大きく貢献しています。主な特徴として、ネイティブイメージ機能があり、Javaアプリケーションをネイティブコードにコンパイルすることで、スタートアップ時間を短縮し、メモリ消費を削減します。

まとめ

ざっくり単語をまとめましたが、セッション詳細にはまだまだ拾いきれなかった単語もあります。

当日まであと数日!事前に予習してもぶっつけ本番でも当日はぜひいろいろなセッションを楽しみつつ、学びを深めてください!

前回は全セッションについて予習を書いていましたが、ちょっとカロリー高すぎるので諦めました。

↓前回の記事 hk-it.hatenablog.com

ちなみに私は当日スタッフと『テストが正しいかテストする?Mutation Testing入門!』というタイトルでのセッションを行いますのでよろしくお願いします!!

東葛.dev立ち上げたよ! #toukatsu_dev

この夏、東葛.devというITエンジニアコミュニティを立ち上げたので、経緯やスタンス(運営方針)を綴っておきます。

スタンスは現時点のものなので、変わっていくこともあるかと思います。

続きを読む

「かいぶん」しょを作った話

noteに『回文になる単語リスト』を公開しました。

note.com

続きを読む

Googleスプレッドシートで予定表示用のカレンダー作った

結論

docs.google.com

使い方

Googleにログインした状態で「ファイル>コピーの作成」で自分のドライブにコピーしてください。

カレンダーシート

A1、C1セルで年月を指定できます。

他にいじるところはほぼないです。

予定一覧

日付と見出しを入力できます。入力するとカレンダー側に反映されます。

同日に複数の予定がある場合、カレンダー上では"/"区切りで表示されます。

Q&A

Q. Googleカレンダーで良くない?

他の人と予定共有したいときに共同で見られる予定作る設定するの面倒だし、用途ごとにわけるのもつらさある。
スプレッドシートなら用途ごとにシートコピーするだけだし、予定一覧をIMPORTRANGEでマージして一つのカレンダーに集約することもできるので使い勝手良さそうな気がした。

Q. 編集して良い?再配布して良い?

いないと思うけどご自由に。

Q. こうしたらもっとよくなるよ!

ありがとうございます。

Q. 関数汚い

それはごめんなさい。