エンターテイメント!!

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

Tabulator概要

Tabulator

olifolkerd.github.io

GitHub - olifolkerd/tabulator: A table generation JQuery UI Plugin

概要

高機能なテーブルが作成できると聞いて、試してみたくなった。
REST-fullなwebページ作成の補助につながる気がしたので、気になった。
あとは、Excelを殺してくれそうな気がしたので。。。

試作

前準備

とりあえず、下記をインクルードしていれば、試せる。

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<link href='https://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>

テーブルの作成

<div id="example-table"></div>

指定した要素にテーブルを適用してみる。
当然、jqueryなので、id名指定以外にもクラス名指定もできる。
今回は、とりあえずid名指定で確認。

以下でテーブルを作成する。

$("#example-table").tabulator();

テーブルはできるけど、表示するものが無いので、次で表示設定をする。

列定義

$("#example-table").tabulator({
  columns:[
    {title:"Name", field:"name", sortable:true, width:200},
    {title:"Progress", field:"progress", sortable:true, sorter:"number"},
    {title:"Gender", field:"gender", sortable:true},
    {title:"Favourite Color", field:"col", sortable:false},
    {title:"Date Of Birth", field:"dob"},
    {title:"Cheese Preference", field:"cheese"},
  ],
});

列の定義内容

  • title
    必須:この列のヘッダーに表示されるタイトル。
  • field
    必須:(アイコン/ボタン列では不要)データ配列内のこの列のキー。
  • align
    列のテキストの配置。設定内容は、(left | center | right)
  • width
    列の幅を設定。ピクセル単位、テーブル全体の幅に対するパーセンテージの設定も可能。未設定だと、システムが最適と判断した幅になる。
  • minWidth
    列の最小幅を設定。
  • sortable
    列のデータを並べ替可否の設定
  • sorter
    列のソート方法指定。
  • formatter
    データのフォーマット指定。
  • onClick
    列のセルをクリックしたときの処理内容。
  • editable
    編集可否の設定。Bool値のみ設定可。デフォルト:false
  • editor
    データを編集するときに使用するエディタの設定
  • visible
    可視設定。Bool値のみ設定可。デフォルト:true
  • cssClass
    列のヘッダーとセルに適用するCSSクラスを設定。
  • tooltip
    列の各セルホバー時のツールチップを設定する。
  • tooltipHeader
    列見出しホバー時のツールチップを設定する。
  • editableTitle
    ヘッダータイトルの編集可否設定。
  • headerFilter
    ヘッダ内の要素から列をフィルタリング。
  • mutator
    テーブルに解析されるときに列の値を操作する関数。
    ぶっちゃけ、使い方がよく分からん。
  • mutateType
    データ解析、セル編集、またはその両方で突然変異を発生させるかどうかを定義。
    ぶっちゃけ、使い方がよく分からん。
  • accessor
    getData関数を使用する前の処理内容を記載する。

テーブルへのデータの読み込み

今回はとりあえず配列で試す。

var sampleData = [
  {id:1, name:"Oli Bob", progress:12, gender:"male", rating:1, col:"red", dob:"", car:1, lucky_no:5, cheese:"Cheader"},
  {id:2, name:"Mary May", progress:1, gender:"female", rating:2, col:"blue", dob:"14/05/1982", car:true, lucky_no:10, cheese:"Gouda"},
  {id:3, name:"Christine Lobowski", progress:42, gender:"female", rating:0, col:"green", dob:"22/05/1982", car:"true", lucky_no:12, cheese:"Manchego"},
  {id:4, name:"Brendon Philips", progress:100, gender:"male", rating:1, col:"orange", dob:"01/08/1980", lucky_no:18, cheese:"Brie"},
  {id:5, name:"Margret Marmajuke", progress:16, gender:"female", rating:5, col:"yellow", dob:"31/01/1999", lucky_no:33, cheese:"Cheader"},
];

データを割り当てる。
割り当てるには、setData()を使う。
メソッドを呼ぶんじゃなくて、tabulatorの中で処理するので、注意。

$("#example-table").tabulator("setData", sampleData);

HTMLファイルを開くと、指定したJavaScript配列のデータが表示される。

サンプルHTML

<html>
    <head>
       <title>tabulator-test</title>
       <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
       <link href='https://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
       <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
       <link rel="stylesheet" href="tabulator-master/tabulator.css">

       <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
       <script type="text/javascript" src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
       <script type="text/javascript" src="tabulator-master/tabulator.js"></script>
   </head>
    <body>
        <div id="example-table"></div>

        <script type="text/javascript">
           $("#example-table").tabulator({
             columns:[
               {title:"Name", field:"name", sortable:true, width:200},
               {title:"Progress", field:"progress", sortable:true, sorter:"number"},
               {title:"Gender", field:"gender", sortable:true},
               {title:"Favourite Color", field:"col", sortable:false},
               {title:"Date Of Birth", field:"dob"},
               {title:"Cheese Preference", field:"cheese"},
             ],
           });

           var sampleData = [
             {id:1, name:"Oli Bob", progress:12, gender:"male", rating:1, col:"red", dob:"", car:1, lucky_no:5, cheese:"Cheader"},
             {id:2, name:"Mary May", progress:1, gender:"female", rating:2, col:"blue", dob:"14/05/1982", car:true, lucky_no:10, cheese:"Gouda"},
             {id:3, name:"Christine Lobowski", progress:42, gender:"female", rating:0, col:"green", dob:"22/05/1982", car:"true", lucky_no:12, cheese:"Manchego"},
             {id:4, name:"Brendon Philips", progress:100, gender:"male", rating:1, col:"orange", dob:"01/08/1980", lucky_no:18, cheese:"Brie"},
             {id:5, name:"Margret Marmajuke", progress:16, gender:"female", rating:5, col:"yellow", dob:"31/01/1999", lucky_no:33, cheese:"Cheader"},
           ];
           
           $("#example-table").tabulator("setData", sampleData);
       </script>
    </body>
