JJUG CCC 2019 Spring に行ってきた

書き手(私)のコメント/感想

  • JJUG CCC 2019 Spring に参加したのでそこで聞いて来た話のメモ
    • 完全に聞き取れたわけではないので話し手の意図と合っていない箇所があるかもしれません
    • (後ろに行くに連れてコメントが少なくなっていますが発表内容自体に何かあるわけではなく、単に私の体力と集中力が無くなってメモが取れていないだけです)
  • バリエーションに富んだセッションで聞いていて興味深いものばかりでした
    • あと、休日にこれだけの人が勉強会に来ていることにも驚いています (何もやっていないとすごい勢いで置いていかれる的な意味で)

JJUG Keynote #ccc_e1

  • Speaker: 谷本 心

現代に求められている Java コミュニティとは

  • 資料公開しないつもり
  • 反社会的な組織にする ※反社会的と言っているが、別に法を逸脱して何かをするというわけではない (聞き手としてのコメント)

アジェンダ

  • JJUG でやりたいこと
  • なぜ JJUG と CCC を分けたのか
  • いまの日本や IT 業界の状況を見つめ直す

本編

Java のリリースへの追従

  • 背景
    • 半年ごとのリリースサイクル
      • 学ぶスピードが速くなる
    • ライセンスモデルの変更
      • それに伴う混乱
  • 今後やること
    • 勉強会でのアップデート
    • グッドプラクティスの共有

海外 JJUG との連携

  • 背景
    • 新しい技術は海の向こうから
    • 新しい技術の情報を得る イコール 選択肢を増やす
      • 中上級者向け
        • 使い込んだ情報を共有する
          • 選択肢を減らす -> 初中級者向け
  • 双方向の連携
    • 海外 -> 日本
    • 日本 -> 海外
    • Oracle のイベントより JJUG のほうがレベル高いよ (余談)
  • 英語の壁を乗り越えろ
    • 海外カンファレンスに参加するほうが手っ取り早い
      • CCC 英語セッションを増やす
  • 今後やりたいこと
    • CCC の英語セッション継続 改善
    • JOnsen バイクツアーの継続
    • 海外の Java エンジニアが旅行する際にイベント参加してもらう
    • 日本の Java エンジニアが海外イベントに参加 登壇するのをサポートしたい
  • 情報を得ること発信することは自分達のやり方を客観的に見つめる機会になる
  • OpenJDK のネガティヴな話もあるはず ポジショントーク多いのでは

地方 Java コミュニティとの連携

  • 背景
    • 地方の Java コミュニティが登壇者を呼ぶ際の費用サポートをしている

初心者向けコンテンツの充実

  • 背景
    • Call for Paper
    • レベルの高い応募者がおおい
  • なぜそうなるか
    • 登壇するエンジニアはレベルが高い
  • 初心者向けの話をしたい人は貴重
  • やりたいこと
    • セッション、ハンズオンの充実
    • 企業と組む
    • 初心者向け講習にインセンティブを払う
    • 運営の手が足りない

組織を分離した理由

  • CCC ボランティアの募集など
    • 幹事が疲弊しなくなった
  • が、JJUG 幹事が不足している
    • 積極的な人ほど負荷が集中する
  • 幹事会の話題
    • 次の JJUG CCC の話
  • 課題
    • 年1にする?
      • 運営スキルが継続できなくなる
    • 委託する
      • 予算が無い
    • 有償化
      • 幹事へのプレッシャー大
  • やりたいことをもっとできるようにするため

