エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

ヤフーあの講演の件で思ったこと

発端・顛末

「女性エンジニア少ない問題」を解決するために、機械学習で男性エンジニアを女性に変換する - ログミーTech(テック)

女性エンジニアが少ないとやる気が出ない問題で批判「懲戒解雇されてほしい、エンジニアやめろ」一方、過敏に反応しすぎの声も - Togetter

各社の対応

ヤフー

当社社員の講演における不適切表現のお詫び - ヤフー株式会社

サイバーエージェント

Battle Conference U30

所感

問題点

問題とされているのは、技術点なところではなく、「女性エンジニア=コンパニオン」みたいな思想が根底にあるような書き方だった点だと思う。

女性エンジニアが少ないから男性エンジニアのやる気がでないというところは、疑問を持つね。。。
脱線しそうなので、後術する。

恐らくだが、社内発表でネタ的な意味合いで書いた気がする。
どうしても男性エンジニアが多い業界なので、男性の目を引く記述をしてしまったのだと思われる。

問題への対応

ヤフーとサイバーエージェントは、ただ謝っているだけですね。。。

なぜ炎上したのかの分析が書かれていないので、謝罪になっているのか、ものすごく疑問。
本当に理解しているのか、ことの経緯を把握しているのかに疑問を感じる。

障害やバグの内容を報告するときもそうだが、対応内容だけ書かれても、意味ないと思う。
対応することは重要だけど、その対応が適切であるのかの判断材料がないってのは、対応の是非を疑う。
今回の件は、それと同じ。
炎上してしまったから、謝ってしまおうと受け止められても仕方ないと思う。

やる気について

やる気は、自分で出すものであって、周囲の環境で左右されてはダメだと思う。
モチベーションもそうだが、そういうものは自分で出すものであって、周囲にそれを求めてはいけないと、個人的に思ってます。
プロのエンジニアなのだから、周囲に影響されずに求められた質を出し続けるのは、責務であると同時に義務でもあると思う。

あと、やる気ってなんだろうね?
推し測れないものだから、それが必要なのかが分からない。
合理的思考を阻害する要因になるのではないか?と最近思うようになった。
どうやって的確に早く終わらせるかという観点より、楽しんでやるという観点になっていくような気がしてならない。

分からなくもない

今回の件、分からなくもない。

ハッキリと言って、SEになる男は、モテない人が多い印象がある。
かくゆう俺がそうだから、そう思っているだけかも知れないが。。。
女性と話すとテンションは上がるのは、大抵の男なら感じるでしょう。
俺でもテンションは上がるし、気持ちが高ぶってしまうと思う。
ちょっと優しくされたら、即落ちると思う。

ただ、そのテンション上昇は、仕事のやる気とは、あまり関係ないと思うがね。

どうあればよかったのか?

おそらく、動機がまずかったと思う。

たぶん、問題提起を、「男性エンジニアのやる気」ではなく、「組織における男女比」にすれば良かった気がする。
そうすれば、男女比を調整するために男性→女性のように振る舞わせるための機械学習ってのが使えたのと、比率を調整した結果の報告は、事実の報告で、思想の批判にはならなかったと思う。

雑感

株価

この件を受けてなのか知らないが、ヤフーの株価が。。。
ヤフーの株を持っているので、言及しづらい。。。
当分、この影響は出そうな気がする。。。

ちゃんと分析して、対応策と再発防止策をちゃんと考えて欲しいとは思う。

最近の学習意欲について

徒然なるままに書く

きっかけ

最近、どうも学習意欲が減退している気がする。。。
日々の情報収集はしていて、深掘り調査したいことはいくつかあるのだが、調査に至る前に諦めていることがおおい。

理由の考察

個人的に理由を考えたが、おそらく、知っていると思っているからやらないのではなかろうか?と思われる。
いわゆる知ったかぶりってやつ。 そういう考えは、技術力の低下と慢心を生むことを、分かってはいるのだが許容してしまう自分がいる。 対策を考えてはいるのだが、なかなか思いつかない。
考えたのは、学習を習慣化させるか、誰かと一緒に学ぶか。
前者は、どっちにしろハードルが高い。少しでも満身があれば、簡単に習慣から外れそうな気がする。
後者は、なんというか嫌だね。他人に自己の能力向上を委ねるのは、危険な気がしてならない。
真剣さがどこか抜けているから、こんな状況になっているのではないかという考えもある。
もしかしたら、フリーランスになったほうが、学習する環境になるのではないかという考えもある。

