Java8 Postfixプラグインが公式に取り込まれた

by orekyuu 0 Comments

以前作っていたJava8のpostfixプラグインがIntelliJ IDEA CEに取り込まれた。

Add a new postfix completion template #303

メール確認した時「マージまじ?」ってなった。
たぶん次のアップデートで使えるようになるのかな?
IDEA16 EAPには入ってました。


おまけ

英語苦手なんや 本当にごめん
https://github.com/JetBrains/intellij-community/commit/8a20eaf86ef12fa1411557b41586350d40221427

Javaビーム工房でテキストを読み上げるプラグインを作った話

by orekyuu 0 Comments

通っている学校の学祭でJavatterブースをやった時にデモ用に作ったプラグインの話。
内容は/say [読み上げさせたい文章]ってコマンドを追加してその文章を読み上げさせるだけ。

読み上げの音声を作る方法は色々あると思うけど、今回はVoiceText Web APIのJavaラッパーでVoiceText4jというライブラリを見つけたので使うことにしました。

VoiceTextの読み上げはかなり優秀で、適当にWikipediaの文章を読み上げさせてみましたが全く違和感なく漢字や英単語を発音していました。面白いので使ってみてください。
読み上げプラグインはプラグインリポジトリからダウンロードできます。

最後に読み上げプラグインのソースコードを貼っておしまい。

学校でやってる作品制作の授業の様子の話

by orekyuu 0 Comments

僕の行っている専門学校ではチームを組んで作品を1つ作るプロジェクト演習という授業があります。
他の学校でも同じような授業があったりするけど雰囲気が学校によって違うみたいなので、どんな感じなのかブログに書いてみようと思った次第です。


 

講義内容

学科によって微妙に変わったりするけどある程度テーマが決められて、それを満たすように1年間かけてチームを組んで作品を作っていきます。僕の学科ならサーバーと連携するかサーバー上で動くアプリってかんじです。


 

主に使われている言語

僕の学校ではPHPを使っている人が多いです。
特にサーバーサイドで限れば8〜9割くらいかなと。
残り1、2割がJavaとかRubyとかって感じですね。PHPの鯖にデプロイするだけという手軽さが受けているんですかね?ボクPHPヤラナイカラワカラナイ
Javaやっている人が本当に少なくてメンバー確保に結構苦労しました。


 

生徒のモチベーション

皆無からとても高い人まで様々です。
大雑把に分けるとこんなかんじです。

モチベーション100: 即効でチームつくって作る作品の企画ねってたり作業始めたりしてる。あとは使うフレームワークとかも色々試行錯誤している感じ。多くはないけど一定数は居る。
モチベーション50: 作業も結構やってるけど単位もらえたらいいやくらいのモチベーション。大体の人がこの辺。一番おおいかな?
モチベーション10: 一応授業には来てるけどチームもできてないし企画もなにもやってない。ちらほら見かけるかんじ。
モチベーション0: 授業に来てないというか、「え?同じ教室でうけてたの?」ってレベルで来ない人 授業に来ないので割合確認できない。


 

僕がいるチームの現状

Java書ける人が見つからなかったので、Webデザインできる人を連れてきてフロントとバックで完全に分けて二人で作業してました。極力デザイナの人がらくできる環境を作りたかったので、Spring boot + thymeleafを使用することにしました。
その後僕のチームの企画に興味持った人が二人来たのでその二人をチームに入れてGitの操作を教えながら作業開始しているって段階です。

新しいメンバーのモチベーションも結構高い人みたいで、コードレビューで結構指摘飛んだり、レビュアーに指定していなくても颯爽と現れて横から失礼しますレビューをしてきたりして面白い。


 

チームによってモチベーションとかスキルの差はあるけど、各チーム試行錯誤しながら作業しているようで結構面白かったりする。

SpringMVC良さげ感

学校のプロジェクト演習の授業でWebアプリ作ろうとしてるけど、何を使うか色々試してる。
JavaEE7でJSF+PrimeFaces使ってるけど結構不満な点がいくつか出てきた。
例えば/app/project/1/dashboard.jsfみたいなURLを使いたいって時に/app/project/{projectID}/dashboard.jsfみたいな感じにできない。
できるかもしれないけど方法見つけられなかった。
じゃあGET使うかってことで/app/project/dashboard.jsf?projectID=1ってすると、とあるプロジェクト一覧のとあるタスクページを見ようとした時にこうなる。
/app/project/ticket.jsf?projectID=1&ticket=2
これが気に食わない感じ・・・

