読者です 読者をやめる 読者になる 読者になる

エンターテイメント!!

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

JJUG CCC 2016 fall 参加報告

FW プログラミング 勉強 マーケティング 開発環境 論争

開催概要

公式サイト

JJUG CCC 2016 Fall

項目 内容
日時 2016年 12月 3日 (土) 10:00 ~ 20:00 (開場 9:30)
場所 ベルサール新宿グランド5F(東京都新宿区西新宿8-17-1 住友不動産新宿グランドタワー 5F ベルサール新宿グランドコンファレンスセンター
参加費 無料

参加セッション

  • Be a great engineer!〜 フォローす べきトレンド、スルフォローす べきトレンド、スルべきトレンドをどう見抜くのか
  • Spring超入門 -Springを1年半使ってみて
  • Java + spring-boot で書く! LINE BOT ライブコーディング 。
  • JJUG presents マチコ &河村の怒り 新党
  • 受験勉強経も留学ない日本人 がJavaOneで英語講演きるようになるまで
  • JVM言語とJava、切ってもれないその関係
  • Javaエンジニアのキャリを考えるパネルディスカッション
  • 懇親会

各資料へのリンクへのリンク

GitHub - jjug-ccc/slides-articles-2016fall: JJUG CCC 2016 Fallの発表資料およびブログ記事まとめ

セッション感想

「Be a great engineer!〜 フォローすべきトレンド、スルーすべきトレンドをどう見抜くのか」

きっかけ

基調講演だし、とりあえず聞いとこう的な感じで拝聴。
朝、2度寝したため、途中から聞いた。
資料公開されたら、内容は目を通しておきたい。

内容

トレンドの見つけ方

トレンドは、イノベーションから生まれる。
イノベーションを追いかければ、自ずとトレンドを追いかける様になる。

イノベーションの種類
  • 破壊的
    ハイリスク・ハイリターン。大企業には取れない戦法
    シェア率に依存しないが、失敗すると会社の終わり。
    破壊的イノベーションで成功した企業はいくつかあり、影響を受ける奴がいると思うが、成功した企業は、無数の屍の上で成り立っている。
    憧れだけで飯は喰っていけないのだ!
  • 継続的
    ローリスク・ローリターン。中小企業がやっても、大企業にやられたら勝てない。
    シェア率の影響が大きい。
    守りのイノベーションとでも言っておこうか?
    守ることは、攻めることより難しい。
    失敗が積み重なると、大企業でも倒産の危機になる。

個人的に思うのは、日本は企業のリスクと難しさがあって、イノベーションが起こりにくいのではないかと思う。
海外事情を知らないので、正解なのか不明だが。。。
海外事情に詳しい人脈が欲しいところ。
ぼっち歴の長い俺には、かなり難しい課題。

本の紹介

イノベーションのジレンマ」って本が話題に出ていた。

日本のイノベーションのジレンマ

日本のイノベーションのジレンマ

トレンドの見つけ方

  • 技術カンファレンス
  • ガートナー社のイベント

ガートナー社のイベント

トレンドを踏まえての予見した発表をする。
全然知らなかった。会社を騙して参加費をむしり取ろうかな?

ガートナー社の注目トレンド
  • 機械学習
  • IoT
  • AR/VR
  • ブロックチェーン
  • メッシュアプリ

トレンドは、明日から使えるわけではない

イノベーション

いずれ一般化する。
コモディティ化」って単語は、ちょっと意識高い系といわれそうなので、なるべく使わない。

構成要素を取り出して、それを学ぶのが重要

トレンドを把握するメリット

自分のニーズを把握して、イノベーションが一般化した時に取り入れやすくする。

感想

ガードナー社を知れたのが収穫。
あとは、トレンドは全部把握する必要はないなと思った。
自分が欲しているものとトレンドがマッチするなら、深く探求しておく必要があると感じた。
結局は、アンテナの張り方だと思いました。

近くの中華料理店で食事 四川麻婆豆腐定食をいただいた。 辛味が足りないかな。 もっと激辛でもよかったハズ。

Spring超入門-Springを1年半使ってみて-

きっかけ

本当は慎さんのセッション見るつもりだったが、「初心者は〜」の下りを見て、このセッションを見ることに。
自分が上級者だと自覚するには、まだまだだからね!

内容

初心者向けだけあって、既知の内容が主だった。

  • Spring Data
  • Spring Security

DI

Springが管理しているインスタンス制御の仕組み

気になった用語

Bean → 豆、Java豆から来ているということを初めて知った。そういえば、最初にJavaやったときにBeanの意味がわからなかった

Spring系のコミュニティ

Java + spring-boot で書く! LINE BOT ライブコーディング。

きっかけ

こういうハック系みたいな感じなのは、面白いことが多いので参加。

内容

TLS暗号化 json形式で連携 SDKはいらないのだが、やりたいことを実現扠せやすくするために作成

LINEのサーバーサイドはJava

社内の独自文化で醸成されているので、プルリクを欲している様子

LINE BOT AWARDS グランプリなら1000万円!!!!

ライブコーディング

実装内容を見ていたが、相当練習したように見える。 気になったのが、設定して値を返すような仕組みがイマイチに感じた。 returnでメッセージに出したいものを表示する仕組みが提供されていて、そこら辺は流石だと思う。 なんちゃってシステム開発は、returnを使わせないところがあるからな。

JJUG presents マチコ&河村の怒り新党

きっかけ

タイトルにつられてしまった。。。 こういう感じの遊び心がある感じは、好きだ。 実際に、怒り新党はよく見ている番組なので参加。 内容見て、不満だったらJunit5の方に流れる

内容

バグや障害が見つかったときに、直に犯人探しをするやつに腹が立つ

はい、僕です。。。
やらないようにしているけど、それをやるのは難しい。
ムカつく奴がいるのなら、その人のバグを見つけて、その人を責め立てる策が、超有効。
2度と開発現場に来ないくらいに責め立てる。

犯人探しは、自分が犯人というミステリー殺人みたいなことが起きそうなので、 なるべくやらないようにしたいけど、責任が来ないように退路を作っておく。

やる人は、責任が来ない範囲に立っている人なんだろうね。 俺は恨み・辛みを覚えておくほうなので、絶対に倍返しするための策略を立てる。

犯人、適切な判断を下せるやつが犯人の可能性??

若い人が新しいことを取り入れすぎて付いていけない

使えないのはツールではなく、お前だ!という結論。
投稿した人は、使えないなら別な手段をすればいい。

上長が、技術に疎いけど、地位だけ高いのが駄目だと思う。
やっぱり、技術部門が居ると思う。
そして、そこは地位と依存関係がない感じがベストだと思う。

家で仕事に集中したくても猫に仕事を邪魔される

猫を処分すればいいんじゃないかな?
集中したいなら、他人に監視されるとか、期限ギリギリまで何もしない。

営業の意見を取り入れてくれないエンジニアに腹が立つ

営業はユーザではないよね?
あと、営業がユーザのニーズを完全に把握しているとは思えないんだよね。

営業は肉食動物、エンジニアは草食動物ってのが、上手い例えだ。
もう、分かり合えないのだ。

この対立は、第三者が隠れているような意見が面白かった。
たぶん、管理職か経営層が、問題なんだろうな。

エンジニアを能力を定量評価しろ

無理じゃないかな。
完全に納得できる定量評価は難しい。
会社への貢献度で見るしか無い。この人がやめられたら困る順に評価が高ければいいんじゃない。
あとは、どのくらい能力向上を果たしたかだろう。

目標設定の話があった。
達成可能な目標を立てて、達成して評価を上げさせる人が居るみたいな話があった。

自分も評価する立場になったから思ったこと。
自分が求めているレベルと評価する人のレベルの差だね。
求めているレベルに達してなかったら、評価を下げるし、求めているレベル以上で、こちらが教えられることが多かったら、評価をあげる。
あとは、管理職が評価する人の能力を知っていれば、自ずと全体を把握できるはずだ。

不満を抱えているのに何も言わない部下に腹が立つ

第三者を入れればいいんじゃないかな?
本人に直接いったり、誰かが集まった場で発言させるのは、正直無理があるで!

「発言で空気が冷める人がいる」ってのは、俺のことかな?
よく発言すると、時間が止まったみたいな感じになる。
スタンド使いになったのかもしれない。
スタンド名は「ザ・ワールド」に違いない!Wryyyyyyyyyyy!!!!!

会議で言わないのは、責任が伴うからだ。
レッテル貼りが会議では起こるからな。参加者が多ければ、より強力なレッテル貼りになる。
「バカだと思われたくないから、発言しないことが多い」という意見には納得。
俺も思う。 羞耻心は、仕事をする上で、とても邪魔になる。
どうやって捨てるかが大事だね。
バカという衣を被れる技術がいるんだろう。
やり過ぎると、ウザくなるから適度な感じできっちりやる場面と、バカを装う場面を使い分ける必要がある。
他社との問い合わせ窓口をやることが多くなってきたが、その役割をする際は、自分がバカの衣を被る技術が必須だと感じた。
自分が疎い技術に関して聞く場合は、なおさらだ。

感想

アドリブが必須なセッションだったな。。。
無言事故が結構あった。
もしかして、俺の「ザ・ワールド」が能力を発揮したのか?

パネルが意外としっかり作ってあったのに驚いた。
発注したのかな?本物の番組並のクオリティだった。

意見を募ることが多かった。
たぶん、ツイッターとか活用すれば、意見が集めやすい気がする。
いろんな人がいる前での発言は、結構勇気がいる。
世間体を気にする日本人では、セッションの質問時間で質問するのは難しい。
聴衆参加型も同様だ。

次のJJUG Springでもやるらしい。
そういえば、思ったけど、Javaの話が一切出てこなかったな。

別の技術とは関係ないブログで、マツコ&有吉の怒り新党の番組の感想を書いているので、興味ある人はそちらに。

怒り新党 の検索結果 - バーニングソウル!!

受験勉強経験も留学経験もない日本人がJavaOneで英語で講演できるようになるまで

きっかけ

山本裕介さんだから、とりあえず聞いてみた。
人がいっぱい。
同姓同名が有名人でいっぱいいることは、知っていたみたい。

内容

身につけ方

王道なし
英語を使う環境に身をおくことが大切
あとは、楽しんで触れられることが重要

感想

英語だけではないが、やっぱり環境が与える影響はデカイ。
どういう環境に身を置くかが大事だね
超満員で、一番戦闘で座って見る羽目に。。。

JVM言語とJava、切っても切れないその関係

きっかけ

Javaの補助ツールとしてJVM言語を使うことがたまにあるので、現状を知りたくて拝聴

内容

信頼と実績のJava、そしてJVM

後方互換があるからこそJVMが成り立つ 破壊的変更が少ないから、JVM言語が成立する

Pythonは2→3が問題だよね。。。

JVM言語とは

JVM上で実行可能なプログラミング言語

メリット
  • ボイラープレートを減らせる
  • Javaの資産が使える
  • Javaのビルドツールが使える

つまり、プログラミングだけ変えて、ビルド・デプロイは変えなくてもいい。

JVM言語種類

60くらい。論文だと100とか言われていることもあり、実態は誰もつかめていない。

JVM言語の歴史

1996年くらいからある。
JSR223から、他言語との親和性が進む。 JSR292から、動的言語のサポートが充実してきた。

第一世代

Scala, JRuby, Groovy

第二世代

Colojure

第三世代

Frege, Kotlin

JVM言語の仕組み

JVM言語とJava

  • Javaの仕様がJVM言語から来ていることもある

感想

独特な雰囲気の人だな。。。
JVM言語の世代の話をされると、ガンダムを連想してしまう。

Javaエンジニアのキャリアを考えるパネルディスカッション

きっかけ

そろそろ、真面目にキャリアパスを考える年齢になってきたので、とりあえず拝聴。

内容

転職を考えたきっかけ

やりたいことができなかったから転職がほとんどだった。
全員、危機感を感じたから転職が多い。

技術一筋でいくのか(マネジメントやる?やらない?)

俺は、エクセル嫌いなので、やりたくない。

マネージャになっても開発ができないわけではない。
それは、怠けているだけである。
技術とマネジメントは、相反しないという意見があった。

昇格するための試験は、無いところもあるのか。
マネジメントって人のマネジメントね。。

転職する際にフリーランス・起業を考えたこと無いのか

他にやることが増えるため、やりたいことができないが、登壇者の主な意見だった。
フリーランスでいることは、デメリットもある。
開発以外の作業が増えたり、仕事がなくなるという恐怖もある。
あとは、システムのコアな箇所が触らせてもらえないなどもあり得る。

起業するなら、自分にあったやり方が見つからなかったときかも。上司とやり取りが面倒くさいなら、あり?

Javaにこだわっていく?

個人的には、こだわらなくてもいい気がする。
Javaが普及しすぎて、抜け出せない感覚がある。

登壇者の主な意見は、こだわる気はないようだ。
Javaへの愛着や思い入れが深い。

キャリア構築、これだけは言わせて!!

  • 好きな事やればいい
  • 給料とか結婚とか、まったく関係ない
  • 情報をアウトプットすることが重要
  • 外に出ることが大切
  • 英語、重要
  • 転職がゴールではない
  • いろんなところを比較するのが重要

差別化を図るためにしてきたこと

  • 自分がビビっている方をやる
  • 苦手な環境に飛び込む
  • 差別化ではないが、コアな部分をしる努力をしてないと差別化できない

感想

庄司さんの意見がすごかった。
というより、常人にはできないと思うのだが。。。。
異常者なのかも知れない。

懇親会

今回は、体調不良ではなかったので、真面目に参加。
何人かに話しかけられた。
初めての経験。普段だったら、話しかけられる前に気配を察して逃げるもんね。

そして、今回一番良かったことは、ひしだまさんと話せたこと。
いつもの俺なら、絶対に話しかけないね。
ぼっちフィールドを展開して、近づくものすべて傷つけるような雰囲気を出しているもの。 聞いた内容は、ブログ運営について。
自分も1年位ブログをやっているが、10ヶ月くらいで週1の更新がマチマチになってしまった。
どのタイミングで更新しているのか聞いたら、業務で問題があったときに調べた結果(ネタ)をメールで送ってストックしているらしい。
そして、早いうちにそれをブログに上げているようだ。
最近は更新が止まってしまっているようなことを言っていたが、物事を知りすぎてしまった結果なような気がする。
そして、無理にネタ探しはしないほうがいいそうだ。
それをやるとキツイだけで、長続きしないから、問題は業務で見つけて書くのが一般的だそうだ。
そして、業務で見つけた問題点をメールで送ってブログに上げることが習慣化しているようなことを言っていた。
これが長続きしている要因なのだろうな。

今の現場は、セキュリティ的にキツイので、メモ書きする習慣をつけて、それをどうやってブログに上げるか、 うまいやり方を考える必要があると感じた。

全体感想

誰かに話しかけることは一生ないだろうと思ったけど、その殻を破ったのは大きい。
毎回思うのだが、JJUGなりでセッションやりたいとは思うけど、なかなかできない。
踏ん切りをつける儀式がいるのかも知れない。

Spring Tool Suiteの日本語化

開発環境

きっかけ

英語でほとんど問題ないのだが、環境面の問題が出た時に、英語だと単語の意味が分からなく、解読できないことがある。
それに対処するために日本語化しようという思いに駆られた。

やり方

大雑把な流れ

  1. eclipsepleiadesプラグインをダウンロード
  2. ダウンロードしたプラグインを解凍
  3. 回答したものをeclipseプラグインにぶち込む
  4. STS.iniにプラグインの指定する

詳細説明

eclipsepleiadesプラグインをダウンロード

下記サイトからダウンロードする。 注意点として、pleiades本体ではなく、プラグインのみをダウンロードすること。

http://mergedoc.osdn.jp/

なぜ、pleiadesかというと、SpringToolSuite(以下、STS)は、eclipseの派生IDEであるため。
よって、eclipseの日本語化プラグインがそのまま使える。

ダウンロードしたプラグインを解凍

この記事を見てたら、説明不要だろう。。。
パス。

回答したものをeclipseプラグインにぶち込む

解凍してできた「features」「plugins」フォルダを、STS.exeがあるフォルダにコピペする。
別にしなくてもいいが、パスの指定が面倒になるので、統一する。

STS.iniにプラグインの指定する

STS.iniの最後に、「-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar」を追記する。
STSが起動したらpleiadesを読み込んで展開してくれる。

先頭行に持っていくとアウト。
STSの起動引数として認識されるため。
STS起動時のJava引数として認識させたいので、要注意。

指定が終わったら、STSを起動する。
さすれば、日本語で起動されるはず。

現場で見つけた変なルール

プログラミング 論争 エンターテイメント FW

きっかけ

現場でJavaアプリ開発しているが、変なルールがたまにある。
聞いても「こうしてください」としか言われず、腹が立ってしょうがない。
とりあえず、ブログに書いて発散しようぜ!が主な目的である。

意味不なルール

例外Throwしちゃダメ

もう、意味がわかりません。
ルールを守ることを強いられている状態。
エラーチェックして処理を処理を終わらせたいのだが、できない状態。
後続の処理をしないために、判定分を書かなければいけない始末。。。
例外を発生させないことを強制した場合、メソッド分割することができず、モンスターメソッドになると思うのだが、相手が理解してくれない。

個人的に、「例外設計上手くできてないから、例外を発生させちゃダメって方針作ったろ」って気がしてならない。
今まで開発してきた現場で、例外を発生させてはならない現場を見たのは、ここだけだった。

命名がすべてローマ字

日本の企業は多いのだろうか?
DBに引っ張られて、ローマ字を使うことを強いられている。
そうした場合のデメリットは、名称が無茶苦茶長くなる。
ただの変数名で20文字位上になることが多い。
本当にローマ字を許容するのか、ルール作りをする人はよく考えたほうがいい。
文字が多くなければ、それだけタイピング量が増え、改行もやりにくなって画面が見にくくなり、積み重なった手間が生産性を著しく落とすと思うんだよね。

課題管理がない

課題の一覧がない。
ありえないと思うが、実際にあるんだぜ!
おかげで、問題がどれだけ残っているのか、何がネックになっているのか、毎回報告しなければいけない始末。。。
管理職になる人は、よくよく考えるべきだ。
いちいち日報で報告は、個人の時間を削って、最終的にコストが増えるだけだ。

メーリングリストを使ってもプレフィックスが付かない

毎回思うのだが、メーリングリストを使っても、メールのタイトルにプレフィックスつけないのは何で?
タイトルで振り分けしないのだが、メーリングリスト使うと暗黙的にプレフィックスは決まる。
人によっては、タイトルでフィルタリングしているやつもいて、メーリングリストにメールを流すときにプレフィックスを忘れるとひどい目に合う。
もう、メーリングリスト作ったら、プレフィックスの指定は必須にしてよ!
じゃないと共有漏れが起こりやすいんだから!

データ保持用のクラス禁止

データ保持用に、DtoとかDaoとか使うことは多々あると思う。
場合によっては、もう一個、2階層目のデータ保持用のクラスが欲しくなる。
しかし、禁止にされる。
クラスが増殖するのを辞めたい気持ちはわかるが、ツリー構造のデータを単一クラスで表現するには無理があるで!
しかも、データ保持方法がMapしか許さないってなったら最悪。
デバックしづらいだけでなく、不要なデータを持っていることがあり、メモリ圧迫の原因を作りやすい。

自動化という甘い罠

自動化って言葉に耳を貸しちゃダメ!!
騙されないで、相手の思うツボよ!!

自動化って言って、なんでもやってくれるわけではない。
自動化するための前準備が必要な事があり、それが作業ネックになることがある。
しかも、自動化ってのは認識齟齬が生まれやすい。
それを逆手にとる営業がいるから困ったもんだ。
支援や発注した側にとっては、自動化されているから即効でできると思っていてもできない。
本当に腹立たしい。

自動化という甘い罠には本当に気をつけるべきだ。

一般化していないツールの強要

一般化してないツールを強要してくる。
OSSになっているものを独自で拡張して、それを強要してくる。
汎用性がまるでなく、浅はかな考えの実装が多いこと多いこと。
ドキュメントもないため、使う側がかなり困惑する。
使ってわからないことがあると、問い合わせをするのだが、返事が遅い。
遅延が発生しても、「うちらに問題ないですよ」みたいな雰囲気を醸し出しているから、余計に腹立たしい。
一発、腹パンかましてやろうかと思うことが、何度もある。

結婚指輪以外の指輪をしているやつに良い奴はいない

だいたい自己主張が強く、独善的なやつが多い気がする。
仕事する上で、こいつがトップに立つと、上手くいかない事が多い。
なぜなら、実力が伴っていないから。
そして、自分が絶対だと思い込んでいるので、説得させるのが辛い。
横文字を使いたくはないが、コミュニケーションボトルネックになる人は、たいてい指輪をつけている。

Stream使っちゃダメ

処理が遅くなるからダメと言ってきている。
本当にそうだろうか?
検証方法が間違っている可能性が十分にある。
並列処理するところを見誤っている可能性はないのだろうか?
個人的に検証したことがあるが、きちんと中間処理を行っていれば、Streamの方が高速化されるはずだが。。。
「Stream使っちゃダメ」って言っている人たちの頭の中を見てみたい。

継承を機能のコピーと思っている

継承を機能を複製するための機能だと思っている節がある。
複製するのではなく、機能を汎化してから、汎化したものを継承すべきだと思うのだが、間違っているのだろうか?
何度か継承を機能の複製として使っている現場を何度か見たことがあるが、大抵炎上するのがいつものパターンになっている。

戻り値なし

呼び出し元に戻り値を返さないんだぜ。。。
いや、返しているんだけど、returnとかで返してない。
データクラスを別領域で持っていて、そいつを使って呼び出し元と呼び出し先のデータのやり取りをする。
ありえないだろ。。。
おそらく、FWでリフレクション使っているんだろうけど、可読性が著しく悪い。
ソースを追う際に、いちいちソースファイルを探さないと行けないんだぜ。
eclipseなら参照先を開けばいいけど、それができない。
生産性を著しく落とす。
本当に、何がしたいのだろうね、このFWは。
考えたやつは、死ねばいいのに。

メソッドの引数がインタフェース

意味あるのだろうか?
引数は、もうメソッド固有だろ?
使いまわす可能性がゼロで、拡張したい場合、インタフェースも変える必要がある。
ただの手間でしかない。
クラス設計が正しくできているか疑いたくなる。
クラス設計したやつは、死ねばいいのに。

JavaScriptの実装を原則禁止

JavaScript使っちゃダメって言うんだぜ。。。
どうやって画面の要件をみたせっちゅうねん!!!
その現場で、ほとんどの画面はJavaScriptの実装が必要だったとさ。
死ねばいいのに。
このルールの意味が、ホンマにわけわからん。
JavaScriptでレベルが均等化できないのはわかるが、それはレビューでとれや!って言いたくなる。
ヘンテコルールを作ったせいで、開発を一時止めて聞く必要がある。
こんなルールを考えたやつは死ねばいいのに。

仕様変更が確定してないけど確定事項です

支援で開発に参加していたけど、仕様が確定してないのに設計かえるように強要してくるんだぜ。。。
そうしてにっちもさっちも行かなくなり、俺が責められる。
仕様変更が確定してもいないのに、命令出すんじゃねぇ!
死ねばいいのに。

共通処理を業務横断Tに申請したら、申請でクローズ

Redmineでタスク管理しているのだが、共通処理の作成依頼を申請したら、申請が通ってクローズ。。。
意味がわからない。
その共通処理が完成して、完成しましたの連絡をもらって初めてクローズだと思うのだが。。。
なんでそういう運用なのだろうか?
どうやって完成したことを伝えるのか、疑問でならない。
実は完成しているけど、伝えていませんがあったら、袋叩きにしてやる!!

Redmineを使ったことがない会社なんだろうね。
死ねばいいのに。

いつのまにか管理職に。。。

開発者としてアサインされたはずなのだが、いつの間にやら外部の会社との問い合わせ窓口に。。。
俺よりも地位が高い人が誰もやらず、俺にお鉢が回ってきた。
なんで誰もやらないの?
その地位にいて、恥ずかしくないの?
積極的に動いた奴が、最終的に責任の重いタスクをやるハメになる。
しかも、そのタスクはスルーしておくと他者の遅延になるため、優先度が自分のタスクよりも高い。
ただ、こなす能力があれば、チャンスでもある。
こなせていないので、ピンチなのが腹立たしいが。

こんな状況に追い込んだやつら、死ねばいいのに。

Getter, Setterに異様にこだわる

ただの入れ物クラスなのに、Setter/Getterを作ってないとダメ!みたいなことを言う。
ただの入れ物クラスなにに、そんなものは必要なのだろうか?
なんでも変数はGetter/Setterでとることがオブジェクト思考だとでも思っているのだろうか?
役割が明確なクラスに無駄なメソッドを追加すれば、タイピングが遅くなる上に、コード量だけあるシステムができる。
コード量が多いシステムが立派だとは思えない。
適切な設計をして、適切なコーディングを行えば、コード量は減るはずだと思う。
話が脱線したが、なんでもかんでもGetter/Setter使えと共用するアーキの人は、物事がきちんと見えているのだろうか?
とりあえず、お決まりだから作ってといっているなら、死ねばいいのに。

感想

もう、ただの愚痴になってしまった。。。
今の現場に対する不満が強い。
本当にシステム開発会社なのだろうか?
疑いたくなる。
自分が、今働いている会社は、大企業で正論を述べれば意見が通るけど、仕事を依頼してきた大元に対する不満が多い。
本当にシステム開発会社なのか疑いたくなる。

最後は、締めくくりに「死ねばいいのに」が常套句になってしまったな。
反応がよければ、もっと書こうかと思う。
末端のエンジニアの悲痛な叫びと疑問を、世間様に投げかけたい。

JavaOne 2016報告会 参加報告

勉強 論争 プログラミング エンターテイメント 開発環境

参加のきっかけ

Javaエンジニアであるが、金銭面の問題、業務都合で行けないので参加。
一番大きな問題は金銭面かな。
あと、派遣で働いているので、どうしてもスケジュール調整が難しいのがある。 そして、英語がよく分からんのがネックだ。。。 一番聞きたいのは、JavaSE!一番良く使うからな!

開催概要

https://jjug.doorkeeper.jp/events/52639

スケジュール

時間 内容
13:00-13:30 開場、受付
13:30-13:50 開会挨拶、JavaOne 2016 Keynote紹介 by 伊藤 敬さん (日本オラクル)
13:50-14:40 Java SE フィードバック by 久保田 祐史さん (@sugarlife)
14:40-14:55 休憩
14:55-16:15 Java EE フィードバック by Java Champion 寺田 佳央さん (@yoshioterada)
16:15-16:30 休憩
16:30-17:00 JJUG鈴木会長によるJavaOne 2016総括 by 鈴木雄介 (@yusuke_arclamp)
17:00-17:45 Duke's Choice Award 受賞記念 HeapStats講演 by 末永 恭正さん (@YaSuenag)

貴重内容

開会挨拶、JavaOne 2016 Keynote紹介

今年は9月開催 Javaチャンピオンサミット 全体的にクラウド・マイクロサービスが多かったらしい。 JavaSEについての新しい話は、なし 目玉と言えるものは、Java + Dockerの話があったくらい JavaEEのロードマップ JavaEE8 2017年 JavaEE9 2018年 →やっとリリースサイクルが早くなったか。いままで遅すぎると心の中で思っていた。 Springに差をつけられすぎているので、改善の傾向があることは喜ばしいことではあるね。

キーノートは、スター・ウォーズのパロディ 日本で同じことやる場合は、人ではなく、アニメになるのではないかと思う。 たぶん、ガンダムポケモンだな。

Java SE フィードバック

www.slideshare.net

Java9

  • 2017/07/23リリース予定(JavaOne直前に発表)
  • Jigsaw
  • Kulla
  • Reactive Streams Specification

2015年から変更がいっぱいある。
英語のドキュメントを参照すること。
日本語だと情報が古い可能性がある。

Jigsaw

  • Jar hellの解消
  • 安全な更新
  • ロックインの回避
  • 競合の解消

jshell

教育だけでなく開発でも使える。
外部から操作するなどが、主な利用用途。

JDK10

Project Valhara
簡単に言うと、型と仲良くなることが目的のプロジェクト。
データをシンプルに扱えるようにするのが目的

Project Panama
CPUを使い切るプロジェクト。
CPUを社畜化しようぜ!ってことですね。
自分が社畜化するのは嫌だけど、他人がなるのは気分がいい!

JDK9で気をつけること

削除される機能がいくつかあるので、利用ツールがライブラリの影響を受けないかチェックする必要がある。
Java8での非推奨・削除済みオプションは、起動できなくなるので、注意する。
javaの起動は、3世代前まで保証される。
Appletは、セキュリティ問題が多いので、廃止の方向へ。
Appletは、学生時代に学んだ。時代の流れを感じる。

JVMのログオプション

非推奨のものが削除されているので、要確認すること。
GCのデフォルトは、ParallelGC→G1GCに変わるので意識しておく。
CMSGCは、非推奨化される。
Win32ClientVM→廃止

その他

JavaDB→廃止
使うなら、MySQLSQLitePostgreSQLかな?

Propertyファイル→UTF-8が利用可能に。

Java EE フィードバック

docs.com

寺田劇場。
JavaEEに不信感を持っている人が多い。
自分もその一人。
そのため、JavaEE Guardianが結成された。
その単語を聞いて、ゲート・ガーディアンを思い出した。
あの迷宮兄弟が使っていた、雷魔神・水魔神・風魔神が合体したやつ。

最後、MS製品の宣伝があった。
MSの宣伝のしすぎで、画面が映らなくなる天罰があった。

JJUG鈴木会長によるJavaOne 2016総括

www.slideshare.net

ME, FX → キーノートはなかったが、活動は活発
JavaSEに進展はなし。

(この話を聞いて、いくつかの分野は別ベンダーが主管しても良いのでは?と感じた。)
(OracleJavaをリードするには、Javaが超大すぎる気がする。)
(MEは、Googleに、FXはMicroSoftにとか。)
(Googleは、Androidで功績があるので、MEを主観するでも良い気がする。)

標準化の動きが鈍くなっている。
独自の進化で生き残ったものを標準化していく流れになる?

トレンド

DevOps、Cloud、Microservices、Reactive

DevOps

長くなったテストサイクルを短くするための議論が多かった。

Cloud

サーバーレスへの感心が高まっている。

MicroService

いいのは当たり前になっている。
どう管理するかに焦点があたり始めた。
データ共有・テスト戦略・疎結合が課題
細かくしすぎて、何が原因か分からない状態をミステリー殺人に例えていた。
(たぶん、犯人は家政婦が知っている。ハズ!)

Duke's Choice Award 受賞記念 HeapStats講演

なにか話していたが、あんまり記憶にない

感想

業務多忙が辛い

日曜は情報処理試験、平日は、日が変わるまで仕事。
記事を各暇がなかったことが悔やまれる。
帰ったら速攻書くべきだった。

Java

今後を考えると、Oracle以外のベンダーが旗振りに参加しても良い気がする。
先延ばしになっているJava9に、ちょっと不信感がある。
出る前に、OJCP8 Goldを取りたい。

WebAssembly の概要

ブラウザ 論争 プログラミング 勉強

きっかけ

HTML5 ConferenceでWebAssemblyって単語が出てきたが、単語の意味が分からなかったので、調査した。
HTML5 Conferenceの内容は、下記記事でまとめてある。

suzaku-tec.hatenadiary.jp

WebAssembly

WebAssemblyとは?

簡単に言うと、ウェブ向けのバイナリ形式のこと。

背景にあるのは、JavaScriptのファイルサイズがある。
現在の画面に動きがあるWebサービスは、大部分がJavaScriptで動いている。
当然、多種多様な動きをするためには、JavaScriptで多くを実装しなければいけない。
そうなると、JavaScriptのファイルサイズはでかくなる。
JavaScriptのファイルをダウンロードするための通信量がでかくなり、それを解析するのにも時間がかかる。
そういった問題を解決するためのバイナリフォーマットである。

JavaScriptは、そもそもプレーンなテキストである。
膨大化したファイルには、圧縮してブラウザで解凍して実行したほうが速いという試算もある。 なぜ、バイナリなのかもココから来ている。
今後のWebアプリを考えた場合、プレーンテキストをサポートし続けるには、限界が見えてきたとも言える。

WebAssemblyメリット

  • webアプリの高速化
  • サーバーサイドとの言語統一
  • OS依存が無い

影響がありそうなもの

Web上でやれるゲームが、確実に伸びるでしょうね。
今までのカクカクの動きが、ぬるぬるになると思われます。
あと、技術の発展でお決まりの、軍事と医療分野も発達しそうです。
おそらく医療系はブラウザ使って遠隔治療とかありそうですね。
ちょっと、軍事系は疎いので思いつきませんが。。。

あとは、Web上でのデータ分析ツールの進化があると思っています。
サーバーはデータだけを返し、見せ方をクライアントで自由に変えられると、面白いのではないかと思いました。
ビッグデータやデータ解析は、ホットな分野ですし、需要があるのではないかと思います。

あとは、ブラウザをIDEとして使えるのではないかと感じました。
Eclipse cheが、先駆けみたいな事をしています。
全員が共通の設定で、開発が出来ればコードの統一は簡単。
誰かが環境を作ってしまえば、みんなそこを使えば良いので、一番頭を悩ませる環境準備がいらなくなる可能性があるなと思いました。

考えるといろいろな事ができるようになる。
オラ、ワクワクしてきたぞ!

WebAssemblyが抱える問題

  • 普及
  • テクニカルリーダー・マネジメント

普及

当然、普及しなければ、意味はない。
ただの文章で終わってしまう。
この点に関しては、大丈夫だと思われる。
なぜなら、「Google」「Apple」「Microsoft」「Mozilla」が開発に関わってくるので、普及しないことはあり得ない。
つまり、Chrome, Safari, IE/Edge, firefoxがサポート表明したようなものだ。
上記に当てはまらないブラウザを使っている人は、相当コアな人だろうね。

テクニカルリーダー・マネジメント

どっちかというと、大手4者が協力するに当たっての問題かな。
ドリームチームでやるから、失敗することはないと思うが、協調してやれるかが凄く気になる。

調査して思ったこと

個人的に、注目技術の一つに位置づけ。
かなり重要な技術になると思われる。
Webがネイティブに追いつける可能性があるので、即座に使うことは無いにせよ、情報を随時キャッチアップしていきたい。

参考サイト

qiita.com

jp.techcrunch.com

www.ossnews.jp

readwrite.jp

codezine.jp

Brendan Eich » Blog Archive » From ASM.JS to WebAssembly

github.com

WebAssembly | Luke Wagner's Blog

JavaエンジニアのPyCon2016参加報告

プログラミング 勉強

開催概要

PyCon JP 2016 in Tokyo | Sep 20th – Sep 24th

日時:2016年9月21(水)、22(木・祝)
会場:早稲田大学西早稲田キャンパス

レポート

Pythonでpyftpdlibを使ってFTPサーバーを作る際に使ったテクニックの紹介

作った肯定のお話。
いわゆるウォーターフォールで、このフェーズではこんなことしましたって紹介。
どっちかっていうとソフトウェア開発の方が色濃く出ていた。

Pythonで実現する4コマ漫画の分析・評論

ゆゆ式について熱く語っていた。
PyConでは珍しい、かなり異色の人だ。

ゆゆ式をデータ分析して、ゆゆ式らしさとは何かを探し出そうとしたらしい。

画像認識によるコマの検出では、セリフが枠を突き抜けていて大変だったらしい。
確かに、最近の漫画は、インパクトある表現の一種として、枠を突き抜けることが多いからな。
どうやって回避したかというと、平均値より多めのパティングを付けて何とかしたらしい。
そう考えると、人はどうやってコマを認識しているのか気になった。

そうやって集めたデータを解析していたらしいが、1巻分のデータ解析にかなり時間がかかったらしい。
回避するためにNumPy使ったら、早くなって万事解決に至ったとのこと。

メタプログラミングPython

Pythonを使ったメタプログラミングの紹介。
メタプログラミングは、黒魔術に近い印象がある。
案の定、あんまり見たことのないコーディングで実現していた。

海外の人の言葉の引用をして説明していたが、やはりメタプログラミングは、基本やらない方向に倒すのが普通らしい。
「ご利用は計画的に」の言葉で締めくくっていた。

Javaでも勉学のためにやってみたいと感じました。

感想

初日に行けなかったのが痛かった。。。
業務都合に左右されるので、大手の企業じゃないと平日は辛い。

自分のPythonプログラミング能力が低いことを痛感した。。。
去年も感じていたが、あまり進歩していなかったな。。。
来年こそは、スキル向上させて、内容をスラスラ理解できるようにしたい。

あとは、有料だけあって、金がかかっている。
ドリンク飲み放題、昼食付き。
当日、雨だったのが辛かったくらいだな。
休憩スペースの食堂が結構広くて、合間時間の待ちが助かった。
次回も大きめの休憩スペースがあると嬉しいかも。

次回のPyConまでには、バリバリ使えるレベルまでスキルを上げたい。

大企業のシステム開発で思うこと

FW エンターテイメント チーム 生産性

書くに至ったきっかけ

現在、大きな企業でシステム開発を担当しているにあたり、思うことが幾つかあった。
今いる現場ではなく、前にも大企業でシステム開発をした経験はあるが、そこであったことも踏まえて書き連ねていく。

大企業のシステム開発

大企業のシステム開発を何度か経験してきたが、どこも独自のFWを使っている。
そして、開発に携わる人は、かなり多い。
だからこその大企業ではあるが。。。

なぜ過度にFW化したがるのか?

既存のFWでも十分なはずなのに、なぜ独自で作りたがるのか?
いつも疑問に思っていた。
自分が感じているメリット・デメリットは、以下だと思っている。

ベンダ独自FWのメリット

  • 開発効率の向上
    独自の仕様を追加して、開発効率を向上できる(かも?)
  • 独自FWによるユーザの囲い込み
    ある意味、独自FWの最大メリット。
    ロックインすることで、永久に顧客を離さないようにできる。
  • 開発スキルの平坦化
    優秀な開発者もそうじゃない開発者も、スキルの違いをなくし、平坦化する。
    スキルが劣る人から見てのメリットということで。

ベンダ独自FWのデメリット

  • 開発平坦化による優秀なエンジニアの生殺し
    難解な独自仕様を追加することで、標準化から遠のき、多くのことを知っている優秀なエンジニアの能力を阻害する可能性がある。
  • 生産性向上のために汎用性を捨てる
    生産性を向上させることは、何かを捨てている。
    独自FWの怖いところは、それを認知することが難しいこと。
    独自仕様を追加しているがゆえに、汎用性を落としていることに気づかない。
    本当は、慎重に仕様追加すべきで、業務をものすごく詳しく理解していないといけない。
  • アーキチーム?のようなFW専属部隊が必要になる
    独自FWを持つということは、バグフィックスの人が必要になるということ。
    必ず保守要員が必要になってくる。
  • 引用元のバージョンアップに対応できない
    独自仕様で固めているため、大元になっているFWのバージョンアップに対応できない。
    そして、それがセキュリティ関連の対応のバージョンアップだと、致命的!
  • ユーザの要望を独自FW起因で対応不可にしてしまう
    独自仕様であるがゆえに、対応工数増を背景に対応を見送ってしまうケースが発生する。

本当にメリットは少ないのか?

大企業だから、人が多く集まる。
中には面白い奴、自分にはない考え方を持つ奴もいて、一概に大企業が悪とは言えない。
抱えている中にも優秀なエンジニアはいて、話をすると楽しい。

大企業ならではの高額な有料ソフト使えたり、贅沢な開発環境使えたりして、いい経験にはなる。
何も考えないで、言われたことだけしていたらダメだろうけど。

大企業のシステム開発で一番気をつけなければならないこと

人間関係。
これに尽きる。
人間関係をこじらせるのは、一番悪いパターン。
なぜなら、人を集める能力に長けているから、大企業での人間関係悪化は、契約解除に繋がる。
だからと言ってYesマンになることはない。
ちゃんと管理職レベルの人には、話せば伝わる。
喧嘩腰で話さないことが重要。
喧嘩腰で接すれば、相手も喧嘩腰になってしまう。
いい結果は生まないので、絶対にしてはならない。
初めて合う現場の上司でも、人の上に立つ人であることを理解し、それができる人間であることを信頼して接することが大切。

どういった人間が好まれるのか

管理面は大企業の人がやるので、好まれるのは、積極性のある人。
そして、知識を持っている人。
積極性があっても、知識がない人は重宝されない。
その逆も然り。知識があっても、積極性がない人は、邪魔なだけだと思われる。
知識があり、積極性もある人が好まれる。

やっていること

個人的には、知識を取得することに貪欲に行動しているつもり。
積極的にPJ動かそうとはしている。
あとは、大企業で持っているwiki等に、自己PRの文章や、ポエム的なことを書いて、目立つように動いている。
自分は、影の薄い存在で、常時ミスディレクションを発動している。
なので、自分がどういったことに興味を持っているのか、どういったことを感じたのかをみんなの目に着くとこに書いている。
当然、誰かの批判等はしてない。人間関係が命だからね!
自己PRやネタ的な話を書いておくことで、wikiが活性化してくれればという期待も込めてしている。(本当だからね!)

たまにポエムのファンができたり、興味を持っていることを書くことで繋がりができたりする。
場の空気も、少しは良くなっていると思いたいね。

なぜだろう?

独自FWを批判するつもりが、いつの間にかどうやって行けばいいか論になってしまった。
でも、言いたいことが書けたのでこのままにしておこう。。。