もう一つ理由があると思っている。
それは、環境構築の面倒くささ。
それは、dockerで対応できそうなので、少しづつ勉強してはいるが、windows環境だとツライものがある。
あと、イメージのダウンロードが異様に時間がかかるのもツライ。。。
もしかしたら、macに移行すれば、解決しそうな気がしないでもない。

あと、時間がないってのもあるかも知れない。
帰ってから就寝まで2~3時間。起床してから家出るまで1時間。
有りはするんだけど、別のことに割いているだけって事かもしれないが。。。
どうしても、家に帰ると娯楽を楽しみたくなってしまうのも問題だな。
だからと言って、カフェで勉強とか、恥ずかしくてできない。
近くのマックやカフェで勉強している輩を見るが、俺からしたら、正気の沙汰とは思えない。
よく人に見られて勉強なんかできるな~って、毎回思う。
絶対、「勉強している俺すごいでしょ?」って思っていると感じる。

雑感

考え抜いたが、最終的には世間が悪いって考えになってしまいますわ。。。
世間がもっと俺を甘やかしてもいいと思うんだよね。

VisualStudioCodeでTypeScriptのバージョンが勝手に変わっていた話

きっかけ

TypeScript使って開発しているのだが、ワークスペースの環境に指定しているバージョンが、変えた覚えがないのに変わっていたので、調べた結果を残す。

詳細

再現

package.jsonに指定しているTypeScriptのバージョンが、nodemoduleにない状態に発生する。
恐らく、自分は、gitからチェックアウトしてきたときに、npm install してないからバージョンが意図せずにズレたのだと思われる。

理由

恐らく、nodemoduleないため、vscodeのTypeScriptのデフォルトバージョンが適用されていると思われる。
※すいません、推測の域を出ません。。。

対処方法

npm install して、対象のTypeScriptのバージョンをダウンロードした後に、ワークスペースのバージョンに一致させれば、きちんと想定したバージョンのTypeScriptが使える。

意図しない変なエラーが出たら、バージョンがあっているかを見るのを、優先順位を高くして確認したほうがいいと感じた。

雑記

なんか、コンパイラのチェックが急に厳しくなったり、nodeモジュールが急にエラーになったりして驚いた。。。
TypeScriptのバージョンを合わせたら、エラーがでなくなったからいいものの、かなり迷いましたわ。。。
勝手に切り替わっているから、かなり悪質だと思いました。

人事考課で感じた不満

きっかけ

人事考課があったのだが、考課項目について不満があったので、メモ

詳細

現状

評価項目に、内部監査としての活動実績がある。
しかし、内部監査に参加するには、専任される必要があり、その権限は俺にはない。
参加機会がなく、評価されてない(評価点が低くなる)という。。。

問題点

  • 意図的に評価させないことで、評価を下げることに使われている。
  • 俺の責任ではないのに、まるで責任が俺にあるかのような評価をされる。
  • 気に食わない人は、内部監査から外すことで評価を下げることができる。
  • 代価で加味されることがない。

解決方法

個人的な発想だと、代価で別なものを評価してもらうしかない。
じゃないと、評価は個人の頑張りではなく、上長の権限でどうにかなってしまうから。

というか、この評価の仕方、悪用されているとしか思えない。
次の評価で、論破してやるしかない。

apt install できなくて迷った話

きっかけ

Windows使っているのだが、IT系の記事で裏取りするときに、すごく面倒になって仮想環境でなんとかしようと思った。
最近、環境構築の話をよく聞くのだが、ものすごい便利そうだし、覚えておけば検証が楽になるかと思い、ubuntuの環境を構築した。

その際、apt install しても、ライブラリが見つからないみたいなことを言われて、1時間くらい迷った。