</html>

その他のデータ指定方法

Ajax

$("#example-table").tabulator("setData", "http://www.exampleurl.com/data");

HTML

$("#example-table").tabulator({});

参考

HTMLのテーブルをJSONで動的に更新できる「Tabulator」がスゴい! - WPJ

2016年の振り返りと2017年の目標

2016年の振り返り

KPT法でとりあえず振り返る。

K:やれてよかったこと

  • ブログを大きな間隔を長い期間開けずに書き続けた

    • 詳細
      1ヶ月以上の間隔は開かなかったはず。
      なんとか続けられた。
      やり抜くことは、意外と難しい。
      やり続けることで、文章力が上がった気がする。。。
      あとは、常に情報収集を意識できたかな?
      これは、継続してやりたい。
  • Gitを業務で触れた

    • 詳細
      やっとSVN以外のVCSを業務で使えた。
      GitHubとか使っていたから、Gitを知らないわけではなかったが、チームで使うって意味が初だった。
      使ってみて感じたが、Gitコマンド覚えないとダメだなと感じた。
      なぜなら、やっていることが明確に見えないから。
      やることが魔法の言葉みたいに感じた。
      ※個人で使っているときもよく分かってなかった。。。
      2017年は、それを克服したい。
  • AWSシステム開発できた

    • 詳細
      触ってみた感じ、全然ローカル開発と違和感ない。
      そもそも、開発時点からAWS環境のDBを使う意味があったのか、甚だ疑問だが。。。。
      個人でAWSで開発ができないから、いい経験にはなったと思いたい。
      AWSも個人開発者向けのプランがあればいいのにな。
      容量を大幅制限することで、格安プランを出すとか。
      個人でやるには、料金的にキツイ気がする。
      ※俺の収入が低いってのもあるかもしれないが。
  • Powershellを少し学べた

    • 詳細
      CSVを読み込んで、特定条件のデータを抜き出す方法を覚えた。
      DOSだったらまずやらないようなことが、簡単にできたのが意外だった。
      結構応用が効き、大体の開発環境はWindowsなので、ツールとして使えるようにしておきたい。

P:悪かったこと

  • Java以外をやれていない
    • 詳細
      Pyconには出たけど、全然Pythonプログラミングできていない。
      セッションの内容は、Javaで得た知識やシステム開発を通して得た知識で付いて行けるので、さほど問題ではなかった。
      Powershellは、言語って感じじゃないから、除外。
      そろそろ、複数言語使えないとまずい年代かな?
      なるはやで使えるようにしておきたい。
      Python以外なら、SwiftかC++
      ネイティブ系の開発をできるようになりたい欲望がある。 Webエンジニアなら分かってくれるハズ!
      Pythonは、ビッグデータ処理やら機械学習など、今後を見据えて必須だと感じているから習得したい。
  • 情報処理技術者試験に合格できなかった
    • 詳細
      セキュリティスペシャリストを受けたけど、合格まで至らなかった。
      30歳までに何かしらの高度情報処理技術者を合格したかったけど、もう来年しかチャンス無いね。。。
      30歳になっても受け続けはしますが。
      試験制度って少し変わっているんだな。
      セキュリティスペシャリストを受けてきたけど、試験制度見たら、情報処理技術者の方が合格したい試験な気がする。
      次の試験は、データベーススペシャリストにしようかな?
      今年が最後だと思って、きっちり予定を立てて試験勉強していきたい。
  • OJCPを受験できなかった
    • 詳細
      勉強はしていたが、受ける機会がなかった。
      最後の方は、業務多忙が影響しているせいもあるが、それは仕方ないね。
      OJCPって、過去問解いてたけど、引掛け問題が頭に来るぜ!
      個人的には、手応えがあったので、Java9が出る前に合格しておきたい。
  • ブログで知識が散らばったまま
    • 詳細
      気になったときに調べはするんだが、それが散らばったままだな。。。
      wiki化するなど、情報をカテゴライズして見やすいようにまとめてたい。
      ココらへんは、ひしだまブログを参考にしたい。
      はてなブログでこういうことはできるのだろうか?
      ブログは、Markdownで書きやすいんだけど、wikiっぽいものを作るのが面倒くさい気がする。
      やり方あるのかな?
      それっぽい機能は、見てもなかった気がする。
      ローカルにKnowledge/GitLab環境作ってみようか画策中。
      いいアイディア持っている人がいたら、コメントをプリーズ!!