いまの日本や IT 業界を見つめ直す

  • インターネットの普及により海外から技術だけで無く文化も一緒に伝わってくる
  • 日本文化と欧米文化の相違
    • 画一性 / 多様性
    • 感情的情緒的 / 合理的
    • 終身雇用 / Job Description
  • 日本的なサービス
    • 人中心
    • 現場の人間が柔軟に対応する
  • 欧米的なサービス
    • システム中心
    • システムとマニュアルで幅広く対応するが外れた要求には対応しない
  • 雇用の相違
  • 日本
    • 終身雇用
    • 優秀な人とそうで無い人の差が付きにくい
  • 欧米
    • ジョブ型雇用 適材適所 仕事が無くなれば終了
    • 優秀な人と層で無い人の差が付きやすい
  • 欧米型の雇用にシフトしている
  • サービスも欧米型に モンスターカスタマー
  • インターネット、旧来メディアによる分断
  • IT エンジニアの誤謬
  • IT エンジニアは未来に生きている 一般の人に比べて
  • 現在はその価値観が入り交じっている
  • 日本文化を好む人は、非協力的和を乱すやつと見なす
  • 欧米文化を好む人は、非効率 だから日本はダメという
  • IT エンジニアはなぜこれを IT 化しないのかと言いがち
  • インターネットで可視化されるようになった
  • 生きづらくない?

今後のコミュニティのあり方

  • JJUG を反社会的にしたい
    • 反社会的:社会の秩序や道徳から外れた
  • 多様化する価値観
  • そういう人達を守る
  • 人間は自分を正義だと認識しているときのほうが暴走しやすい
  • 会社の仕事がつまらない
    • そんなことを言ってはならない 道徳
  • 逸脱する人を守ることがコミュニティであればそれは反社会的
  • 道徳を守りたい人のことも理解して受け入れる必要がある
  • 多様な価値観を認める
  • 思考実験
    • PTA
    • 残業
      • 人は時間をかけただけ成長する
      • もっと働いて成長したい人もいる
        • それを助けるためのコミュニティ
        • やりがい搾取と活動機会の提供は紙一重
  • 他人の価値観を否定するのは苦しいこと
  • 人が熱烈に没頭しているときは Happy なはず
  • 技術が好き、成長したい、コミュニティが好き、の受け皿となる
  • コミュニティに属さない人達のことを否定しない
  • Be 反社会的勢力

パッケージ管理していなかった既存システムに後付けで Gradle を導入した話 #ccc_a2

  • https://speakerdeck.com/saiya_moebius/how-to-setup-gradle-to-improve-legacy-java-system
  • Speaker: 矢崎 聖也
  • git clone すると jar が大量に落ちてくる状態
  • OWASP
  • レガシー改善の戦略
    • 真に困っていることを改善するための最小のスコープにする
  • .class ファイルをテキスト形式で差分比較することができる
  • pom.xml はめんどくさがらずに書いたほうがよい
  • 戦略として何をしないのか、を決めることが大事
  • 質疑応答
    • 勝手にリポジトリ上の jar を変えても、Gradle でのビルド時に気づける
    • 闇が深いものが今後のリスクになると思っている
      • 放置しないほうがよいと思っている
      • ビッグバン的にやるか、少しずつやるか
      • SI だと少しずつは難しいこともあるかも
    • テストが無いコードがある画素の場合はどうすればよいか
      • テストを先に作る
        • これを先にやるとなるとメインどころが進められない
      • ライブラリの差分をチェックするというアプローチを取った
    • ビルドプロセスを変えるか?
      • 未定
        • メリットがあまり無さそう

Cloud Native時代の開発環境とアプリケーション基盤(仮) #ccc_el

  • https://speakerdeck.com/nobusue/runtime-for-cloud-native-era
  • Speaker: Nobuhiro Sue
  • Eclipse Che
  • コンテナベースのアプリケーション開発を容易に
  • Language Server は MS が開発していてあんしん
  • 拡張(stack?)をコンテナ上に作ることができる
  • UI にクセがある
  • 入門としては Minisift を使うのがおすすめ
  • デバッグ実行もできる
  • エラーが不親切
  • クライアントからトンネルして Workslapce を使うことも可能
  • 宣伝パート
    • operatorhub
    • TEKTON

