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

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

JJUGナイトセミナーGit入門に参加しました~ #jjug

JJUG Git GitBucket 勉強会

今日は新年初参加の勉強会となる「JJUGナイトセミナー Git入門」に参加してきました。

jjug.doorkeeper.jp

Gitは仕事で利用しているものの、基本的にはIDE(自分の所だとNetBeans)から利用しているので

f:id:kikutaro777:20160125225031j:plain

こんなメニューベースなんですよね(^^;なので、意外とコマンド知らなかったり、まだまだ使いこなせていない感があるので参加しました。今回、部内にナイトセミナーの情報を回したら後輩2人が参加してくれたのですが、似たような問題意識を持っての参加でした。

Gitはじめの一歩

前半は@ihcomegaさんより、Gitの基本的なお話がありました。

www.slideshare.net

この資料、一枚一枚のスライドがわかりやすく、特に絵と解説が良いバランスで一体化して非常にいいなぁと(^^)

同じ感想抱いた方はたくさんいらっしゃるのではないかと(^^)

これを機にちゃんとコマンド覚える、またはNetBeansのそれぞれがコマンドのどれにあたるかもっと明確化しよう…と改めて(^^;

そして、言語とか環境ごとのgitignoreファイルのテンプレートコレクションがあることとか(スライド80)

github.com

Pro Git日本語版電子書籍なるものが無償で読めるとか(スライド106)

Pro Git 日本語版電子書籍公開サイト

知らなかった!!この書籍は熱いですね。。。社内で輪読とかしてもよさそうな。

説明自体とてもわかりやすく、発表とか説明の勉強にもなりました(^^)

Git実践入門

後半は@syobochimさんより、実際の現場でのGit運用例など、3つのシチュエーションを事例に紹介されていました。


www.slideshare.net

Gitの話と直接違う部分ですが、スライドの最初のほうにあった「Artifactory」って知らなかったです(^^;これは調べてみたい。

www.jfrog.com

あと「SonarQube™」も知らなかった(^^;

まだまだ知らないことだらけだなぁ。と、こういうツールを知るのも良い勉強になります。

Gitの運用例は良い意味でSIer感があるというか、チーム全体がうまくやっていくには?という観点での話がとても共感できました。今日の話に比べると、自分の所なんて、全然小さいチーム構成・規模なのですが。昔、わりと大人数での開発に関わった時、こういう運用設計とかあまりなくて大変だったよなぁ…と思い出したり(Gitじゃないですが)

発表の中で、GitBucketを紹介&デモもされてました。まず皆でお試しに触ってみる環境としてはホント一番良いですよね。java -jarで起動できるし、とにかく手軽。

github.com

だいぶ古いエントリですが、そういえば自分も昔触ってたなーと。

kikutaro777.hatenablog.com

うまく導入していくには、ガイドなども大事、とのことで、以下のようなドキュメントなども作成されてるとのこと。すごいなー。

github.com

発表後の質問もたくさんあって「マネージャの説得方法は…?」みたいなものとか、面白かったですね(^^;;

「黙って入れてしまう」的な回答もw

現場の雰囲気とか環境にもよると思いますが、最終的にあまり触らないようなオジサマの説得に時間かけたりするよりは、周り集めて「とりあえず使ってみよう」とか「今のより何が良いのか、試してみよう」みたいな感じで、触ってみることに時間かけたいですよね(^^;そういう雰囲気のある自分の環境は、まだ幸せな方なんだろうなーと改めて…。

そして、@syobochimさんの発表後、one more thing..とのことで、同じ会社の@kawasimaさんが登壇されました。去年末の「システムエンジニア Advent Calendar 2015」をお一人で書かれてたすごい方ですね(^^;

qiita.com

何を話されるかと思いきや、画面にファミコンちっくなのが出てきて、なんと「ギットクエスト」なるものがw

b.hatena.ne.jp

これはすごすぎる(^^;;;デモめっちゃ笑いました。

サブバー村、から始まるのとか、社内でSVN使ってる方々にはみせられない感がw

これ、RPGツクールで絵の部分など作られてるとのことでしたが、最近のRPGツクールってWeb対応してるの??…など、Gitから一気にRPGツクールが気になってしまいました。

こういう発想自体がすごいなーと。

いやー、新年一発目の勉強会、参加してよかったです!業務的に参加してる場合じゃないだろ、という状況下ですが、やっぱり参加してよかった。。。

2015年振り返りと2016年やりたいこと

雑記 JavaScript

2016年になって初の投稿、技術的な内容というより雑記です(^^;

2015年を振り返って

アウトプット低下&仕事

去年を振り返ると、やっぱりアウトプットが色々減ったなぁ、という感想が一番です。
ブログもこんな感じに…。

f:id:kikutaro777:20160111214154j:plain

2015年年明けから結構がっつりと開発が始まって、6月くらいまで厳しかったです。

そんな中、Oracleさんから声をかけて頂いてJava Day Tokyoで発表させて頂きました。すごい緊張した記憶が(-_-;
kikutaro777.hatenablog.com

そろそろ自分も脱JSFしていきたい(^^;

なお、JJUG CCCなどの勉強会系は完全に参加のみでした。というか、勉強会自体、あまり行けなかった orz

あとでコメント頂きましたが、GlassFish勉強会でお話させて頂いていた(>_<;最近物忘れが酷いです。
kikutaro777.hatenablog.com

アウトプットだけでなく、インプットも少なかったんだなぁと改めて…。

7月以降は、色々大変だ、と聞いていたPrjに参画させられてしまいし、さらに身動きが取れない感じでした。

8月から11月くらいまでは常駐となってさらに…。

仕事は、学んだことが一番活きたり、新たなことを学ぶ機会ではありますが…ここではずっと仕様検討&打合せ、だったので中々厳しかったです。

やっぱりExcelばっかりイジる日々が続くと、「何してるんだろう…」と思うこともしばしば。いや、仕事として大事なのは理解してるのですが。

そんな中、優秀な後輩が2名ほど、他の部門などへ移ることもあったりして、色々と意気消沈(今も…)。

組織的な課題検討

ここ数年、中堅以下の若手が離脱するケースが増えています。

個人的には「そりゃそうでしょ…」と思うことが多々あるのですが、気付けば自分も中堅くらいになっていて、もっと若い人のために環境作りとか、雰囲気作りをしないといけないのだなぁと。

自分でコード書いたりするより、若い人を守る管理的な位置へ…みたいな…。いや、コード書いてたい…。

と、しばらく葛藤しそうです。

で、11月に部門オフサイトみたいなのがあって、「どうしたら人材離れを防げるか?若い人を育成できるか」みたいなテーマについてあれこれ話合いがありました。

ここについては闇が多いので伏せておきます…思ったより前向きな意見が多々ありましたが、実施はされてない気が。

2016年

Salesforce

仕事ではしばらくSalesforceのAPIと戯れる感じです。それはそれで楽しいです。

記事は少なめですが、以下。

kikutaro777.hatenablog.com

kikutaro777.hatenablog.com

アプリ作りたい

今年は個人的に作ってみたいものがあるので、それを作ることを目標に色々勉強していきたいなと思います。

WebなのでJava EEな気がしつつ、個人的にはSpring Bootが気になります(^^;;;

あと、せっかくなので、JavaScriptをしっかり勉強していこうかなぁと。

サイ本買いました。

JavaScriptリファレンス 第6版
David Flanagan
オライリージャパン
売り上げランキング: 159,888

JavaScriptは、去年やろうやろうとして結局手が出せませんでした。

あいかわらずフレームワーク衰退の速さなど凄まじく、何から学べばいいやら…と。

そんな中、大晦日にQiitaでみつけた記事そのままにelectronを触ってみたのですが

エディタではAtomを使ってるので、JavaScriptでデスクトップアプリ作れること自体は知っているものの、実際に自分でやってみると何とも衝撃で。

JavaScriptやってみるかーと。

今はAureliaを選んでGet Startedをやってみたくらいです。

aurelia.io

Reactとかと悩んだのですが、色合いが乃木坂46っぽいから、という理由でAurelia触ってますw

こう書きつつ、作りたいものはJavaでサクサク作れる気もするので、そっちになるかも(^^;

色々頑張らないとー

Salesforce Driver by JavaFX

JavaFX AdventCalendar NetBeans

この記事は、JavaFX Advent Calendar 201524 日目の記事です。

昨日は id:kozake (@s_kozake) さんの 「続・AndroidでJavaFXを動かしてみたよ!」 でした。
明日は id:skrb (@skrb) さんがトリを飾られます(^^)!!


今年1年を振り返ってみると、技術的に新しいものを探したり・触ったりする余裕がない1年でした。逆に言えば真面目に仕事をしていたというか(^^;

そんなわけで、残念ながらJavaFXに関してもあまり新しいネタはありません。(すみません…

ということで、今日は実際の仕事でJavaFXをこんな風に使ってみた、というネタにしたいと思います。

現場 x JavaFX

ちょうど昨日のJavaFX Adventでこざけさんが「JavaFXは僕の好きな技術ですが、イマイチ現場で使われている感がありません。」と書かれていました(^^;

皆さんの現場ではどうでしょう(^^;?

ちなみに自分の所(部門)では、デスクトップアプリを作る際はWindows FormやWPFといった.NET技術を使っています(C#)

JavaFXは存在は知っているものの(多分…)、最終的には使い慣れた技術のほうが実案件で選ばれるのは仕方がない…という所でしょうか(^^;

元々Windows系が多いので、あえてJavaFXを選択するラインがないです。

また、会社全体でみると、同様に.NET系が多いようですが、Javaの場合だと、やっぱりSwingが主力みたいなところは普通にあるようです。

仮配属にきた新人さんへJavaFXを少し触ってもらったのですが、本配属先ではSwingでした、というのが今年はありました。

テストドライバ x JavaFX

実案件は難しいけど、脇で使ったり、直接お客さんが触るものでない所でJavaFXを…と思って1年くらい経つのですが、少し前にちょうどいい感じの仕事が出てきました。

その仕事は、Salesforceと連携して使う、とあるWebシステム構築案件です。

Salesforceをご存じの方はわかると思いますが、Salesforceは非常にカスタマイズ性が高く、Apexという言語で画面作ったり、ボタンで複雑な処理を呼び出したり、色々なことができます。

うちは導入ベンダなどではないので、Salesforce部分は専門ベンダさんが構築で、うちが作るWebと連携する形です。

f:id:kikutaro777:20151224185907p:plain

当初連携ではSalesforceのRESTを使おうとしてましたが、最終的にはSOAPを使っています(詳細は以下エントリ)

kikutaro777.hatenablog.com

実際やってみるとSOAP使った連携は楽だよなぁと。SFDCのWSDLからクラス自動生成できますし。

さて、本題です。

今回のシステムでは、Salesforce側でうちのWeb画面を呼び出す前に色々とオブジェクトを操作する流れがあります。その後、うちのシステム側に情報が来て、加工して、SOAP APIで更新する、みたいな。更新するには先にSaleforceのロジックでオブジェクトが作成されていないといけない、などですね。

連携とかの開発ではよくある話だと思いますが、両社の開発過程では、まだ色々出揃ってないのでドライバやスタブなどが必要となります。

ドライバやスタブがわからない場合は情報処理試験の本以下ページにある図などがイメージしやすいかと。

What is the difference between stubs and drivers in software testing? - Quora

実際Salesforce上のApexなどでドライバが作れれば最高なわけですが、今回は期間的にもドライバを相手方に作ってもらう時間や、うちがApexを習得して自前でドライバを作る余裕はありませんでした。

なので、Javaで普通にSOAP APIを叩いて、Salesforce上で何かの操作をした後のオブジェクト構造とかを作り出すドライバを作りました。

f:id:kikutaro777:20151224190748p:plain

せっかくなので、JavaFXで作って、ドライバで作ったデータをすぐ確認できるように、WebViewもつけてます。以下のような感じ。

f:id:kikutaro777:20151224191326j:plain

ドライバでテストデータを作って、ブラウザ使わずともWebViewでみれたり。

f:id:kikutaro777:20151224191340j:plain

現場への導入第一歩としては良い感じではないかなーと(^^;

JavaFX使うと何がどこまでできるのか、とかも徐々にナレッジが溜まりそうですし。

書いてるコード

このプロジェクトで作ってるドライバは、非常に簡単なコードの集まりです(^^;

以下に、明日トリを飾る@skrbさんが以前JJUGでハンズオンをされたときの資料がありますが、これを1回やれば普通にできるレベルです。

上記ハンズオン資料は非常に細かく手順も書かれているので、新人さんでも普通にこなせます。
実際、プログラミング経験がほとんどない新人さんにやってもらったりもしてるので。

NetBeansでunpackingが遅い

ドライバ作ってるときにちょっと出会ったネタを最後に1つだけ。

自分はNetBeansでMavenを利用してJavaFXアプリを作っています。画面はSceneBuilderで。

で、今回のドライバはSalesforceのライブラリを使ったり、その他、諸々と依存性があったのですが

ビルドが超遅い(^^;

コンソールみると

f:id:kikutaro777:20151224192542j:plain

unpackingをすごいしています。調べると、java -jarで実行可能なjarファイルを作ってくれてて、そのために依存ライブラリをいれてるっぽい。

で、以下に同じ話がありました。

stackoverflow.com

上記StackOverflowにあった解決案としてprofileを作成するというのがあって、自分はそうしました。

NetBeans(ちなみに8.0.2) & Mavenで自動作成されたpom.xmlには

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <id>unpack-dependencies</id>

            <phase>package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>${java.home}/../bin/javafxpackager</executable>
                <arguments>
                    <argument>-createjar</argument>
                    <argument>-nocss2bin</argument>
                    <argument>-appclass</argument>
                    <argument>${mainClass}</argument>
                    <argument>-srcdir</argument>
                    <argument>${project.build.directory}/classes</argument>
                    <argument>-outdir</argument>
                    <argument>${project.build.directory}</argument>
                    <argument>-outfile</argument>
                    <argument>${project.build.finalName}.jar</argument>
                </arguments>
            </configuration>
        </execution>
        <execution>
            <id>default-cli</id>
            <goals>
                <goal>exec</goal>                            
            </goals>
            <configuration>
                <executable>${java.home}/bin/java</executable>
                <commandlineArgs>${runfx.args}</commandlineArgs>
            </configuration>
        </execution>
    </executions>  
</plugin>

のような定義があるので、これを

<profiles>
    <profile>
        <id>executable</id>
        <build>
            <plugins>
                <plugin>
                    <!-- <groupId>以降をここへ移動 -->
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

これで、通常ビルドではunpackingせずに、実行可能なjarを作成したいときは以下プロファイルを指定してビルドすればいいような形になりました。

f:id:kikutaro777:20151224193022j:plain

明日は@skrbさんがトリを飾られます(^^)!!!

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村
QLOOKアクセス解析