T:次に試すこと(2017年目標)

  • JavaScriptJavaレベルに!
    • 詳細
      とりあえず、複数言語取得に向けて、一番手軽にやれるものを。
      もちろん、Pythonの勉強は続ける。
      使えないわけではないが、本格的に触れない&次の業務で使うので、これを機に完璧習得したい。
  • 3DCGの学習
    • 詳細
      これも業務で使うから。
      手を出したい分野ではあったので、これを機に触る。
      とりあえず、Three.jsあたりを使えるようにしたい。
  • Node.jsを使いこなす
    • 詳細
      JavaScriptやっていると、必ず出てくるライブラリなので、覚えておきたい。
      簡単なツールを作るのにも使えそうなので、使えるようにしておけば、払った学習コスト以上のものになるのではないかと感じている。
  • OJCP8受ける
    • 詳細
      Java8は使えているけど、外見え的によく見えるので、持っておきたい。
  • wikiを作る
    • 詳細
      ブログに散らばった知識を集約する
  • Gitコマンドを覚える
    • 詳細
      細かいことや、やっていることがモヤッとしか覚えてないので、コマンド操作できるようにしておく。
      SVNも、コマンド覚えていると、ちょっとしたツールを作れたりしたので、できれば、コマンド操作を覚えたい。
  • FireFoxのアドオン作成
    • 詳細
      開発・趣味の両方とも、FireFoxを愛用。
      たまに、これができたらいいのにってのがある。
      オレオレツールができるようになれば、もっとブラウジングが捗りそうだから、覚えたい。

今年は

今年は、新しいことをチャレンジしたい。
既知の知識の強化も忘れずに。
あとは、得た知識の体系化を考える。
あと、難問中の難問、彼女作るってのもある。

Java Advent Calendar 2016のまとめ

Java Advent Calendar 2016

公式サイト

qiita.com

概要の引用

今年も Advent Calendar の季節がやってきました。 Java をネタにしたブログを公開してしまいましょう。 Java といえば、サーバーからクライアント、クラウドに組み込みと、さまざな分野で使われており、そこで使われている技術もたくさん。 Java の Tips でもいいし、ライブラリの使い方でもいい、自作のツールの紹介など、Java に関していれば何でもかまいません。ぜひこの機会に、Java のブログを書いてみましょう!! qiitaのアドベントカレンダーを使用していますが、もちろんqiita以外からの投稿もできます! 普段お使いのブログがあるかたはそちらでご参加ください!

内容・感想

[12/01] jcmd と既存ツールの対応

記事URL

jcmd と既存ツールの対応 - sugarlife's blog

感想

jcmdの紹介記事。
使ったことがなかったので、コレを機会に調査。

まずは、なんでもいいので、Javaのアプリを立ち上げる。
当然、実行して即終了するようなやつは、ダメ。
アプリをゼロから作るのが面倒だから、SpringBoot使ってWebアプリを速攻作成。
初心者なので、欲張らず、使えるコマンドの調査からやってみる。
Windows10なので、タスクマネージャーから、PIDを調べる。 ※あとになって思ったが、クラス名でも行けるのね。。。

f:id:suzaku0914:20161204114808j:plain

"3740"なので、紹介されている方法で使えるコマンドが何かを調べる。

jcmd 3740 help

すると、以下の出力が!

3740:
The following commands are available:
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version
help

For more information about a specific command use 'help <command>'.

ちなみに、試したときの環境情報 - Java:1.8.0_111 - STS:3.8.2

あまりインフラや調査関連をやったことがないので、プロセス調査とかは敷居が高いイメージがあった。
「使えるコマンドがこれです」ってのが見れるのは、かなり敷居が低くなった印象がある。
"$ jcmd help"さえ覚えておけば、バージョン違いによる実行できる/できないの差異を覚える必要がない。
あと、基本的な文法が一緒なので、覚えることが少ないけど、やれることが多いのがいいと思いました。

[12/02] どこからも使用されてないクラスを列挙する

記事URL

どこからも使用されてないクラスを列挙する - 水まんじゅう

感想

jdepsを利用したクラス解析。
やっていることは、jdepsで使用されているクラスの一覧を抽出し、特定パッケージ配下に抽出したクラスを含んでいないクラスを抽出するというもの。
かなり亜種なやり方だと思ったが、import解析よりは良くなっている気はする。
もっとこういったものは、発展するべきだと思う。
IDEとかで、実装して欲しい機能ではある。
リファクタリングすると、発生する可能性がなくはないからね。
できれば、public変数の対応も欲しいところではある。
まぁ、編集の修飾子をprivateにしてみてビルドエラーにならなければ、消してもいい変数だと分かるんだけどね。
手間がかかるから、一発でわかるなら、そうしたい。

[12/03] Javaが僕にくれたもの

記事URL

Javaが僕にくれたもの | susumuis Info

感想

Javaの業務経験についての話。
自分も経験あるようなあるある話がいくつかあった。
読んでいて思ったのが、やっぱり環境は大事。

[12/04] ローカルキャッシュにCaffeineでも

記事URL

ローカルキャッシュにCaffeineでも - CLOVER

感想

あんまりキャッシュ周りを気にしたことはなかったが、色々できそうな気がした。
キャッシュ関連の操作をあまりしたことがなかったので、いいきっかけになった。 一番驚いたのは、有効期限の設定かな。
今時のキャッシュライブラリはできて当然みたいな感じだったが、あんまり意識したことがなかったので、驚いた。
ここまで進んでいるんだね。

ここまでできるなら、区分値など、起動時に読み込まれる外出定数とかに使えるのではないかと思った。
DBやpropertyに新規追加した場合、メモリ上にロードされていないから、アクセスがあったときにロードするとか。
リリースを考えなくてもいい作りにできるな、とレベルの低いことを考えてサンプルを試していた。
どっちかというと、試す環境づくりでかなり手間取った。。。

[12/05] ArrayListのソースを読んでみた

記事URL

http://qiita.com/fukushiw/items/dade32371df476987bec

感想