今日うらがみがJavaまわりのWebフレームワークを知りたい会行ってきて色々話し聞いた感じSpringMVCがよさ気だった。

コード例としてはこんな感じ

@Controller
public class SayHelloController {
    @RequestMapping("/hello/{name}")
    public String sayHello(@PathVariable("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello";
    }
}

やりたいことが解決出来たねやったね。
テンプレートエンジンにThymeleaf使えばデザイナも多分苦しまないだろうし、こっち使えば問題解決だし乗り換えるかな?
けどPrimeFacesなくなるからajax自分で書かないといけなくなるんだよね。JS書くの苦手だから出来る限りフレームワークに頼りたさある。
Springいろいろ試してみてから移行考えてみることにする。

JJUG CCC行ってきた

人が多かった。
参加者が1000人超えてるとかで東京のイベントの規模の大きさに驚いた。

いくつかセッション見てきて、面白かったのがgroovy
groovy、思った以上に良い。Gradleのbuild.gradleでなんとなくで書くくらいしか使ったことなかったけど、XMLの操作やエクセル操作がかなりやりやすそう。
JavaSEでそういった操作をしようとしたら結構面倒なので、これからgroovyで書くって感じでも良さ気だなと思った。

GS CollectionsのセッションはJDTの時より詳しくやってた。とりあえずGS Collections Kataをクローンして始めようと思ったけど、とても時間かかってる。クローンできたらまた別の記事で紹介します。

とりあえず7日から12日の今日までのそこそこ長い期間東京にいて疲れたので休みたい。
某氏に秋も来るよね?って圧力かけられたけど多分行けないと思います。

JavaDayTokyo2015行ってきた

日本のJavaオタクのお祭りのJavaDayTokyoに行ってきました。
JavaDayTokyoに参加するのは初めてなんですが、今年はJava生誕20周年ということでかなり気合がはいっていたそうです。

前日の夜から東京に入ってイベントに向かったのですが、イベント開始が9時半ということで通勤ラッシュにぶつかって見事に遅刻しました。
基調講演最初から見たかったなぁ・・・


基調講演

基調講演の会場がこんな感じ。3階席からだとステージよく見えない・・・。
2015-04-08 10.24.07

ソフトバンクの店員で有名なペッパー君のSDKの話やJavaCarのデモとかの話やってました。
Java SE 9は来年あたりらしいという話もでてました。


昼飯

基調講演終わった後はnoko氏が近くにいたので一緒に昼食を食べたあとJavaグッズとオライリー本を買いに行きました。
Tシャツ2枚とJavaリュック・Dukeマグカップを購入。今年はJavaリュックとTシャツでキメるのが熱い!
写真とったけど、なぜかアップロード出来ないのでまた後日。

展示ブースではサムライズムでシールを頂きました。


Lambdas and StreamsAPI

午後最初のセッションです。
ここでうっかり休憩時間が13時30分まであると勘違いしていて20分ほど遅れて見ることになりました・・・。
内容的には、これからStreamAPI始めようとしている人向けという感じのセッションだったので、後半から聞いてても問題ない感じでした。


ゴールドマンサックスのJavaへの取り組み

午後2コマ目のセッションです。
関西のイベントの懇親会できつねさんに「ゴールドマンサックスすごいよ」といった話を聞いていたのでいってみました。
会社の話はそんなに無くて、GS Collectionsというライブラリの話が中心でした。

スピーカー曰く「StreamAPIを超えるライブラリだ!」とのこと。
学習環境も充実していて、プロジェクトのテストケースを通していく形で学習できるとか。
リポジトリは多分これ
GS Collectionsに関しては実際触って改めて記事かくと思います。


Nashorn in the future

午後3コマ目のセッションです。
Nashornのバージョンアップとかの話だった気がする・・・。あまり頭に入ってないごめんなさい


CDI and EJB – JavaEE alignment and strategy

午後4コマ目のセッションです。
最近JavaEEも触り始めたので行ってみました。
EJBとCDIのどちらを使えばいいか、どのような役割をもっているのかといった感じのセッションでした。

聞いた感じの僕なりの解釈ですが、JSFとEJBの間のレイヤーとして使うといった感じっぽい?


Java and The Internet of Things For Automotive Applications

最後のセッションです。
Javaを使って車やセンサーから得られる情報を表示するハードを作った話でした。
ハードの制御まで手をだすと色々とやれることが広がるので、僕もやってみたいと思いました。
とはいえ実際手を出すとお金が溶けそうだ。


20周年記念セッション

弁当と飲み物と解答用紙が配られて、弁当を食べながらJavaのクイズを答えたりする感じのセッションでした。
最初のJavaの前の名前は何?(答え:Oak)とかは答えられたんですが、3・4問目あたりからはもうさっぱりでした・・・


JavaDayTokyo Night Party

JavaDayTokyoが終わってからは会場を移動してナイトパーティーがありました。
Dukeのケーキ登場が出たり、Javaパフォーマンス本(寺田さんとcero_tさんのサイン付き しかもかわいいDukeのイラスト付き!)を頂きました。
これも写真とったけどアップロード出来ない・・・。また後日貼ります・・・。

次の記事は11日にあるJJUG CCCの記事になると思います。

JavaFXのListCellで非同期処理して失敗した話

Javaビーム工房のタイムラインにListView使っているんだけど、画像の表示やリプライ先の表示とかで非同期処理して表示するセルがずれる問題があった。(というか今も現在進行形で発生してる
その原因がListCellの中で非同期処理してるのがまずい。
どんなことが起きているかというと、リプライ先表示で説明するとこうなる。
リプライ先取得開始(非同期処理開始)→新しいツイートが来て表示するべきオブジェクトが変わる→新しいツイートのリプライ先はキャッシュされていたので先に終了→遅れて最初のリプライ取得終了→上書きされてずれる

解決方法としては、現在ListViewのItemsに入れている型がStringとかのフィールドを持つクラスなんだけど、これとは別にPropertyのフィールドだけを持つクラスを作成して、それをItemsに入れるのが良いと思う。これならプロパティが変更された時にListCellで変更を検知して表示内容を変えれる。きっとこれで解決のはず!

簡単なサンプルとしてプログレスバーを表示するListViewのサンプルを作った。
間違いや他の解決方法アレば教えて下さい。

サーバーサイドジャバ始めた

by orekyuu 0 Comments

最近はじめました。
僕はJavaFXとかマイクラみたいなJavaSEしか触ったことがないんだけど、学校の演習でサーバーサイドでなにか作ることになったのでサーバーサイドJavaに手を出してみることにしました。

JavaEE7とかPlayFrameworkとかいろいろ勧められたけど、JavaEEはGlassFishの設定面倒だしjar叩いて起動できるようにしたかったので少し触ってやめて、PlayFrameworkは良さ気だったけどチームで作ることが前提になっていてScalaとか覚えてくれないだろうなということでこれも候補から除外・・・

何か良さそうなのないかなといろいろ試してみたんだけど、SpringBootとか結構良さそうだったのでそれを選択。
とはいえ情報が少なめなのがつらい・・・。どこかに情報まとまってないかな。

少し触った感想としてはJPAすごい使いやすい。JSF最高って感じ。
これから進捗あった時とかは記事にすると思います多分。

富山でぶりしゃぶ食べてきた話

by orekyuu 0 Comments

富山のぶりしゃぶ勉強会に行ってきた。

今まで参加したものと比べると結構特殊で、朝からセッションが始まって終わってから懇親会して宿泊って流れだった。
夜行バスで行ったのでなかなか眠れなくてセッション中ところどころウトウトしてしまったのが無念・・・
セッションは面白そうなのが結構多くてどちらを見に行こうかすごく悩んだけど結局すべてJava会場で見てました。
僕が話してたセッションの裏でやってたVisualStudio2015の話すごい気になってた!できれば全部見たかったなぁ・・・影分身したい人生だった。

その後の懇親会ではブリしゃぶを堪能。


すごいおいしかった!

二次会では寺田さんにJava puzzlerのスライドを見せてもらってJavaのクイズを解いて盛り上がりました!
面白かったので解いて欲しい!
あとは面白い動画を見せてもらったので貼っておきます。

Concurrency Utilitiesをきちんと使えばこんなにCPUを効率よく使うことができるんですね。
まさかThread生で使ってる人はいませんよね?(書き直しながら

宿泊して楽しむタイプの勉強会だったのでいろいろなエンジニアの方と会話出来たのは非常に楽しかったです。
来年も行きたい!よろしくお願いします!