恥晒しのために、記事にする。
言っとくが、恥を晒すのが快感になっているわけではない。

感想

見つからなかった理由は簡単。
リポジトリ情報が古いから。

そういえば、環境構築した際に、アップデートかけてねぇなって思って、下記のコマンドでUbuntuの更新をかけた。

sudo apt-get update

その後、目的のライブラリのインストールを再度試したら、うまくいった。。。
vagrantで環境構築した際は、はじめにアップデートしといたほうがいいってのと、リポジトリが見つからないって言われたら、アップデートしてみるってのが、今回の教訓ですわ。

雑記

なんか、調べると直接ダウンロードって言う話にばかりなって、ちがうだろー!!ってどこかの議員さんみたいに叫びたくなりましたわ。

あと、ubuntu って書く場合、ubuntsuって書きたくなる。
ローマ字書きで、"つ" は、tsuって書くように教わってきたので、癖でそうしちゃう。

参考サイト

apt-getで見つからないパッケージを追加する方法(debian, ubuntu両方対応)

情報収集でやっていることの紹介と課題と検討内容

きっかけ

JJUG CCC Spring 2018のアンカンファレンスで思うところがあったので、今の自分の現状と課題を考え直してみる。

現状の情報収集

今の自分の情報収集は、主にRSS

FeedlyにいろんなサイトのRSSを登録して、タイトルで選別している。
読みたい記事があれば、Pocketに保存して、帰宅後に読む。
流れは以下の感じ。

  1. FeedlyRSSを使った情報を集める
  2. 外出先でFeedlyを使ってニュースをフィルタ
  3. 気になるものをPocketに登録
  4. 帰宅後、深掘り

平日は、主に↑のような情報収集をする。
ただ、帰宅するとなんやかんやで時間がなくなるので、土日で一気に情報処理する。

課題

時間が足りない

情報収集するのは良いのだが、検証する時間が足りない。。。
言っていること、書いてあることを、そのまま受け入れるのはすごく抵抗がある。
技術的なことは、必ず自分で裏取りと使ってみることを心がけている。
使ってみないと、結局のところ、問題が見えてこないのと、適用ポイントが決められないのがある。
何より、自分の中に知恵として定着してこない。

問題は、深掘り調査をしていると、かなり時間がかかること。。。
特に、環境構築で躓くことが多い。
だから、dockerなり仮想環境なりで、検証可能な環境をいち早く揃えることが、今後の重要になってくるのではないかと感じている。
また、dockerやvagrantについて、習熟することで問題解決しようと試みている。※まだ習熟度が低いけど。。。

逆に、考え方であったり、哲学チックなものは、思考実験ができるので、検証時間はかなり削れる。

情報のオーバーフロー

時間にも関係するが、情報がさばききれない。。。
技術的なことでなく、政治やエンタメのニュースも集約しているので、情報がパンパン。
たしか、サイト数は200近かった。

適度に見直しして、発信能力の低いサイトは間引くようにしているけど、なかなか減らない。
間引くのと新しいサイト発見して登録するのが同じくらいのペースなので、なかなか減らない。。。

思い切って断捨離すればいいのだが、なんか、損をしているようで無理だった。。。

解決方法として、ニュースをサマリするサービスがないかを探している。
Feedlyに溜まった新着情報から、類似度を計算して、ある程度情報をまとめるような感じ。
探したのだが見つからない。。。
問題は長引きそう。自分で解決できないか思考中。富士通だったかリクルートテクノロジーズだったかが、文章要約APIを作ったらしいので、上手く解決できそうな気がしないでもない。

動画による情報発信について

エンタメ要素がつよくなる印象。

発話解析能力が高まるから、文章に起こせれば問題ないような気もしたが、喋り言葉は、文章にするとわかりにくい。
事実がどれなのか、言いたいことがなんなのかを考える時間を、受け取る側がかなり考慮する時間がかかる。

有効なのは、動きを含んだスキルの伝授。
例えば、スポーツ系とか、寿司の握り方とか。
動きを含まないものは、言葉による説明が可能であり、詳細に説明できるはず。
だから、IT系の情報発信は、動画に向かない。
ただし、デザインとかの動きを見せるとか、現実世界に干渉する必要があるデモとかなら意味がある。