実践クリーンアーキテクチャ with Java #ccc_e3

  • https://nrslib.com/clean-architecture-with-java
  • Speaker: Masanobu Naruse
  • フロントのプロトタイプだいじ
  • ドメイン ビジネスルールを表現する
    • 領域
    • 物流システムの場合 ※ドメインモデル
      • トラック
      • 作業者
  • アプリケーションレイヤー
  • Clean Architecture は DIP をふんだんに使っている
  • DS: DataStracture
  • Presentor は Web にマッチしない
    • iOS などにはマッチする
  • レールを用意する
    • ベクトルを同じにすることが大切
  • アーキテクトの役目はレールを敷くこと

テストエンジニアが教える JUnitを書き始める前に考えるべきテスト #ccc_e4

  • https://speakerdeck.com/nihonbuson/jjug-ccc-2019-spring
  • Speaker: ブロッコリー
  • ペアワークあり
  • テストの目的
    • 欠陥の検出
      • 原因究明は別
    • 対象ソフトウェアの品質レベルが十分であることの確認
      • 十分、であること 完璧では無い
    • 意思決定のための情報の提示
    • 欠陥の作り込みの防止
      • 実装の前にできるテスト活動がある
  • 早い段階で不具合を見つけることが大事
  • テスト内容について議論することが大事
    • 実装前に行うことができる
    • 設計などの段階でできる
  • どうやってテストケースを作るのか
  • テストケース作成の心得
    • 理由を説明する
    • テストケース名に役立つ
  • 単体テスト結合テストは開発者の責務 QA はシステムテストをしたい
  • Cheking と Testing
    • Cheking: 意図通り動くか
    • Testing: なんとかして製品を破壊する
    • Cheking は開発者の責務
  • 自動テストは Cheking

1400万ユーザーのWebサービスを15年運用して考える、Javaである理由 #ccc_e5

JJUG会長と一緒に考えたSpring Boot x JavaScript x IntelliJ x アジャイルというモダンな新人研修を今まさにやっている話 #ccc_e6

Eclipse バージョンアップ(3.7 -> 4.2)

http://www.eclipse.org/org/press-release/20120627_junorelease.php

Eclipse の 4.2 が出ていたのでバージョンアップしてみました。

(何かあると困るので 3.7 も使えるようにしておく形で)

  • バージョンアップ前に使っていた WorkSpace をコピー
  • コピーした WorkSpace を指定して Eclipse 起動

おしまい。
なんとなくキビキビ動くようになった感があるような。

追加された機能などは追々試そうかと思います。

bl コマンド

かっとなって書いた。今は反省していない。

『sl コマンドみたいに「ホモォ…┌(┌ ^o^)┐」が走る bl コマンド』という
ツイートがあったので Ruby にて実装してみた次第。

#!/bin/ruby

right = "ホモォ…┌(┌  ^o^)┐"
left  = "ホモォ… (┐ ┐^o^) "

def clear
  print "\033[2J"
end

def homo(str)
  newline = "\n"
  print newline + str + newline
  sleep 0.1
  clear
end

def space_closure
  spa = ""
  space = " "
  return lambda {
    spa = spa + space
  }
end

space = space_closure
loop do
  homo(space.call + right)
  homo(space.call + left)
end

enchant.js meetup! 東京 vol.2 に行ってきた

[4/24 追記]
公式 Blog にまとめ記事が上がってました。
http://wise9.jp/archives/7303


enchant.js meetup! 東京 vol.2 に参加してきました。午後のセッションパートから。

セッションあり、LTあり、ハッカソンありでとても楽しいイベントでした。
ありがございました。>主催者様、関係者様各位

90 minitues coding battle では↓を書いたもののいろいろと荒いので後で調整しようと思ってます。
http://9leap.net/games/1508


以下なんとなくまとめたものをつらつらと。

セッションパート

enchant.js でゲームを作るコツ