ArrayListのコールドリーディングを、自社で実施した時のレポート。
自分も、どちらかと言えば、何かを主催する方の人間にあたるので、内容よりも会社内でどういった状況だったのかを注視した。
詳しくレポートを書きすぎると、イベントをやっても初回しか集まらない話はなんとなく分かる。
人って面倒くさがりだからな。
詳しくやるのも考えものだと思った。
レポートは、最後をやってから出せば良いのではなかろうかと思う。
あとは、超サマリだけ共有するとか。
難しい。。。
興味を引くことの難しさを感じる。
あと、詳細書いても、見てくれるとは思えない。
勉強会・読書会を参加する文化を作らなければ、最終的な能力向上は計れないと感じました。

[12/06] HashSetを実装しなおして失敗した話

記事URL

HashSetを実装しなおして失敗した話 - Qiita

感想

HashSetの独自実装の話。
やはり、コアな部分はJVMとセットで理解してないと、性能向上は難しいとのこと。
そういった意味でも、ステップアップを図りたい場合は、JVMを理解する必要がある。

[12/07] Java Stream APIでハマったこと

記事URL

Java Stream APIでハマったこと | haruo31's blog

感想

StreamAPIは、なるべく使うようにしている。
今、現場で禁止されているのが意味不明で、使いたいところで使えない不満があるが。。。

読んでいて思ったのは、並列処理の解析手法が難しいと思った。
StreamAPIを使うなら、やっぱりJavaのヒープメモリの解析方法を知っておく必要があると感じた。

[12/08] Optimizing JavaというJavaパフォーマンス系の書籍が面白そう

記事URL

Optimizing JavaというJavaパフォーマンス系の書籍が面白そう - 谷本 心 in せろ部屋

感想

書籍紹介。
まだ、日本語訳出てないのか。。。
日本語訳を待っていると、情報が遅れるのは否めない。。。
やっぱり、英語大事だな。
喋れなくても、読み書きできるようにはならないといけないね!
近場に英語を話せる人が欲しい。

[12/09]マイクロベンチマークツール、JMHについて

記事URL

マイクロベンチマークツール、JMHについて - Qiita

感想

jmhの紹介。
計測する場合、当然ではあるが、ロジックが正当なことであること。
使う前に準備がいるので、そこら辺がもっと簡単になれば、使われるのではないかと思った。
実際に使ってみて、準備するまでが面倒だと感じた。

出力結果は、レポートとかに使えそうな、なんとなく威厳を感じる出力。。。
※小物感ハンパねぇ

Java9でいろいろ機能が追加されると思うが、これを使って計測してブログに結果あげるようにしたいと思う。

[12/10] DBUnitでBLOBデータをEXCELから放り込んだ話

記事URL

DBUnitでBLOBデータをEXCELから放り込んだ話 - Qiita

感想

プロジェクトで、テストにExcel使うって時点で、嫌な予感しかしない。
案の定、書いた人も苦労したようだ。

DBUnitは、JUnitとセットでよく見かける。
テストデータをExcelで管理する現場は、よくあるからな。
だが、BLOBデータは扱った記憶があるような、無いような。。。
だいたいは、基本的な数値型と文字列でなんとかなってしまうから、あんまり記憶にない。
確かにレアケースではあるが、対処方法は覚えておくに越したことはないと感じた。

やっていることは、途中でバイナリ変換を実施している。
かなり泥臭いことを。。。
確かに、現場でこんなことしたら、怒られてしまいそうだな。

最近、思うのだが、Excelでのデータ管理に限界を感じる。
なんというか、いろんな見えざる罠が多すぎる印象がある。
もっと上手い方法がないだろうか?
テストデータ管理用のDBがあってもよいのでは無いかと思う今日このごろ。
SQLiteみたいな軽めのDBにデータ突っ込んで、JUnitとかで走らせたときに、使っているDBにデータを突っ込むとかね。

[12/11]Gradleから始めるDataNucleus

記事URL

Gradleから始めるDataNucleus - Qiita

感想

JDOを使ったGoogleCloudPlatformへのデータ登録。
Gradleは、つかったことが無いので、なんとなくで記事を読んだ。
JDOは、テスト系で使えるのではなかろうか?と思いました。
あと、マルチバイトの変数名の変数は、プロダクトコードには入れられないけど、テストコードになら入れてもよいのではないかと言うのが、個人的な感想。
ただし、プロダクトの構成が100%日本人の場合だけだけどね。

JDOは、上手いことテストコードに使えそうな気がする。
どこかのタイミングで検証してみたい。
TODO行きだ!

[12/12] さあ、並列プログラミングをはじめよう

記事URL

さあ、並列プログラミングをはじめよう - Qiita

感想

Java8の並列APIって言われると、ParallelStreamAPIしか思いつかなかったけど、言われてみれば、Threadもそうだったね。
Threadは、学生時代で使って以降、なんかの時間の計測か、ゲームの描画処理でしか使った記憶がないな。。。
あんまり並列って認識がなかった。

並列処理は、なんとなく理解したつもりになっていたけど、改めて見ると知らないことが多かった。
Executor FrameWorkとか、使ったことがなかったが、初めて使って、Threadより簡潔にかけると感じた。

比べてみてわかったが、よりシンプルに書けるのは、StreamAPIなんだと感じる。
並列処理は、プログラミングの難問だから、書く量は少ないほうがいいのは、当然か。
Fork/joinは、とっつきにくさを感じた。

並列処理は、今後も重要になってくる気がする。
並列処理ってわけではないが、分散処理を考える上でも、並列処理の概念は覚えておいた方がいいと感じた。
しっかりと勉強し直す必要がありそうだ。
TODO行き!