その他の情報収集ツールについての検討

Twitter

情報流れるのが嫌で辞めた。
たまに見るくらい。

前述したが、情報が流れると、損をしたみたいでものすごい嫌だったから

情報収集というよりは、気分転換の遊び的な感覚に近い。

Facebook

日本語の情報が、そこまで出てない印象。
使ってみたが、情報の集約場所としては適さないと感じた。

やはり、SNSとしての要素が強すぎる。

QuiteRSS

デスクトップアプリだが、重いうえに、ブラウザ内で操作が集約できないのが辛くて辞めた。
なるべく一箇所に集約したいのと、ブラウザ以上に使い勝手いいものってないと思う。
IDEとかも検証で立ち上げたりするから、いろんなアプリが起動しているのは、作業に集中できなくなるのと、無駄なリソースを食わしている気がする。

はてなブログ

たしかに通知機能があるけど、かならずしも、はてなブログに情報があるわけではないので却下。
どっちかというと、はてなブログやっている人が読者になってくれた時、こっちも読者になって、気になったものだけ、ちょっとつまみ食いするくらいの感覚で使っている。
※なんか、俺の嫌いなスイーツ女子みたいな記述になってしまった。。。

JJUG CCC 2018 Spring 参加報告

JJUG CCC 2018 Spring

今回

今回は、登壇者としても参加しました。
OCJP SE 8 Gold合格までに取り組んだこと というやつ。

大勢の人前で話すのは、小学校以来かな?
やっぱり、人前で話すのは難しい。。。

なお、ツイッターの視聴者の感想は、怖くて見てない。

参加セッション

  • JavaWebサービスを作り続けるための戦略と戦術
  • Pivotal認定講師が解説!ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
  • Spring Boot と一般ライブラリの折り合いのつけかた
  • JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜
  • アンカンファレンス3
  • JDBC APIもそろそろ非同期の波に乗りたいらしい

メモ

JavaWebサービスを作り続けるための戦略と戦術

  • 開発環境とは、動くソフトウェアで進捗を測る場所
  • やったこと
    • 開発環境の構築手順書は廃止して、スクリプトで作成できるようにした。
    • サーバー郡は、仮想OSの中に仮想OS作るようにした。
    • docker使わなかったのは、当時のmacのdockerが不安定だったから
  • dockerfileを書くのは、アプリエンジニアの担当。知見は集めておいたほうがいい。
  • eclipse -> intellij に移行
    • プロジェクトが増えると、eclipseでの表示はキツイ。。。
  • maven -> gradle に移行
    • 数が増えると、カスタマイズしたいことが発生するので、柔軟なgradleへ
    • xmlよりソースを見たほうが、理解しやすかった。
  • jenkins 1 -> 2 にバージョンアップ
    • mavenよりこっちを先に実施。
    • jenkinsfileにスクリプト書いて、両方に即時対応できるようにして、移行がすぐできるようにした。

最終的な目標として、プルリクエストに1つに対して開発環境が自動生成されるようにしたいらしい。
環境による制約で、時間を無駄にすることをなくしたいとのこと。

  • 老朽化した技術からの脱却
    • インストール型のTomcatはオワコン。newするもの
    • jasperreportはオワコン
      • java8化を阻害するボトルネックになっていた
      • 現場なりの地雷がある。
    • jsessionidはオワコン
      • 開発環境を複数起動すると、jsessionidがバッティングする
      • 開発者にとっては、非常にネック
    • sticky-session-id
      • sticky-session-idを使っているとawsのLBが片方にしか振り分けなくなる。。。
      • だからやめて、spring-sessionに変えた
    • jspはオワコン
      • ゴミが溜まる。
      • webapp下の配置は、おく意味がないので、resources配下においたほうがいい
  • フロントエンジニアと仲良く
    • swagger
      • 見やすいドキュメントがすぐにできる
  • テストコード
    • プルリクエストで自動テスト実行
    • 自動テストが通らなければ、マージできないようにしたいらしい。
  • 脆弱性を無視していると、どこかのタイミングで地雷を踏む
    • ちょっとずつバージョンアップするしかない
  • ビックリライトは難しい
  • やるならリファクタリング
    • リファクタリングを支えるのは、テストコード、環境の自動構築
    • こまめなバージョンアップがセキュリティリスクを低下させる

