“型破り”と“型なし”

このブログタイトルあるこの言葉にまつわるお話。

型破りというとかっこよく聞こえると思います。

“オレは既成概念をぶっ壊して自分のルールでやってくぜ!”って感じですかね。

 

かの中村勘三郎さんも座右の銘にしたぐらい、これについては素晴らしい言葉があって

 

「若い人はすぐ型破りをやりたがるけれど、型を会得した人間がそれを破ることを『型破り』というのであって、型のない人間がそれをやろうとするのは、ただの『かたなし』です」

と。

 

そうなんです、ネット社会の今、情報を掴んだだけで分かったつもりになり、“型破り”的なことをしようとする。

これは“型破り”ではなくて、ただの“かたなし”なんです。

 

死ぬほど基礎を叩き込んで、物事が見えてきて初めてその物事の常識を覆そうとしたり、既成概念をぶち破ろうとするのが“型破り”なんです。

リオオリンピックで銅メダルを獲得し世界ランキングも一桁のテニス錦織圭選手もマイケル・チャンに師事するまではランキング一桁になかなか入れず、伸び悩んでいました。これを打破したのはエア・ケイではなく、マイケル・チャンに基礎を叩きこまれたからです。

 

やはり基礎なんです。

 

これをすっ飛ばしていきなりカッコつけようとしても“かたなし”なだけで、成果も上がりづらく、かっこ良くも観えません。

 

また、これも同じような話ですが

 

“分かる”と“会得”

 

これも勘違いしやすいですね。僕らのようなIT系で仕事をしているとなんでもネットで情報をインプットし、分かったと勘違いしているところがあるんじゃないかと思ってます。

 

上で書いた“基礎”と一緒で本当に分かるというのは頭ではなく身体が覚える事をいうんじゃないかと。

身体が覚えるところまでいって、“会得”といえるのではないでしょうか。

これもしっかり自分の中で再確認したいと思いました。

 

情報社会の今だからこそ改めて自分に言い聞かせたい言葉でした。

GitLabに公開鍵認証でssh接続する(けどなかなかできない!)

GitLabに公開鍵認証しようとしていろいろはまってしまったのでポイントだけまとめます。

※公式ドキュメントに誤りがあるので注意2016/7時点

  1. 秘密鍵の作成時にコメントを入れる。(これは公式ドキュメント通りなのではまってはいないが念のため)
    ssh-keygen -t rsa -C "{登録ユーザーのメールアドレス}"
  2. 秘密鍵をssh-addで登録する。
     $ssh-add ~/.ssh/id_rsa

    このとき「Could not open a connection to your authentication agent.」がでたら

     $ eval `ssh-agent`

    でエージェントを起動する。(普通にssh-agentでは環境変数の問題でちゃんと起動しないらしい。)

  3. configのuserに”git”を設定する!!
    ここが公式ドキュメントで間違っている模様。
    ユーザー名を指定しろとなっているが、それでは認証が通らない。

    #
    #Main gitlab.com server
    #
    Host gitlab.com
    RSAAuthentication yes
    IdentityFile ~/.ssh/id_rsa
    User git
    

 

上の3点をやればあとは普通につながる・・・はず。

Jacocoでレポートがファイルが出力されない。

NetBeansのプラグインで、Javaのテストカバレッジ取得ツールである「Jacoco」のプラグインをインストールした。
が!全然結果が出力されない。
色々調べたころ、
Mavenでテスト実行のための設定「maven-surefire-plugin」で、明示的にjacocoのレポート出力機能を呼び出すように記載を追加することで解決した。
※ほか人のサイトや、本サイトのサンプル見ても、そもそも「maven-surefire-plugin」のところは書いていなかったり、書いてあってもその設定なかったりするが・・・

テスト実行後に、プロジェクトを右クリック→コードカバレッジ→レポートを表示でレポート画面を開いても「テスト実行した?」というメッセージが出力される。
レポート画面の「全てのテストを実行」で実行しても同じ。
Jacocoを最新バージョン(この時は、0.7.7.201606060606)