[12/13] JavaSEでもオブジェクト指向データベース(JPA)を!

記事URL

データベースを簡単にーJavaSEでもオブジェクト指向データベース(JPA) - Qiita

感想

JPAを使ったDBアクセス関連の話。
全く関係のないことだが、derbyがとっつきにくい!
話全般は、O/Rマッパーを理解していれば、問題なく飲み込める。
Javaのライブラリは、たまにとっつきにくい物があるが、そこら辺はカスタマイズが必要なのかと感じた。

[12/14]JGiven で 100% Pure Java BDD

記事URL

JGiven で 100% Pure Java BDD(導入編) - Qiita

感想

ごめんなさい。BDDって単語がわからなかった愚か者です。。。
振る舞い駆動は知っていたぜ!
BDDって単語がわからんかっただけ。もう覚えたぜ!

話を戻す。
テストは、状態・実行内容・期待値を定義して、それらの実行はJGivenに任せるんですね。
だから、状態や実行内容が列挙できていれば、簡単に複合テストケースが作れるわけか。
そこら辺は、便利かもしれない。
実際にプロジェクトで使ってみないと問題は見えないかもしれないが。。。
レポートのいいところは、どんな機能が使えるかが分かるところか。
逆もまたしかり。
どんな機能が使えないかも分かるってことだね。
TDD的な開発でアレば、かなり有用そうな気がする。
これのNGが、そのまま進捗報告に使えるわけか。
なかなか有用そうな気がする。
まだ、正式版では内容だが、活用シーンは多くありそう。
情報は、随時追っていきたい。
TODO行き!

話が全然変わるが、テストケースに日本語使うのは、個人的には有りだと思っている。
ただし、ターゲットが日本限定の場合のみね!
納品先が、ガチガチの日本企業ならOKかなって思っている。

雑記

バージョンの表記方法を全然知らなくて、調べた。
RCって、ほぼリリースに近い状態なんだな。
JGivenのリリースは、結構近いのか。
ちなみに、調べたサイトは、以下。

安藤幸央のランダウン(51):意外と知らないバージョン表記・数字の豆知識 - @IT

[12/15] HttpURLConnectionで嵌った話

記事URL

HttpURLConnectionで嵌った話

感想

HttpURLConnectionを使ったHTTP通信で、サーバーが4xxのエラーを返したときの話。
最近良く思うのが、HTTPのステータスコードが全然頭に入ってこない。
いや、調べりゃいいんだろうけど、200か200以外かしか気にしたことがない。
そろそろ、こんな状態は脱却したいな。
4xx番台が何なのかくらいは覚えたい。
TODO行き

話を戻すと、エラーが帰ってきたときに、エラーストリームが取得できない状態にハマったという話。
ココらへんまで来ると、もうソースを読む力が重要なんだなと思う。
あとは、妄想力。
こういう状態なら、こうなるが考えられるようになると、バグ修正の速度は格段に上昇すると個人的に思う。

どっちかというと、こういう事象有りますよって感じで終わっていたな。

[12/16] Javaslang を試してみた

記事URL

Javaslang を試してみた - 覚えたら書く

感想

StreamAPIを理解していたからかもしれないが、案外すんなり入ってきた。
副作用がないことで、関数型プログラミングはしやすくなるのではないかと感じる。
今後、Javaに大きく影響を与えそうなライブラリではないかと感じた。

話が変わるが、この記法は、Scalaライクなのだろうか?
Scalaは、やろうとしたが、覚えられなくて断念した記憶がある。
紹介されていた記法に近いなら、俺にもできそうな気がしてきた。
余裕があれば、Scalaを覚えて機械学習に流用したい野望がある。
TODO行き。

[12/17] JARファイルの難デコンパイル化について頑張ってみた話

記事URL

JARファイルの難デコンパイル化について頑張ってみた話 - Qiita

感想

ソース見られたくないから暗号化しようぜ!って話。
実行時間にどれくらい差がでるのか気になった。

クラスローダ周りは、正直知識がなくて、ふ~んくらいで記事を呼んだ。
結構な黒魔術を使わないと、こういうものって守れないんだなって思いました。
ソースコードの難デコンパイル化は、製品としてありそうな気がする。
著作権保護を強く訴えている起業とか。
※ネズミの王国が真っ先に思いつく!

[12/18] 暗号処理をやってみよう!

記事URL

暗号処理をやってみよう! - Qiita

感想

これは、知っているで!
ログイン関連の画面をやらせてもらったとき、パスワードの暗号・復号化で似たようなことをやった記憶がある。
暗号化は、突き詰めていくとかなり奥が深いってのは、そのときに痛いほど味わった。
だいたい既知の内容だったので、特に言及することはない。

[12/19] 自作のJavaMailラッパーでiCloudメールにアクセスする

記事URL

自作のJavaMailラッパーでiCloudメールにアクセスする - ひらおかゆみの投げやりブログ

感想

JavaMailでiCloudメールに接続できなくなったときの対応話。
問題だったのは、iOSの2ファクタ認証。
2ファクタ認証ってなんぞ?状態だったので、とりあえず調べた。

確認コードを入手して 2 ファクタ認証でサインインする - Apple サポート

要するに、2段階認証のことだろうか?
ちょっとiOS持ってないので、確認できないのが痛い。。。