感想

dockerは、アプリエンジニアの担当。。。
概要把握で満足していたが、きちんと内容を把握しないと。。。
3万行のソース削除のプルリクは、初めて見た。たぶん、もう2度と見ることはないだろう。

ビックリライトは、難しいというのは同意。
ビジネス的にも、その判断を下すのは難しいと思う。
リライトは、ハガレンのOPで十分である。

Pivotal認定講師が解説!ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説

  • core
    • jdk8ベース
    • JDK9/10対応
      • 対応しているが、しばらくの間は、jdk8で使うのが無難
    • ロギング
    • ビルド時のコンポーネントインデックス作成
    • 新規アノテーション @NunNull @Nullable
      • nullの可能性を示すためのもの
      • IDE上で検知できるようになる
        • 検知できるもので、代入できなくなるものではない
  • web
    • https/2対応
      • pushBuilderを引数で貰える
      • サーバーがhttp2に対応している必要がある
    • bean validation2対応
    • webMvcConfigurerAdapterの非推奨
    • イミュータブルなフォーム
      • 変更はしてはいけないので、本来はイミュータブルであるべき
      • Boot2+mavenで、デフォルト有効
      • まだバグあり。。。
    • 例外処理の便利機能
  • data
    • 破壊的変更あり。互換性なし
    • Spring data jdbc
      • IFを定義するだけで、追加・更新・削除ができる
      • 実装は、起動時に動的に生成される
  • securty
    • oauth2.0対応
    • delegatingPasswordEncoder
      • DBに保存する際、ハッシュをかけて保存する
  • test
    • junit5対応
  • Boot
    • spring5対応
    • jdk8対応
    • セキュリティ簡素化
      • java configに一本化
    • Actuator
      • /info, /health以外は公開されなくなった。
      • 公開するには、設定が必要
    • プロパティ名
      • リアクティブ対応で変わった
      • 移植用のツールが用意されている。

感想

Spring data jdbcが気になった。
そういえば、Javaやってた頃は、1リクエストで、検索か更新か削除のどれかをやる感じだから、毎回アクセス用の実装を作るのは、不便だと思っていた。
気になるのは、自動生成で意図せぬバグが入り込まないか。ソースの自動生成は、内容を分かってないと、ハマるポイントになったりするから、それだけが気になった。

SpringBootの進化が早い。。。
JDK9ベースになったら、さらに進化が加速しそうな気がする。

Spring Boot と一般ライブラリの折り合いのつけかた

  • DIはなるべく使う
    • 使えない場合は、factoryクラスを作って対応する
  • プロパティファイル
    • getter/setterは。@ConfigrationPropertiesで解決可能

途中でついていけなくなってしまったのです。。

JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜

dockerは、アプリエンジニアの担当 ってワードが耳に残って拝聴

  • docker特徴
    • 起動が早い
    • リソースを共有しているのでリソースが節約されている
  • dockerのメリット
    • 環境を使い捨てできるので、サーバー設定関連が必要なテストがやりやすい
    • どこでもビルド環境ができるかもしれない
    • 環境を配布・構築が楽になる
    • だれか一人が苦労してくれれば、すべて楽になる

まずは、自分の開発環境から試してみる。

  • 適用について
    • 無理に利用する必要はない
    • 手短なところや、利用したら便利そうなところ
    • 使い捨て前提やる(データとか残したい場合は考える)

感想

誰か一人が苦労するのが、俺なのは嫌だな~という感覚をもってしまうのは、僕だけではないはず。
環境構築が楽なのは、なんとなく分かっているが、実際にやってみないと、真に理解しているかは怪しいかも。。。

環境を使い捨てる感覚を持つってのは、意外と難しい。
せっかく作った環境を、役立てようとする意識があるから。。。
環境が楽になれば、その感覚は消えると思う。
まずは、dockerの便利さを味わうことが大事かもしれない。