色々調べてみたところ、プラグイン自体は、結果ファイルを読み込んで表示するだけのようで、あとやってくれるのはインストール時にMavenのBuildプラグインにJacocoの設定を追加するくらい。
他の利用者のサイトを見るとそれだけで動いているように見えるんですが・・・
とりあえず、何か設定が足りないんだろうと思い、テストを何度も実行しながらコンソールを確認。

するとreportのところで
「Skipping JaCoCo execution due to missing execution data file」
というメッセージを発見。どうやらレポート作成しようとして、結果ファイルが見つからない=出力されていないということが判明。
でも、prepeare-agentのところでは
jacocoArgs set to -javaagent:C:/XXX\\0.7.7.201606060606\\org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile=C:XXXXXXX\\target\\coverage-reports\\jacoco-unit.exec
となっていて、設定はちゃんとできていそう。
じゃあそもそも実行されていないのかと思い、ググってみると、
「maven-surefire-plugin」の引数にjavacocoの呼び出し設定?のようなものを追加しているものがあったので真似してみた。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <version>2.16</version>
 <configuration>
 <argLine>${jacocoArgs} -Dfile.encoding=UTF-8</argLine>
</configuration>
 </plugin></pre>
<pre><!--カバレッジ用に追加-->
 <plugin>
 <groupId>org.jacoco</groupId>
 <artifactId>jacoco-maven-plugin</artifactId>
 <version>0.7.7.201606060606</version>
 <executions>
 <execution>
 <id>default-prepare-agent</id>
 <phase>test-compile</phase>
 <goals>
 <goal>prepare-agent</goal>
 </goals>
 <configuration>
 <propertyName>jacocoArgs</propertyName>
 <includes>
 <include>*</include>
 </includes>
 <destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
 </configuration>
 </execution>
 <execution>
 <id>default-report</id>
 <phase>prepare-package</phase>
 <goals>
 <goal>report</goal>
 </goals>
 <configuration>
 <dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
 </configuration>
 </execution>
 <execution>
 <id>default-check</id>
 <goals>
 <goal>check</goal>
 </goals>
 <configuration>
 <rules>
 <!--implementation is needed only for Maven 2--> 
 <rule implementation="org.jacoco.maven.RuleConfiguration">
 <element>BUNDLE</element>
 <limits>
 <!--implementation is needed only for Maven 2--> 
 <limit implementation="org.jacoco.report.check.Limit">
 <counter>COMPLEXITY</counter>
 <value>COVEREDRATIO</value>
 <!-- コンパイル時に確認する達成率 -->
 <minimum>0.10</minimum>
 </limit>
 </limits>
 </rule>
 </rules>
 <dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
 </configuration>
 </execution>
 </executions>
 </plugin>

上記の設定にすると無事、テスト終了後にレポートが出力されるようになりました。
ちなみに、default-checkというのはビルド時に、カバレッジの最低値を設定することで下回っていた場合にはビルドエラーにしてくれるという
設定。CIと連携したら役に立ってくるかな。

(参考)
mavenの設定内容
http://www.eclemma.org/jacoco/trunk/doc/maven.html

@EJBが効かない?

localで開発していたアプリをlinux状のglassfishで動かそうとしたところ、NullpointerExceptionが発生。

View生成直後に、javax.ejb.Statelessアノテーションをつけたクラスを@EJB
アノテーションをつけたフィールドにインジェクトしたクラスを呼び出そうとしたところで発生した模様。

ほかの個所と比較したところうまくいっているとことは@Injectアノテーションを使用していたので、同じく修正したところ、正常に動作した。

念のためバージョンを調べてみたら、あれ・・・?マイナーバージョンが違っていた・・・

ローカル環境  :  GlassFish Server Open Source Edition  4.1.1  (build 1)
サーバー環境 : GlassFish Server Open Source Edition  4.0  (build 89)

バージョンの違いかもしれない・・・

 

PrimeFacesのファイルダウンロード機能利用時の注意

Primefacesでファイルダウンロードボタンクリック時にダイアログが開かなかった。