今まで知らなかったけど、このメール送れない問題って、かなりシステム影響でかいんじゃ。。。て思った。
例えば、会員登録とかは、メールアドレスに一時的に有効なURLを送ったりするけど、それがそもそもできないってことになる。
メール送信の機能を作っている人は、大変だな、こりゃ。
バイス関連の情報は、逐一収集しておかないと、対応が後手に回るから恐ろしい。

[12/20] ThreeTen Extra と ThreeTen Backport

記事URL

ThreeTen Extra と ThreeTen Backport - Promised Land

感想

Date and Time APIの歴史と、生まれた派生の成果物についての話。
ThreeTen ExtraのThreeTenって何っておもったけど、JSR310の310のことねってわかるとすんなり行く。
Extraって言われると仰々しいイメージがあるけど、翻訳すると「余分な」って意味らしいね。
中二病満載の用語かと思っていたが、ディスりのイメージが強い用語なのだろうか?

ThreeTen Backportは、まだJava8に移行できてないプロジェクトで積極的に使っていくべきだと感じた。
いずれバージョンアップの時はくるから、被害が少なくなるように、少しづつ対応は行っていく必要があると思う。
内容を見ていたが、やっぱり、時間の管理は迷走しやすい気がした。
いろんな地域でいろんな日付の管理があるから。。。

[12/21] MySQL on Fusion-IOのパフォーマンスを引き出すバッチパターン

記事URL

MySQL on Fusion-IOのパフォーマンスを引き出すバッチパターン - Qiita

感想

CQSを理解するのに時間がかかった。
ようするに、副作用があるとこないとこキッチリ分けましょうってことね。
並列処理する上では、副作用の有無を理解した上で、どこの性能上げるかが大事だね。
DB関連の並列処理は、かなり面倒な印象がある。
完全には理解できなかった。
どこかで実験する必要があるな。

[12/22] 拙訳 JUnit 5 User Guide

記事URL

拙訳 JUnit 5 User Guide - Qiita

感想

JUnir5の紹介。
ざっくり見た感じ、3→4ほどのデカイ変更はなかった気がする。
Junitは、Javaのテストツールとしてデファクトスタンダードみたいになっているので、なる早で情報は集めたい。
あとで、じっくり検証する。

C++の設計と進化』に見る Java の方向性

記事URL

『C++の設計と進化』に見る Java の方向性 - Qiita

感想

C++Javaを比べての話。
C++だけでなく、C言語をベースにした言語すべてに言えるが、書き方が宣言的で分かりづらい印象がある。
Objective-cなんかと使った時は、Javaならもっと簡単に書けるのに!ってのが何回かあった。
たぶん、C++も同じだろう。
※使ったことがないので、憶測ではあるが。。。

他の言語と比べることで、Javaのいいところ、悪いところが見えてくるのだと感じた。
来年から、少しJavaから離れるが、別の言語の知見を取得して、プログラミングスキルの幅を広げたい。

ダンJavaの書き方。Immutable Java、Null安全を考えてみる。

記事URL

モダンなJavaの書き方。Immutable Java、Null安全を考えてみる。 - Qiita

感想

タイトル通り、イミュータブルやNullと、どうやって付き合って行くかの話。
不安定な状態のオブジェクトをなくすように心がけるのは、最初のころはわからなかったなぁ~と感慨深く見ていた。
基本的には既知の内容が多かったので、そこまで参考にすることはなかったが、上手くまとまっていた。

groovyの内部DSLの勉強がてらにETLツールもどきを作ってみた

記事URL

groovyの内部DSLの勉強がてらにETLツールもどきを作ってみた | takemikami's note

感想

Groovyを使ったDB初期化ツール。
Groovyは、JavaよりなJVM言語。
一時、触っていた。
目的はGradleを使えるようになりたかったから。
だが、タイミングを逃してしまい、今に至る。
ただ、言語自体は読めるので、そんなに苦ではなかった。
スクリプトに近い感覚で書けるので、もっといろんなことができそうな気がする。

もう一度、学びまおそうかな?

TODO

  • JDOを使ってテストコードを書けないか、考察する
  • 並列処理(特にExecutor FrameWork)を学習しておく
  • JGivenの利用方法について習熟しておく
  • HTTPステータスをまとめておく
  • Scalaの世界への入門

総括

以前より知らないことが減った気がする。
気のせいかもしれないが。。。

もうちょい深いところの知識がほしいと思った。

Advent Calendarのいいところは、いろんな知識が集約してくるところだね。
1ヶ月で知らないことや新しい発想に出会える可能性が高いので、来年も期待したい。

以前のAdvent Calendarまとめ

suzaku-tec.hatenadiary.jp

SQLite3のオートコミット

きっかけ

Spring Bootで手軽にデータを管理したいので、よくSQLiteを使う。
その際に、ロックの概念でかなり迷ったので、書いておく

SQLiteの挙動

手軽に使えるように、オートコミットが有効らしい。
Oracleとか、MySQLとかでセッション管理やっていると、癖でBEGIN/COMMITやってしまう。
そうすると、"database is locked"が発生する。
自分は、面倒くせぇから、SQLiteでオートコミットしないように設定して回避している。

実運用を考えると、オートコミットとかは邪魔な気がしてならない。
SQLiteで大規模なデータ管理はしないと思うが、そういう動きをすることは理解しておく必要がある。

SQLiteは、かなり使い勝手のいいDBだと思うので、ここらへんの細かい動きは、理解しておきたい。
これからのIoT時代に必要になものだと、個人的には感じている。

かなり短いけど、ここまで。
参考になったサイト上げておく

参考サイト

