torutkのブログ

ソフトウェア・エンジニアのブログ

オンライン勉強会2件の一部聴講メモ

redmine.tokyo勉強会とJJUG CCC 2021 Spring オンラインが開催

5月下旬の週末に、RedmineのオンラインイベントとJavaのオンラインイベントが続けて開催されました。

土日に自宅で部屋に閉じこもってべったり聴講というのはなかなか難しく(それなりに家事等があり)、一部聴講し、他の興味ある部分は後日Youtubeに録画がアップされてから聴講ということになってしまいました。

RedmineJava

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新機能の紹介、地道に機能が追加・改善されています。 便利そうな機能

LT

プラグインを作りました、の紹介がいくつかあってよいです。

背景地図を取り込んで地理情報を可視化できるのは興味深いですが、セットアップがちょっと大変そう。

JJUG CCC 2021 Spring

午後から聴講開始、動画はライブですが遡って午前のモノを見ることもできたので休憩時間のときに飛ばし見をしました。オンラインだとザッピングのようにあちこちつまみ食いしてしまい、集中して聴くことがなかなか難しいです。

セッション動画

eclipseユーザのためのVSCodeのススメ

資料

最近、VSCodeJavaプログラミングをするという、えっ、なぜIDE使わないの?という風潮があるので実際どうなのだろうとちょっと覗いてみました。 細かなところは実際触ってみないと分かりませんが、そこそこ使えるように感じました。

今どき?のJavaにおける例外処理についての考察

Spring frameworkではインフラ層のエラーを非検査例外(Runtime Exception)で飛ばし、AOPやインターセプタで非検査例外を補足して一元的に対応するという仕組みを前提として、アプリケーション層、ドメイン層のJavaコードを書くときなら検査例外はいらない。業務上のエラーは例外ではなく戻り値で扱う。戻り値はエラー状態を含む型(interface)で、という内容でした。

Spring frameworkでもなく、Webアプリケーションでもない分野でのJavaプログラミングをずっとしていたので、この前提のプログラミングはしてきませんでした。ただ、よく「Javaの検査例外は悪」といった意見を見ますのでその背景がこのような前提だろうということが分かります。

ソフトウェアアーキテクチャの選び方

動画

レイヤードアーキテクチャは、ドメインがより下層のインフラに依存するという課題から、ヘキサゴナルアーキテクチャやオニオンアーキテクチャ、クリーンアーキテクチャといったドメイン駆動等で提唱されるモデルで、ドメインが他の関心事のレイヤに依存を持たない構造を取る解説をふわっと流れるような動画で紹介していました。 後半の事例紹介は、開発メンバーの素養や開発プロジェクトの条件に応じてアーキテクチャを選定するという点が興味深いです。

オンライン広告入札システムとZCC

資料

G1GCと比べたときのZGCで、GCによる最長停止時間は相当短く抑えることができますが、GC頻度は増大する、というのがざっとの理解です。細かい使い方等は飛ばし見なので把握せず。 GCのパラメータは膨大なのでどの組み合わせが最適かを機械的に探索し、可視化評価する例が紹介されています。これはすごい。

  • パラメータ値の自動錯誤を自動化、よい値を発見するOptunaツール(Python製)
  • GCログの解析サービス利用(GCeasy)
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が動かなかった