<p:commandButton id="buttonDownload" actionListener="#{testController.download()}" ajax="true"
value="ダウンロードのみ" update=":Form">
<p:fileDownload id="dl" value="#{testController.downloadContent}"/>
</p:commandButton>

 

いろいろいじったところ、ボタンのajaxが有効な場合、ダイアログが開かない模様。

<p:commandButton id="buttonDownload" actionListener="#{testController.download()}" <strong>ajax="false"</strong>
value="ダウンロードのみ" update=":Form">
<p:fileDownload id="dl" value="#{testController.downloadContent}"/>
</p:commandButton>

 

これで開くようになりました。

NetBeansにH2DBの管理用プラグイン(GUIから起動、停止可能)を登録する方法

 

  1. netBeansメニューのツール>プラグインで設定タブを選択。
    以下のURLをアップデートセンターの構成に追加する
    http://kenai.com/projects/nbh2/downloads/download/Latest_NetBeans671/updates.xml
  2. 使用可能なプラグインタブを選択し「最新の確認」をクリック
  3. 検索ボックスに”H2″と入力すると「H2 Database Engine Support」がインストールされます。
  4. エディタに戻って「サービス(ウインドウ>サービス)」のデータベース欄にH2というアイコンが追加されていればOK

派遣元責任者講習

本日、派遣元責任者講習会に出席しました!!
参加者は200人を超える状況でした。。こんなに参加者いるのかとある意味びっくりでした。

講義自体は、ケータイ、PC利用不可(当然といえば当然・・)という環境で丸一日でした。
以前、民営協の職業紹介責任者講習を受けましたが、その時よりもガッツリ労働者派遣法も詰め込まれました。

リーマンショック以降、派遣村・・などの問題もあり、かなり法改正されてました。
今日聞いた講義の内容をざっくりと書き留めたいと思います。

①労働者派遣事業の登録が厳しくなりました。
法改正前は、特定労働者派遣は財産条件はなく、一般労働者派遣は、基準資産額:2000万円、預金金額:1500万円という財産条件でした。
法改正後は、特定労働者派遣事業と一般労働者派遣事業の区分けが無くなり、労働者派遣事業に一本化され、許可申請時に常時雇用している派遣労働者の数で財産条件が定められました。。(汗)
5人以下:基準資産額:500万円、預金金額:400万円(3年間の暫定措置 H27.9.30 施行なので・・H30.9.30までです)
10人以下:基準資産額:1000万円、預金金額:800万円(当分の間)
10人以上:これまで通り・・。

特定派遣事業登録を行おうと思っていたのに・・ということで講義終了後に講師のところにダッシュ。
詳細を詳しく話を聞きました。

Me:「カクカクしかじかで、特定派遣事業を・・」

Teacher:「あー。それだったら法改正前に登録してなかったら無理だねー」
Teacher:「法改正前に登録しとかなきゃだめだよ・・。」

Me:『法改正前に登録できる状態だったら、今日ここにいないし・・(心の声)』
Me:「ということは、これからの新規参入は、財産条件をクリアしないとだめってことですよね??」

Teacher:「そうですね、がんばって財産貯蓄して許可申請してくださいね・・」

的なやりとりを行い、その他、諸々の質問事項を確認して終了しました。
法律はどんどん変わっているので、知らないうちに法律違反・・的なことにならないようにしなければと改めて思いました。

IMG_0321

よく言うマーケティングのお話

マーケティングってなんだと思う?

学生を相手にする仕事もしているのでよくこの質問する機会が多いんだよね。
特に若い子の回答が多いのが

「市場調査したり」
これはまだマシ。

「よく分からないけど、なんか調べること」
はい、バツです。

けっこう大の大人でも勘違いしている人が本当に多い。
そういう人に限って
「競合調査して」とか「市場調査して」とか「ビジネスモデルが」とかとか。
そんな話じゃない。
本来マーケティングって

売上を上げる工程全て

なんだよ。
値札を付けることも市場調査するのも競合調査するのも、実店舗出すのだってECサイト作るのだって全てはマーケティングなんだよね。

自分がずっと音楽をやっていたから思うこと。

日本人って技術が大好きなんだなって。