Atsushi's Homepage ` SQLite ‚ðŽg‚Á‚Ä‚Ý‚é

Kuro's Blog: [sqlite] SQLiteのロック・トランザクション関連仕様の整理

同時実行制御とSQLite3 - Qiita

【雑記】今年最後に参画したプロジェクトは、ひどいプロジェクトだった

この記事は

ただの不満のはけ口と、ちょっとした思ったことを書いているだけです。
事実と異なる可能性もなくもない。
読む場合は、気楽な気持ちで読んで下さい。
技術的な要素はなく、あとで振り返るようのメモなので、目的が違う人は直に別ページを探すことをおススメします。マジで!

今年の後半

とある商流関係のシステムで、センターシステムの刷新プロジェクトに参加。
刷新なので、既存のソースを載せ替えるのがメインの仕事。
自分はJavaの開発要員としてアサイン。 参加している企業が手動しているわけではなく、支援の形。
主導している企業は他にある。

そこで、主導している企業からいろいろ酷い目にあった。 恨み・辛みを忘れないために残す。

苦痛・疑問だったこと

主導企業に対して

  • FWが未完と分かっていて開発を進めなければならなかった
  • レビューが体裁の指摘だけで、レビューになっていない
    • 主導企業のFWを使うことになっていて、それを使う上での指摘が一切なし
  • 詳細設計からソースを自動生成すると言っており、レビューが全て自動生成するための指摘ばかり
  • アーキテクチャレベルが詳細設計のフェーズでも未決定
    • ねぇねぇ、これは何時決まるの?を何度も言ってきた。。。
    • 要件決まってないのに、どうやって詳細設計すればいいねん!
  • 単体テストが意味不な独自FW(主導企業のものらしい)
  • 謎の将来拡張を考える。
    • 明らかに顧客要件ではないのに、将来拡張を考えて、カラムの桁数より、多きい桁数を格納できるようにした。
    • 案の定、影響範囲は莫大である
  • DBのテーブル定義が製造・単体フェーズで大幅に変わる
    • 一度や二度なら許せるが、数十回発生した。許さんぞ!!!!
  • チケット駆動でタスク管理しているはずだが、申請したらモノが出来上がる前にクローズする。
    • どうやって出来上がったモノを通知するつもりやねん!
  • Gitを使用していたが、FWレベルの改修が毎日大元のブランチに入り、毎回リベース・マージが必要
    • 朝来たら、1時間近く掛けて取り込む。使いこなせてないせいかも知れないが、かなり面倒だった。
  • 主導企業の独自FWなのに、俺の方がFWに詳しい
    • 俺「こういう実装できないから、こう実装します。いいですね?」
    • W「いや、こうすればできます」
    • 指示された通りに実装→動かない。ドキュメントと詳しい実装を追って、動かないことが分かる。
    • 俺「こういう作りだから、言われた通りに実装しても、この要件はみたせないんだYO!(怒)」
    • W「それがやりたかったんですか?こう実装してください」
    • 俺の心の声(それ、俺が最初に言ったやつやん!)
  • 標準化を謳っていたが、自分が担当する画面は、「標準化対象外です!」ってほとんど突っぱねられた。
    • 主導企業担当の機能しか標準化してないんだが。。。
  • なんでも自動化っていってくるけど、自動化するまでの準備作業が多すぎる
    • それなら自動化しない方が楽では?って場合が結構あった。
    • 自動化するのはいいんだけど、影響範囲がでかいところを自動化したせいで、対応に追われる状態
  • 発注していたデザイン取り込みが製造の佳境に入ってから実施
  • JSFを使ってガチガチなコンポーネントを提供。なお、デザイン取り込みで、最後は破綻気味
  • 提供されているコンポーネントのドキュメントなし
    • バグったら手探り調査。サンプル渡せば万事解決だと思っているらしい。
  • クラスの継承関係がかなり深い。クラスの継承関係の問題でバグがいくつかあった。
    • ちなみに、発見したのは、すべて俺。。。
    • 修正方法まで指示した
  • リファクタリングを強制実行
    • アナウンスなくクラス名を変える暴挙。Gitで取り込んだ結果、エラーが出まくり、参画している方の企業がパニックに。。。
  • サイレントアップデート
    • 通達なく、こっそりと資料を更新してくる。ものを作ってレビューに出したら、ボロクソに言われる。
    • もしかして、俺ができない奴っていう印象操作?
  • 例外なげるの禁止
    • Javaで開発していたが、例外をなげちゃ駄目らしい。「なんで?」って聞いても「そういうFWのルールだから」の一点張り
    • なにか処理をしたあとは、必ずエラーチェックをする羽目に。。。
  • Stream禁止
    • なんか、性能劣化するから駄目と言われた。本当に検証したのか疑問。どうやって検証したいのか見たかったと、後々になって思った。
    • 個人的には、Stream推奨派なので、反論したが、平行線なので諦めた。
  • 議事録のTODOをこちらが突っつかないとやらない
    • なんのために議事録をとっているのか知っている??
  • 1時間枠の会議で、俺が40分くらい喋らなければ伝わらない
    • 聞く気があるのだろうか?それとも俺の技術が低すぎ??
  • 主導企業の独自FWの使用を強制してくる
    • 分からないことがあり、再現性がない事象について質問すると、「再現方法が分かってから質問してください」
    • それが分からないから質問しとんねん!!使用やソースも公開されてないのに、どうやって再現方法を見つければいいねん!
  • 業務要件を理解してないのにアジャイル開発します宣言
    • アジャイルは、品質・納期・機能を調整してプロジェクトを薦めることだと知らないらしい。
    • 何か問題があったら、直に解決することをアジャイルだと思っているらしい。
  • プロジェクト終了目前で主導企業が社員旅行
    • 死ねばいいのに。
    • やる気あんの?
  • 進捗報告の場では、「問題ないです」の一点張り
    • いや、問題はある。問題があると認識できないお前の頭にな!
  • 最後の方は逆ギレ
    • いやいや、主導してきたのお前らですやん!
  • 仕様は口頭連絡したから大丈夫b!
    • 口約束しといたけど大丈夫→そんな約束してないけど、証拠は?→爆発!

