社内コミュニティのすゝめ
レガシーな環境でも社内コミュニティを作るとなかなか良いよって話です。
自分の環境について
そこそこ大規模なSIerのSEです。
SIerというとブラックなイメージがつきまとうはず。
ITエンジニアなのにほとんど触っているのはExcelであったり、GitHubといったITエンジニアならば既に常識になりつつあるようなクラウドサービスが利用できないなど、ネットでネタにされるような労働環境がリアルにあったりする場所だったりします。
そんな労働環境に置かれながらも、もがいていたりします。
そんな一つのもがきとして、社内コミュニティの活動を行なっています。
社内コミュニティとは
社内コミュニティとはなんでしょう?
まずIT界隈でコミュニティと呼ばれるものを定義すると以下の定義になります。
「同じ興味・関心・利害を共にし、情報の共有・問題の解決などを行う共同体」
会社内でこのようなコミュニティを作るのが社内コミュニティです。
同じ興味・関心・利害を共にするというところがいわゆる官僚主義的な会社組織と異なる部分になり、社内コミュニティの面白いところです。
当方の行動指針の一つになっているFearless Changeでは勉強会をするのが新しいアイデアを広める際の仲間を集める良いパターンとして紹介されています。
興味や関心を共にすることができるということから、社内で行う勉強会というのが一つの社内コミュニティではないかと思います。
仕事に役立つような勉強を業務活動として行う場合にはどうなるでしょう?
おそらく義務感が発生してしまい、興味や関心、利害を共にすることはできずにポジティブな雰囲気にはならないはずです。
自分の興味がないことを勉強したとしてもすぐに忘れてしまうでしょう。
社内コミュニティの中で勉強するとどうでしょう?
コミュニティの参加者は学びたいという意思が明確です。
興味や関心がないと自らの時間を費やしてまで勉強会に参加しようなどと思わないはずです。
この場所に集まった人たちは同じ会社にいながら、官僚主義的な利害関係がない仲間となる人たちでしょう。
得られたもの
こういった仲間が得られるとどうなるでしょうか?
勉強会内では積極的な意見交換が行われます。これにより、興味深い気づきが得られます。
例えば、私のコミュニティでは、アジャイル開発の勉強を行なっています。
ある回では、プランニングポーカーをテーマに扱いました。
プランニングポーカーにはカードの種類がいくつかあり、カードによっては説明しないと意味が分からないようなカードも存在します。
カードの意味が分からないというのは想定外の状況でしたが、参加者の中の有識者がフォローしてくれました。お互いに手助けする雰囲気があるというのがコミュニティの良い点であると感じました。
参加者の意見を聞くと楽しかったといったポジティブな意見を聞くことが多く、これもコミュニティとして行うことのメリットであると感じています。
仕事の中では楽しかったという意見を聞いたことがありませんでした。
この楽しい感情から生まれるポジティブな意見というのは貴重です。
会社という組織にいながら互いを認め合う雰囲気を感じることができます。
社内コミュニティを作ることで、良い仲間を得ることができたと思います。
モチベーション、コミュニケーションといった点で、ここは居心地が良い場所だなと実感しています。
今後に向けて
コミュニティを介することで、したいからするという前提のもとで活動が行われます。
モチベーションを高く保てるため理想的な環境です。
コミュニティのように利害関係なしに楽しみながら活動することがビジネスでも必要になります。
Googleが良い例です。
特にSIerのような利害関係にまみれている場所にとって、このような文化を取り入れることは良い変化につながると思っています。
今後はこのような社内コミュニティのエネルギーを会社にアピールしていければと思っています。
組織として常に学習する文化が根付くことが理想だと感じる、今日この頃です。
来年はそんな理想に近づけるように活動していきます。
参考
Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン
- 作者: Mary Lynn Manns,Linda Rising,川口恭伸,木村卓央,高江洲睦,高橋一貴,中込大祐,安井力,山口鉄平,角征典
- 出版社/メーカー: 丸善出版
- 発売日: 2014/01/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (16件) を見る
How Google Works (ハウ・グーグル・ワークス) ―私たちの働き方とマネジメント
- 作者: エリック・シュミット,ジョナサン・ローゼンバーグ,アラン・イーグル,ラリー・ペイジ,土方奈美
- 出版社/メーカー: 日本経済新聞出版社
- 発売日: 2014/10/09
- メディア: 単行本
- この商品を含むブログ (18件) を見る
Java SE 8のパフォーマンスを簡単に測定してみた
Java SE 8が最近リリースされました。
Java SE 8でJVMに対してパフォーマンスチューニングがされたということを聞き、簡単にパフォーマンスを測定してみました。
・測定方法
100万個のBeanをListに格納する時間を計測
・実行環境
JRE
Java SE 6U45
Java SE 7u51
Java SE 8
IDE
NetBeans IDE 8.0
・結果
Java SE 6U45 :平均113ms
Java SE 7U51 :平均174ms
Java SE 8 :平均346ms
SE 7から倍くらい遅いという結果になりました。なぜに!?
IDEでやるのがまずいのかと思って、コンソールでも試してみましたが変わらずでした。
測定プログラムは以下のとおり。
package sample; import java.util.ArrayList; public class Benchmark1 { public static void main(String[] args) { for(int j=0;j<10;j++){ long currentTimeMillis = System.currentTimeMillis(); ArrayList<User> list = new ArrayList<User>(); Benchmark1 benchmark1 = new Benchmark1(); for(int i = 0; i < 1000000; i++){ list.add(benchmark1.new User("テスト", "テスト県テスト市", "123456")); } System.out.println(list.size()); System.out.println(System.currentTimeMillis() - currentTimeMillis); } } public class User{ private String name; private String address; private String id; public User(String name, String address, String id) { super(); this.name = name; this.address = address; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getId() { return id; } public void setId(String id) { this.id = id; } } }
Java SE 8ということで、StreamAPIを使う方法でもやりました。結果は変わりませんでした。
mainメソッドを以下のように書き換え。
for(int j=0;j<10;j++){ long currentTimeMillis = System.currentTimeMillis(); Benchmark2 benchmark2 = new Benchmark2(); Stream<User> generate = Stream.generate(() ->; benchmark2.new User("テスト","テスト県テスト市","123456")); List<User> list = generate.limit(1000000).collect(Collectors.toList()); System.out.println(list.size()); System.out.println(System.currentTimeMillis() - currentTimeMillis); }
ただ、一概に今回の結果を捉えてはいけないかなと思います。
Java SE 8からJVMのメモリの利用効率を改善したということで、もっと複雑にJVMが動作するプログラムに対してパフォーマンス計測を行った場合にはどうなるかを計測しないといけないと思います。
例えば、Webアプリケーションとか。
時間があれば、別の形でパフォーマンス計測したいと思います。
Javaのバージョンを上げれば、パフォーマンスが上がりますと言えれば、Java8が業務で使える日も近づくかもしれませんので。
Spring MVC Validationを適用する
画面からの値を受け取るエンティティクラスに@Validアノテーションを適用します。
BindingResultクラスの変数にValidationを行った結果が入ります。
bindingResult.hasErrors()で入力チェックエラーが存在するかを判断しています。エラーが存在する場合、上記メソッドの結果がtrueになります。
ValidationMessages.properties
エラーメッセージの内容を日本語にするために編集します。
Hibernate Validatiorのjarファイル内にValidationMessages.propertiesが存在します。
デフォルトではこの内容が表示されます。
@NotEmptyは以下のように定義されています。