アンカンファレンス3

情報収集・欲しい記事・教育について討論。

情報収集

  • webでの情報収集が多い
  • rss使う人は、思ったより少ない

流行の抑え方

  • 勉強会で流行を抑える
  • カンファレンスの動画
    • youtubeで英語の字幕を見て、単語から流行を探る
  • Safari Books Online(オライリー
    • 本・動画が引っかかる
    • 有料サービス
    • 障害調査とかでも使える(横断検索)

思うこと

動画の情報収集が発展しそうとあったけど、個人的には無理な気がする。
なぜなら、動画は情報にアクセスするまで時間がかかると思うから。
あと、繰り返して情報を読み取るのに適していない。
わかった気になりやすいと感じている。

情報を引き出すなら、たぶん、直接あったほうが楽だと思う。

Safari Booksってのに興味を持ったけど、$399は、さすがに、キツイ。。。

あと、以外だったのは、RSSを利用している人が少ないこと。
全員RSSだと思っていた。。。
僕は、feedlyRSSを突っ込みまくって、外出先で、スマホを使ってニュースをフィルタして、pocketに一時保存する。価値ある情報であれば、さらにそこから深掘り調査って感じ。
ただ、問題があって、登録したサイトが馬鹿みたいに多いと、情報をさばけず、フィルタリング作業がパンクするという。。。
情報をサマリできないか、手探り状態。
誰か、いい方法を知っていたら教えて欲しい。

教育

大学の方が、学生に何を期待しているのかを聞いていた。

結論的には、言語問わず、汎用的な知識が必要って意見に落ちた認識。

思うこと

話を聞いていたが、業務知識を学生が覚えるべきだと聞こてた。
それは、少し酷な話のような気がする。
現場によってマチマチなので、学生としてやって欲しいことではない気がする。
むしろ、それは現場が教えるべきことだし、それができないってのは、何を考えて仕事しているの?って感じた。
学生は、専門用語でも意思疎通が取れるレベルになっているくらいでいいと思う。
後は、トレース能力とか。

個人的には、謙虚さがあれば、問題ないと思う。
結局のところ、素直に学ぶ姿勢を示せることができれば、案外、この業界の人は協力的なので、勝手に成長していくと思う。
その方が、たぶん、現場の受けもいいと思う。

懇親会

speakerだと、風船をつけるのだが、風船をつけると特別視されて、話しかけてくれる人が多いんだな~って感じました。
有料なのに、人が意外と多い。。。
人混みは、苦手なのです。。。
寿司とか、人が密集していて、なかなか取りに行けなかった。。。

人混みで思い出したが、満員電車に乗ろうとした時、中の男が「無理無理」ってDIO並に連呼してきたから、乗るのを辞めたのだけれど、後ろから若そうな女性が乗り込もうとした。
その時、中の男は何も言わないんだな。死ねばいいのに。
この恨み、まだ覚えてる。

登壇について

登壇してみての反省・感想

  • 時間を余らせててしまった。。。練習のときは20分オーバーだったんだが。。。
  • 開発者ノートが見えれていれば、もっと時間をかけてできたかも
  • 他の人のセッションを見てわかったが、最後にまとめを持ってくることで、時間調整を可能にしている?時間がなければハショるし、あれば、話を盛って話して延命処置をすればいい。
  • 試験対策資料が公開されているらしいが、知らなかった。。。オラクルのサイト見ず、ピアソン経由で試験受講は終わるので、目につかずに終わってしまう気がする。

思い通りにやれなかった。。。。
練習不足か、資料の作り方が悪いかのどちらかだろう。。。
あんまり文字は入れたくない派だけど、喋らなきゃいけない内容が覚えられないということがわかった。
やっぱり、人前に出ると、頭がホワイトアウトします。

全然時間が経たないのだな。。。
心拍数が上がっていたから、体感時間が早かったのかもしれない。

登壇して良かったこと

  • オラクルの認定試験作っている人に会えた
    • java8の次はどうするか、検討中らしい
    • 個人的な予想だと、次は、Java9かLTSのバージョン(java11)になりそうな気がする。