自分が入っていた企業に対して

  • レビューが無かった
  • 開発者で入ったはずだが、いつのまにやら他社問い合わせ窓口に
  • タスクにない他社問い合わせをしていたが、担当タスクは減らない。
  • 見積もりは俺がやるの?
  • 内部の課題管理は個人で
  • 進捗は日報&WBS。報告がダブっているんですけど。。。
  • プロパーがいない会議があってもいいの?
  • PCのスペックが低すぎる!

他に面白かったこと

GitLabのActiveで流れていたレビュー内容

主導側のレビューレベルが低すぎた。
本当にこの企業の支援でプロジェクトは成功するのか心配になった。

主導企業のホームページで実態とそぐわない記述が

主導企業がどんな事しているのか気になって調べたら、ホームページでは誇張された実績と、「安心のプロジェクト管理を〜」みたいな記述があった。見積もりも正確にやれますみたいなことが書いてあり、みんなで総ツッコミ状態だった。

結末

案の定、上手く行きませんよね。。。
プロジェクトは、御破算になるようでした。。。
めでたし、めでたし。。(めでたいのだろうか?)

何か得られたのか?

プロジェクトでやってはいけないアンチパターンを学べた。

技術力重要。差がありすぎると、会議をしても考えが伝わらない。

全体影響を考えないのは、システム開発失格。

過度な自動化はダメ。きちんと影響範囲と副作用を意識して、自動化する。

横文字を多用するやつを信じてはいけない。

結婚指輪以外の指輪を、いっぱいつけている人は、能力的に低い。

コンポーネントの部品化は、APIを利用したWEBシステムと合わない。
コンポーネントが画面固有になることが多いので、標準化できずに破綻しやすい。

進捗管理できないやつは、たいてい問題があっても報告しない。

ムカついても、陰口を叩いてはいけない。
自分の人間性を疑われる。
陰口を叩く場合、蔑称をつけるのがいい。
そうすれば、なんのことを言っているのか、外部の人はわからないし、伝わるのは一部の内部の人間のみ。
こんな嬉しい事はない。罵倒しまくりだぜ!!

個人的に思うこと

主導企業に対する怒りが強い!
潰れて欲しいとすら思ったことがある。
最後の方の社員旅行行っているって知ったときは、行きか帰りで事故らないかなぁ〜と本気で思った。
たぶん、一生忘れない。
末代までたたってやる!!

PowerShellで特定ファイルの一覧を取得方法

ことの背景

DOSでファイルの一覧取得したいんですけど、どうすればできますか?」みたいな質問を受けた。
PowerShellならできるで!」って返したけど、即作れなかったので、メモ。
ちなみに、エセ関西弁で喋ってはいない。
なんか知らんけど、軽いノリの文章を書くと、不思議とエセ関西弁が出て来る。

PowerShellで特定ファイルの一覧を取得方法

テスト環境

業務のフォルダ構成を乗せるわけにはいかんので、とりあえずテスト用の環境を作った。
テストのフォルダ構成は、以下。

test
│  e.bat
│  f.txt
│  test.txt
│  
└─sub
        a.txt
        b.java
        c.java
        d.bat

PowerShellの紹介だが、treeコマンドで出したのはご愛嬌。。。

コマンド

下記コマンドを実行。
今回は、".txt"のファイルのみ抽出。

Get-ChildItem ./ -Recurse | Where-Object{$_.Name -like "*.txt"} | Select-Object Name

すると、結果は以下の通り。

Name
----
f.txt
test.txt
a.txt

コマンドの説明

Get-ChildItemで、ファイルの一覧を取得。
-Recurseでサブディレクトリも取得させる。
あとは、パイプラインで繋げて、Where-Objectで必要なものだけ抽出、Select-Objectで必要な要素を出力している。

PowerShellの魅力

DOSだと、面倒な繰り返し処理を書かなければいけないが、PowerShellなら簡単に実装できる。
JavaのStreamAPIを使う感覚に近い。
基本的には、何かオブジェクトを作る→データの加工→出力処理 を書けば見やすい。
なるべく簡潔に実装することが重要だと思う。
最初、DOSに慣れているせいか、とっつきにくさを感じるかもしれない。
ただ、基本的な文法を覚えてしまうと、あまり苦にならないので、Windows7以降を使っているなら、なるはやで覚えたほうがいいと思う。

よくCSVファイルの中身を見たいときにPowerShellを使って見たりする。
意外と簡単にできる。
本当は、Pythonとか使いたいけど、現場のセキュリティレベルが高すぎて使えないのが現状。
この現場とはもう直ぐさよならなので、次の現場に期待したい。

JJUG CCC 2016 fall 参加報告

開催概要

公式サイト

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なりでセッションやりたいとは思うけど、なかなかできない。
踏ん切りをつける儀式がいるのかも知れない。