http://www.slideshare.net/sidestepism/enchantjs-meetup-tokyo-2-enchantjs

  • prototyping が大事
    • prototyping = 遊べる状態、仮組み、おもしろいかどうか判定できる最低限のもの
  • 20% ルール
    • 名作ゲームのほとんどは 20% の時間でプレイアブルを完成させ残りの時間(80%)は改善にあてる
  • どうやってプロトタイプを作るか
    • 主人公を決める
    • ストレスの与え方を決める
    • ゲームの目標を作る
  • ストレスについて
    • ストレスと時間の曲線を考えるのが大事
    • マリオの1−1はゲームデザインの教科書
    • ざっくりかいておいてなおしやすく
    • 初めてのストレスは簡単にしておく
    • プレイヤーのストレスと快感をコントロールする
  • 話は戻ってプロトタイピングを作るには
    • 主人公 = 中心にするものを決める
    • ストレッサーを決める
    • ゲームの目標を決める
      • 必ずしも数値でなくても良い
    • 重要なのはストレッサー
      • まずは有名どころからぱくるとよい
      • オリジナリティは作っているうちに生まれるもの
  • テストプレイとは
    • ストレス曲線の修正作業
    • 比較的簡単 シューティング、アクション
    • かなり難しい パズル
  • まとめ
    • 20 % ルール
    • ストレスコントロール
    • 主人公、ストレス、目標
gl.enchant.js で始める WebGL 3D プログラミング

(資料未公開?)

  • 2D と 3D の違いとは
    • 2D: x, y 軸
    • 3Dx, y, z 軸
  • 回転に関わるところが3Dはムズカシイ
    • 2D: 点回点
    • 3D: 軸回転
  • glMatrix.js
    • 行列、ベクトル演算のライブラリ
    • 内部で演算に使用
  • gl.ehchant.js でできること
    • モデルが読み込める
    • 基本図形が使える
    • 回転が簡単にできる
    • シェーディングができる
    • 視点が簡単に動かせる
    • 物理エンジンが使える
  • カメラ
    • 上ベクトルで傾きが決まる
  • 物理エンジン
    • physics.gl.enchant.js
      • ammo.js が必要
      • primitive.gl.enchant.js が必要

(以下メモ取れておらず。。)

「 9leap & enchant.js 」ロードマップ

http://www.youtube.com/watch?v=OCF8_OjfTOA&feature=youtu.be
  • 次の展開
    • 今 0.4.4
    • 開発中 0.5 2012/6 公開予定
    • コンセプトは More Simple, More Powerful
    • 0.5
      • widget.enchant.js
      • sound.enchant.js
      • canvas.enchant.js
        • 性能面でこだわりたいとき
    • gl.enchant.js
      • Animation, Bone model, Inverse Kinematics, MMD, Custom shader, Canvas texture, Refine physics simulation
    • enchnat.js 開発の目的
      • より簡単にゲームを作れるようにすること
      • 性能面の追求よりは実装のしやすさ重視(端末の性能は勝手に上がる)
      • 若い人の育成(9leap)
    • 9leap 2012
      • 今回のテーマ Enjoy
      • 作る、遊ぶ、楽しんでもらう 楽しみ
      • 賞金100まんえん

LT パート

5 分でわかる animation.enchant.js

(資料未公開?)

gl.enchant.js モデルデータをラクラク作成

http://dev7sandbox.googlecode.com/files/slide04.zip

9 minitues coding battle

テーマ 落ちる

90 minitues coding battle

テーマ 宇宙

ERROR: Hi itatyo, it’s GitHub. We’re doing an SSH key audit.

git コマンドたたいたら以下エラーががが。

 $ git pull
Enter passphrase for key '/xxx/.ssh/id_rsa':
ERROR: Hi itatyo, it's GitHub. We're doing an SSH key audit.
Please visit https://github.com/settings/ssh/audit/xxx
to approve this key so we know it's safe.
Fingerprint: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
fatal: The remote end hung up unexpectedly

言われたとおりに https://github.com/settings/ssh/audit を見にいって
Fingerprint が同一か確認。 approve して完了。
Fingerprint の確認は ssh-keygen にて。

$ ssh-keygen -lf 公開鍵ファイル

終わった後にメール確認したらこの件で「Action Required - SSH Key Vulnerability」というメールが github から来てました。