悪いとは思わないけど、ギターだったら速弾き出来るのが凄いとか、ドラムだったら鬼のようにオカズ叩ける人が凄いとかって風潮が強いと思ってる。

個人的な意見だけど、それって凄いんじゃなくて上手いだけだと思ってる。

ドラムなんて分かりやすいけど、どんなに凄いオカズを叩いても、リズムとしてノレなかったら破綻してるよね。

シンプルでも気持ち良くノレるリズムには勝てない。

話がそれたけど、マーケティングで言えば

“コンテンツマーケティング”

“レスポンスダイレクトマーケティング”

“データベースマーケティング”

などなど毎年って言ってもいいぐらい新しい手法が登場してる。

これ音楽で言えば速弾きが出来る、上手いオカズが叩けると一緒。

あくまで手段の話。

全く本質を見ていない。

なんでもいい。自分が買い物をする時を考えて欲しくって。

まぁ最低限生きるのに必要な買い物はおいといて。

服、アクセサリー、車なんか特にあると思う。

自分が何で買ったの?

そこを考えれば自ずと答えが出てくると思う。

 

 

感情が動いた。

 

 

これに尽きると思う。

マーケティングの本質って結局ココだけ。

多くの人に買いたいって感情を動かせた行動が最強のマーケティングなんだよ。

個人的には法に触れなければどんな手段を使ってもこれがデキる人が最強の営業でありマーケターなんじゃないかと思う。

 

じゃあなんで毎回新しい名前のマーケティングが流行ると思う?

それは次回話そう。

 

色んな裏話があるからね。

とにかく

お客様の感情に刺さる行動

これがマーケティングの全てて究極だと思ってる。

 

 

 

TDD(テスト駆動開発)で野球上達(1)

技術責任者のM.S.です。
技術っぽいことと野球について主に書いていく予定です。

当面、TDD(テスト駆動開発)で行う野球の練習方法について書いていきます。

ちなみに、TDDとはテストコードを書きつつ開発を行い、開発が完了した時点でテストがすべてOKになるように実コード(ここでは成果物となるコードを示します)を書いていくという手法です。

通常は設計⇒開発⇒テストという順でプロジェクトが進んでいくと思いますが、開発が終わってさあテスト実施という段階で設計もれや設計と実コードの齟齬に初めて気づくことも多いかと思います。もちろん、開発中にこんなインプットはあり得ないとか、こんなアプトプットは出力できないとかの使用考慮漏れに気づくことも。

TDDでは、開発と同時に実際にテストコードでテストを行う(厳密にはテストコード作成⇒実コード作成のサイクルを繰り返す)ことで、よくある「設計⇒コードの間で起きてしまう仕様の齟齬、考慮漏れ」などを開発しながらつぶしてしまうことができます。

詳しくはまた別の機会に書きますが、この手法ではテストコードを作りつつ本コードを作っていくため、テストに必要なアウトプットとインプットを開発する前に具体的に決めてしまうもしくは、開発中に考えながら作業を進めていく必要があります。その為、TDDによる開発を経験すると、「どういう処理か」よりも「どういうインプットに対してどういうアウトプットがあるか」を重点的に考えるようになってきます。

長々と説明しましたが、今回野球に取り入れようというのはTDDの「処理内容ではなく、インプット、アウトプットに重点を置き、テストを繰り返しつつ開発を行う」という考え方になります。

というわけで、第1弾は「バッティング」です。
※おそらく複数回に分けることになります。

「バッティング」に関しては、上からたたけとか、体を開かないとか、最短距離で打つとか、なんとかetcもっともらしい指導がいろいろあります。なので、バッティングをよくしようとしたとき、これらの断片的な(しかも正しいかどうかも不明)理論や、その他自分の感覚などをもとにフォームを作っていき、打って試してみる。

これが、設計(ヒットを打つ、ボールを打つ)⇒開発(スイングしてみて色々と微調整する)⇒テスト・本番(実際に打つ)という感じの通常の開発フローに則った練習方法と言えます。

では、TDD的な練習方法とはどんなものか?
・・・と続けたいところですが、だいぶ長くなりましたので、これについては次回に。