オンライン勉強会2件の一部聴講メモ
redmine.tokyo勉強会とJJUG CCC 2021 Spring オンラインが開催
5月下旬の週末に、RedmineのオンラインイベントとJavaのオンラインイベントが続けて開催されました。
5月22日(土)redmine.tokyo 第20回勉強会
5月23日(日)JJUG CCC 2021 Spring (JJUG:Japan Java User Group、CCC:Cross Community Conference)
土日に自宅で部屋に閉じこもってべったり聴講というのはなかなか難しく(それなりに家事等があり)、一部聴講し、他の興味ある部分は後日Youtubeに録画がアップされてから聴講ということになってしまいました。
Redmine と Java
Redmine
Redmineは、バグ等の追跡管理や作業タスクの管理等をチケットベースで行う管理ツールです。 Redmine自体はオープンソースで開発され、無償提供されている他、いくつかの企業からクラウド上で有償のサービスが提供されています。
Redmineの登場は2006年*1のようです。その頃は、Trac、Mantis、影舞、Bugzillaなどのオープンソースツールや有償の製品がいくつもひしめき合っていました。
個人的にはバグ等の障害管理だけでなくWikiや掲示板も統合され、Redmineインスタンス1つで複数プロジェクトの管理ができる汎用性の高さがよいと思っています。2009年頃から使い始めて今に至っています。
Java
Javaはプログラミング言語と実行環境で、オブジェクト指向プログラミングを主とした言語仕様と仮想マシンによるプラットフォーム非依存な実行環境を持っています。当時はオープンソースではありませんが、開発キットと実行環境が無償で提供されました。
Javaの登場は、1995年にα版、β版が公開、翌1996年1月に正式版(1.0)が公開されました。
標準APIでマルチスレッド、TCP/IPネットワーク、GUIの機能を持ち、デスクトップからサーバー上のプログラムまで、OSが違っても同一バイナリ(バイトコード)のプログラムを実行することができる汎用性(適用範囲の広さ)を持っています。
1996年にJDK 1.0.2を当時自宅PC(漢字Talk 7.5:古いMacOS 7.5の日本語版)で、Webブラウザ上で動かすアプレットやスタンドアロンプログラムを作ったり、職場の実験室等にあったSolarisマシンやWindows NT 3.5マシンでプログラムを作ったりしました*2。
redmine.tokyo第20回勉強会
オンライン(ライブ)は、中盤のLTの途中から聴講でした。翌日には録画がアップされていましたので、聴講しました。 既に勉強会ページには動画、資料のリンクが貼られています。
Redmine 4.2新機能評価ガイド
Redmine 4.2新機能の紹介、地道に機能が追加・改善されています。 便利そうな機能
- 活動でユーザー選択して表示
- カスタムフィールドのコピー
- Wikiページへのリンク記載時、ページ名を補完
- Wiki編集、PREでプログラミング言語のソースコードシンタックスハイライトを指定時に候補言語をユーザが設定可能に
- Wiki編集、表の挿入
LT
プラグインを作りました、の紹介がいくつかあってよいです。
- Redmine issue assign notice plugin
- redmine numericfield chart macro
- Redmine CFReport plugin
- Redmine GTT (Geo-Task-Tracker) plugin
背景地図を取り込んで地理情報を可視化できるのは興味深いですが、セットアップがちょっと大変そう。
JJUG CCC 2021 Spring
午後から聴講開始、動画はライブですが遡って午前のモノを見ることもできたので休憩時間のときに飛ばし見をしました。オンラインだとザッピングのようにあちこちつまみ食いしてしまい、集中して聴くことがなかなか難しいです。
eclipseユーザのためのVSCodeのススメ
最近、VSCodeでJavaプログラミングをするという、えっ、なぜIDE使わないの?という風潮があるので実際どうなのだろうとちょっと覗いてみました。 細かなところは実際触ってみないと分かりませんが、そこそこ使えるように感じました。
今どき?のJavaにおける例外処理についての考察
Spring frameworkではインフラ層のエラーを非検査例外(Runtime Exception)で飛ばし、AOPやインターセプタで非検査例外を補足して一元的に対応するという仕組みを前提として、アプリケーション層、ドメイン層のJavaコードを書くときなら検査例外はいらない。業務上のエラーは例外ではなく戻り値で扱う。戻り値はエラー状態を含む型(interface)で、という内容でした。
Spring frameworkでもなく、Webアプリケーションでもない分野でのJavaプログラミングをずっとしていたので、この前提のプログラミングはしてきませんでした。ただ、よく「Javaの検査例外は悪」といった意見を見ますのでその背景がこのような前提だろうということが分かります。
ソフトウェアアーキテクチャの選び方
レイヤードアーキテクチャは、ドメインがより下層のインフラに依存するという課題から、ヘキサゴナルアーキテクチャやオニオンアーキテクチャ、クリーンアーキテクチャといったドメイン駆動等で提唱されるモデルで、ドメインが他の関心事のレイヤに依存を持たない構造を取る解説をふわっと流れるような動画で紹介していました。 後半の事例紹介は、開発メンバーの素養や開発プロジェクトの条件に応じてアーキテクチャを選定するという点が興味深いです。
オンライン広告入札システムとZCC
G1GCと比べたときのZGCで、GCによる最長停止時間は相当短く抑えることができますが、GC頻度は増大する、というのがざっとの理解です。細かい使い方等は飛ばし見なので把握せず。 GCのパラメータは膨大なのでどの組み合わせが最適かを機械的に探索し、可視化評価する例が紹介されています。これはすごい。
JFRなどのツールを用いてFullGCやOOMEの原因を特定する流れ
JFRで実行状況をファイルに出力し、JMCで解析。アプリケーションの動作状況を把握。
- GC Viewerツール。元の開発会社による開発が停止後(2008年)、個人がメンテナンス継続
Plug-in Architectures with the Java Module System
How Should Java Developers Build Front-Ends Today?
スポンサーブース、アンカンファレンス
スポンサーブース、アンカンファレンスへの行き方が分からずたどり着けませんでした。リンクを辿ると、アカウント作成?をしたあと、デバイス(ビデオ、マイク)が接続されていないとエラーに。ヘッドフォンをヘッドセットに交換したけれど変わらず(PC再起動まではしませんでした)。
*1:https://www.slideshare.net/g_maeda/redmine9
*2:職場の事務所で個人に割当てられたPCはWindows 95で32bit対応していないためJavaが動かなかった