サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
shinsan.hatenablog.jp
ソースコードは一つだけ。設定ファイルは1行追加するだけ。それですぐにJAX-RSを動かせる。 JAX-RSはわからなくても大丈夫。JavaSEなのですぐ確認できる。 GradleまたはMaven環境さえあればよいのでNetBeansに限らないけど一応NetBeansで説明していく。 Gradleまたはmavenの環境を用意する NetBeansであればGradleはプラグインを入れる必要がある。今回はGradleでやってみる。 メニューの「ツール」−「プラグイン」から入れる。 プロジェクトの新規作成 メニューから「ファイル」−「新規プロジェクト」を選ぶ。 カテゴリで「Gradle」を選びプロジェクトは「Single Gradle Project」を選ぶ。 依存ライブラリの追加 プロジェクトツリーからBuilde Scripts/Project/build.gradleを開く。 以下の部分が
久々にだれでも気軽に使えそうなJavaEEのパーツが出てきたようなので、自分で動かしてみる。 まずJAX-RSを動かす とりあえずMVC1.0のセットアップなどは以下を参照。 http://masatoshitada.hatenadiary.jp/entry/2015/03/31/220509 まずはベースとなるJAX-RS部分がちゃんと動くか動作確認する。 package com.shingames.mvc1.ozarchbs; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("hellojaxrs") public class HelloJaxrs { //通常のJAX-RS @GET @Produ
キクタローさんから「Javaエンジニア養成読本」という本をいただきました。ありがとうございます。 というわけで、JavaEEがらみ、キクタローさんのエントリに乗っかる形の記事を書いてみました。 実はJavaEE方面のエントリを書くのは今年初めて、去年の夏以来だったりします。かなり間が空きましたね。時間がほしいです。誰か仕事手伝ってください。バイトとかいないかねー。 この間にリリースされたものにSpringFramework 4があります。もうすぐでてから1年で、そろそろ使っても問題ないころ合いだと思います。 また、政治面の問題でSpringを使わなければならないというところもかなり多いと思います。JavaEEの技術を使ってみたいと思ってもフルの機能に乗っかるわけにはいかない状況もあるでしょう。 しかし、JavaEEを構成する要素の中でも、もっとも人気の高いJAX-RSならば組み合わせて利用
よねのはてな - 株式会社Abby 社員募集 http://d.hatena.ne.jp/yone098/20141113/1415840694 こちらに書かれている通り、現在Abbyでは技術者募集です。もう少し具体的に書いてみます。 先に結論書きます。 「Java技術者が”大至急”ほしいです。」 ですので、ダイレクトにJava技術者募集と書きました。 Java技術者とありますが、Javaが第一言語である必要はありません。Javaが使えればいいだけです。特別めちゃくちゃ高スペックを望んでいるわけではありません。ふつうにコードが書け、普通に会話が成立すればいいのです。基本客先常駐などはしていませんし、顧客との打ち合わせ、納品もほぼ米林が行っているため、9割9分私服で構いません。自分は10割ですが。スーツ捨てたので。さらに言うとジャージも多いです。 どんな感じの会社なのかは前にも書きました。ま
6/1から株式会社Abbyに就職しました。 いままでは個人事業主としての取引先でした。 Abbyとしてチャレンジする大事な仕事があり、それに集中して仕事をするため、就職を決意しました。 また、真に集中するために会社の近くに引っ越しをする予定です。通勤は魂と体力削られるので。 募集しています 株式会社Abbyではプログラマを募集しています。コードを書くのが好きな人、誠実に書ける人を募集しています。 ハードルが高い高いと言われまくっているのでこれだけだとだれも募集しませんね。もう少し噛み砕いて、Abbyがどんなところなのか書いてみます。5年半近くはいるのでそれなりに見えているとは思います。 スキル的なこと 募集要項にあるとおり、1つの言語をそれなりに使えること、が第一条件だとは思います。好きな言語がある、相性が良い言語があるってのは大事だと思いますし、すべての言語が同じ習熟度ということもないで
あのエントリはRoboVMだけソースを載せたのでRoboVMがメインに感じてしまわれた方が多いようですが、libGDX最高だよ、というエントリです。メインはそっちです。 おおざっぱに言ってしまえば、iOS版の作成にはRoboVMの力は必須でしたが、なければAndroidやJavaSE版などに特化しても使い続ける、そういう意図で最後のところ書きました。libGDXがRoboVMに対応したというだけでもあります。もちろんRoboVMもとてつもなくすごいですが。AndroidもRoboVM経由で出力できたら快適なんじゃないの?というくらいのものですので。 Androidスマホ+DalvikではRoboVMで出力したバイナリに滑らかさで勝つのはかなり大変なのです。OS4.2以上、クロックも2GHzクラスでやっとiPhone4sにおいつくくらいの動きでしょう。5並はきっついんじゃないかなー。5s並は
業務系Java屋がMixiアプリをリリースするまで Javaしかかけないおいらがmixiアプリ第2弾をリリースするまで mixiアプリ第3弾「コレオススメ!」リリースするまで Javaしかかけないおいらがmixiアプリ第4弾をリリースするまで の続き。 しかし、Androidの場合、VMはJavaではないものの、言語だけはJava系なのでインパクトがないタイトルだなw 空いた時間にちょくちょく稼げるRPG、マモノバスター2はこちらから落とせます。 今作の開発開始時期そのものはかなり前となります。 ちょうど1年前、mixiアプリ版マモノバスターが配信停止しました。 原因はmixiのアドプログラムの価格改定です。これにより、広告料は1/10以下とかになりました。 mixiで無料で配信するにはアドプログラムしかありませんのでこの金額ではサーバー代が維持できません。そこで泣く泣く停止しました。 次
今回の内容は前回よりだいぶましだぞ・・・。 業務系Java屋がMixiアプリをリリースするまで Javaしかかけないおいらがmixiアプリ第2弾をリリースするまで mixiアプリ第3弾「コレオススメ!」リリースするまで Javaしかかけないおいらがmixiアプリ第4弾をリリースするまで JavaしかかけないおいらがAndroidアプリをリリースするまで の続きになります。 正直実装的にはmixiアプリ第2弾のエントリ(GWT+Flash+JavaSEとの互換レイヤでサクサク開発)が飛びぬけていると思いますが、それ以来くらいのインパクトはあると思います。 長文です。 iOS版を開発するぞ マモノバスター2のAndroid版は無事だせました。読んでない人は上に並んでる過去のエントリを読んでみてください。 AndroidはJavaSEと同じJava言語ということで、JavaSEと互換のレイヤーを
JPA 2.1ではついにストアドプロシージャも標準で使えるようになった。 今までは実装依存のコードで使ってはいたが。 今回もストアドを簡単にJavaのコードで作れるDerbyのストアドで。ストアドになるともう組み込みモードだと意味がないレベルだけど。 引数に文字列、戻り値に文字列を渡すストアドの設定をする。コード全部見たほうが早いと思うので一気にのせる。Derbyのoutなどは配列を使っているのが注意する点か。引数で渡して戻り値を複数返す方法ということで割り切り方としてはまぁいいのだろう。 public class DerbyEmbedded3 { //ストアドの実装 public static void hello(String in1, String[] out1) { out1[0] = "Hello " + in1; } //main実行 public static void ma
JPQLなどJPAの機能ではカバーできない、RDB固有の機能として関数がある。countやsumなど基本的なものはあるが、それから離れるとダメだ。かといって無駄に関数を増やしたところでユーザー定義関数などもありとてもカバーしきれない。 というわけで、JPA2.1ではついにユーザー定義を含めて関数を自由に呼び出せるようになった。 Entity @Entity @Access(AccessType.FIELD) public class JoinEntity implements Serializable { @Id public int id; public String name; public JoinEntity() { } public JoinEntity(int id, String name) { this.id = id; this.name = name; } } idとn
JPAのバージョンは2.1と前バージョンから0.1しか上がっていないが、非常にいいものが追加されている。 2.1の目玉機能としてはストアド呼び出しが可能になったとかあるのだろうが、基本ストアド使いたくないのでおいらは無視する。 で、地味・・・ではなくド派手なのにあまり語られない新機能もある。 それがコンバータだ。やっときた! これはどういうものかというと、たとえば、DB上には文字列で保存をして、Entity上はIntegerで保持するといったもの。 もちろん、ラッパクラス以外でもふつうに使えるので、アプリケーションに合わせて積極的にコンバータを作っておくと既存のDBを変更せず、かといってそれにEntity操作が引きずられない、非常に良いものが出来上がる。 コードは昨日のエントリのJPA2.0のサンプルをもとに変更してみよう。 addressという文字列型には都道府県が入っていたので、そこに
2.2ではカスタムコンポーネントをすぐに作成、実装することができる。 XMLとかなにもいらない。 やっと来たかーって感じ。 カスタムコンポーネントのコード。 package jsf; import java.io.IOException; import javax.faces.component.FacesComponent; import javax.faces.component.UIComponentBase; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; @FacesComponent(value = "custom.aoi_blink" ,tagName = "aoi_blink" , createTag = true) public class Blink
JSF 2.2はHTML5に対応したのもポイントになっています。 というか、柔軟性はかなり意識してきていますね。 HTML5ではフォーカスの設定やプレースホルダ、カスタムデータ属性など属性による設定が柔軟に使える必要があります。 そして今後もおそらく属性はどんどん追加されていきますが、そのすべての設定をJSFがサポートするのは骨が折れます。というか、きりがありません。 というわけで、JSF2.2は属性を簡単に設定できるようになりました。 まず基本 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:p="http:
Servlet 3.1は非同期などまぁとっつきが悪いのが目玉です。 しかし、お手軽かつシンプルによくなったものが追加されています。 それはPartです。 え?Part自体はすでにあるって? http://d.hatena.ne.jp/shin/20090723/p1 たしかに、ちょうど4年くらい前に紹介してますね。もう4年もたってるんですね。そりゃJavaEE 6はかれた旧世代の環境だわー。誰もが知っていて当たり前の技術だわー。 ですが、当時からパワーアップしているのですよ、こいつも! サーブレットかくのたるいので、UPLOADが対応したJSF 2.2を使います。すごいらくちんにかけますよ。 テンプレート 昨日のエントリをすこしいだけいじります。今回は先にテンプレートから。 <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUB
まずはJSF2.2のすげーいいところを軽く書く。簡単で効果が大きいもの。 解説用ということで前提となる知識を減らすためにCDIもなにも使わない。AJAXもなにもつかわない。 マネージドビーン package jsf; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.bean.ViewScoped; @ManagedBean @ViewScoped public class Hoge { String text = "初期値"; public String action1(){ text = "action1"; return null; } public String action2(){ text = "action2"; return null;
なにが「超入門」かというとおいらにとって超入門。 まずはJavEE7なアプリを起動させることを今回の目標にする。 サンプルは過去の例を見ても大げさすぎて、でかすぎて把握しにくいので無視で。 適当にフィーリングで行き当たりばったりでいい。JavaEEとはそういう感じのゆるい誰でもお気楽極楽に触れるものですよ。肩ひじ張るようなものではない。 しかし、「NetBeansタグ」すげー久々だのう。 ダウンロード ダウンロードはここから。 https://netbeans.org/downloads/ JavaEEをえらぶ。このへん。 インストール ダブルクリックでインストーラ起動。適当に押していけばOK。Glassfish 4もついてくるのでチェックを外さないように。 別途ダウンロードする必要もないのでインストーラ版がおすすめ。ダウンロードもIDE上で完成するので別にいいけど。 とにかくすぐに確認が
次の数年を支える技術の登場です。 RI(参照実装)であるGlassfish 4がでています。 また、Glassfish4を同梱したNetBeans7.3.1も出ていますので、試す場合はJavaEE版のNetBeansをDLするのが一番手軽でよいでしょう。 注目する技術はやはりJAX-RS 2です。フィルターやクライアントなど今までは実装依存の技術が必要でしたがこれが標準化されました。これにより、サーバーのみならずHTTPクライアントもApacheHttpなどではなくJAX-RSを使うのが普通になるでしょう。フィルター等もはいったことによってサーブレットAPIを扱わないでほぼすべてのことが可能になります。 JAX-RSというとすぐRESTがどうだとか説明が出てくると思いますが、無視して結構です。こいつはアクションベースの処理>Viewレンダリングをするためのものなので、つまりWeb用フレーム
JavaでさくさくWebアプリ開発の続き たぶん前回のエントリ見た人の半分は気がついてると思うけどクラスパスとかいろいろとスキャンしたりするようなApplicationを継承したクラスはいくつも用意されている。 探し方 Application app = new と入力した状態でCTRL+SPACEを押すとApplicationを継承したクラスがいくつも出てくるのでそれであたりをつける。 単純な置き換え系 HogeApplication app = new HogeApplication(Hoge.class); を ClassNamesResourceConfig app = new ClassNamesResourceConfig(Hoge.class); にかえてもよい。こちらはClassを引数に取るほかにもクラスの名前を文字列で渡したりすることもできる。 いちいち自分で作ることもな
かなり久々の技術エントリ。 運用はお堅い重いサーバーを使ったとしても開発は軽いほうがいい。当たり前ですね。 というわけでさくさく開発する方法を書いてみる。DIコンテナはCDIやGuice、Springなど好きなものでよいが、今回は省く。軽いこともあって開発中はGuiceを使うことをお勧めしたい。注入は@Injectを使うため、開発中と運用中でコードが変わるってのは少ないはずだ。 まずはJAX-RS まず、アクションベースのWebアプリはJAX-RSを使うこと。これが基本。サーブレットAPIを使わずに開発することについては今までも書いてきた。サーブレットAPIを触らないことにより開発効率とテストのしやすさを両立できる。 こんな感じ。 @Path("/") public class Hoge { @GET @Path("add/{a}/{b}") public Response add(@Pa
今度はGPU。 現在ARM搭載チップのGPUとして使われているのは主に以下の3つ。 PowerVR GeForce Mali Adreno PowerVR 古はPC用外付け3DアクセラレータでVoodooと争っていた。Voodooを作っていた会社3dfxはnVidiaに吸収。当時ゲームを重視したかったらVoodooシリーズを使うのは割と当たり前でPowerVRは結構後れを取っていた。それでもVoodooはDirectXやOpenGLといった標準APIがスタンダードになると消えていった。 PowerVRはドリームキャストなどに採用はされたが、基本日陰ものだった。それが今ではスマホブームでかなりの影響をもつまでに。 iOSとKindlefireではこのGPUしか利用していない。そのため、チューニングが容易。 サムスンのExynosシリーズの一部、TI OMAPシリーズで使われている。Andro
スマホでつかわれているCPUのほとんどはARMというアーキテクチャ。 性能よりも消費電力を重視しているチップで、スマホ以外では3DO、ゲームボーイアドバンス、DS、3DS、PS VITAで採用されている。 現在スマホで見ることのできるコアアーキテクチャは主に以下のもの。 Cortex-A8 Cortex-A9 Cortex-A15 Scorpion Krait ScorpionとKraitはQualcommのSnapdragonに使われている専用コア。そのほかはほぼすべてCortex系と大きく2つに分かれる。 設計が違うので得意な計算とかは異なるため、特定のマイクロベンチマークでは片方がやけに数値が出たりするので注意。PCで言えばIntelとAMDのCPUみたいなもの。ただし、あちらはほぼIntelが圧倒的に有利という感じだが。 Cortex-A8 シングルコアで今となっては完全に旧世代。
※ムチについて修正しました 武器には一応特徴はあるが、基本大きく分けて片手武器と両手武器の2つがある。 両手武器のほうが攻撃力が高く、スキルも攻撃力アップなどの効果も高い。 一方片手武器は基本的な威力は劣るものの、盾が装備可能。盾は通常の物理攻撃のみならず特殊攻撃もガード可能。極めると痛恨の一撃を防ぐスキルを覚える。MP消費が大きいので使えるかどうかは職業次第ではあるが、一番いたいのが痛恨の一撃という現状では効果はでかいだろう。あと錬金の効果ものせることができるので、さらに魔法に強くしたりすることが可能だ。 なので、片手武器は多少弱いくらいでバランスが取れるといいのだが・・・全体的に武器スキルが非常にバランスが悪いのがこのゲームの最大のガンである。 理由は敵の守備力の急激な上昇などがあるが、それはまたあとで。 以下に個人的な考察を。 まずは片手武器から。 片手剣 片手用武器の中で最も攻撃力
MMORPGということでどんどんシナリオは追加されていくだろうということで完全なクリア後の評価は出来ないということで、オフラインクリアした状態、オンラインは転職できて各地うろついている状態での評価。初期メインイベントすべてクリアした後でまた評価しようと思う。 長文。 基本システムはDQ9がベース いまのところ基本職しかでていないようだが、DQ9にかなり近い。というかほぼおなじ。 DQ9のシステムはシリーズ最高傑作のため、それをベースとした10は安心できる。 各職業に装備系(盾含む)のスキル4種、職業固有のスキル1種。LVが10を超えるとスキルポイントがもらえてそれを割り振ることによってスキルを覚えていく。覚えたスキルはその職業になっている間だけ有効なものをのぞいて他の職業になっても有効。武器は装備しているときにのみ有効なので、同じ装備が出来る職業でうまく使いまわすなどといった方法が取れる。
7.1.1と3.7で比較。 IDEAはどーなんだ、と思った人、某氏がやってくれるはずですのでお待ちください。 プロジェクトツリーの見た目 左がNetBeans、右がEclipseです。 見た目はほぼ同じですね。 プロジェクト作成後何もなければ。 で、ユニットテストの作成後。 Eclipse NetBeans ここが大きく違います。 Eclipseは結構昔から大抵のIDEには標準であるテストパッケージ/ライブラリという概念がありません。ソースのルートを複数用意は出来ますが、そこまでです。 一応JUnitを利用すると自動でJUnitのライブラリをつけるか聞いてはきますので、最低限のおもてなしはなんとかしてあるといったところでしょうか。 ソースやライブラリの依存方向のミスが解決出来ないので早く実装してほしい機能No1だと思われます。 ユニットテスト 以下のコードを元にJUnitのテストケースを作
NetBeans 7.2の新機能紹介シリーズ。 おや、サービスウインドウに見慣れないものがあるぞ。 クラウドの選択・・・だと? AWSの接続情報を入力する。 追加された。 次にプロジェクトの新規作成で、Webプロジェクトを作る。 その際にTomcatやGlassfishなど選択できるが、そこでサーバーの新規追加を選ぶと…やつ(Beanstalk)が選択できる。 コンテナタイプを選択できる。PHPも選べるが、PHPプロジェクトも対応しているかはわからない。テンプレートという項目もあるが選べない模様。 追加された。 AWSの管理ツールを開くとこの時点でデプロイされているのがわかる。 リンクをクリックすると確かにデフォルトで起動していた。 こういうwarファイルらしい。 で、F6を押してプロジェクトの実行。F6をオスとメインプロジェクトのコンパイル、warアーカイブ、デプロイ、ブラウザ起動と順に
DynamoDBはSimpleDBとほぼ同様の使い勝手の低レベルAPIのほかに高レベルAPIが最初から用意されているのがポイントだ。 低レベルAPIについては前回紹介済みなのでそちらを参照。 http://d.hatena.ne.jp/shin/20120125/p1 高レベルAPIはEntityのマッピングがある。 構成は前回と同様。 テーブル名は「testdb」主キーは「id」という項目名で数値型。もうひとつが「名前」という文字列型。 マッピングクラス マッピングするクラス。プロパティ名が項目名と同一の場合ゲッターに対してのアノテーション付与は必要ない。ただし、キーの設定だけは保存時などに必要。フィールドに対しては効果がないので注意。いまどきのフレームワークは大抵フィールドでも動くからね。 @DynamoDBTable(tableName="testdb") public class
ひさびさのJavaネタ。 Amazon Web ServicesからオールSSDによる性能(キャパシティ)を自由に設定可能なデータベース、DynamoDBが発表されました。 キャパシティを自由に設定可能ってことは、一時的にバッチを走らせたいというときにキャパを上げて短時間で終わらせるとか、空いている時間に少しずつ流していくとかいうテクニックが使えそうです。また、こちらが通常の使い方でしょうが、負荷の高い夜にはキャパを上げて、あまり人のいない早朝には下げることによって運用コストを大きく減らせる可能性があります。 これはつかうしかない!100MBまでの無料枠もありますので試すにはうってつけでしょう。 というわけで、試してみたのですが、すでにSimpleDBとか触ったことがある人にとっては何も難しいとか引っかかるところとかなかったですねぇ。SDKの使い方もいつもどおりだし、テーブルとかわかりやす
やっとマモノバスターが公開されました。 マモノバスター マモノバスターの開発にまつわるお話をお聞かせしましょう。長文です。 開発の始まり このプロダクト、もともとはmixiアプリ第2弾のPONPONが開発完了した後から取り掛かっています。 PONPON つまり2月ぐらいから。それが11月末になってやっと出来上がったわけです。 間にはmixiアプリ第3弾のコレオススメ!を挟んでいますが、それは予定にありませんでした。 本来マモノバスターが第3弾になるはずだったのです。 震災・・・そして方向を見失う 開発中の3月に震災が起こりました。この後急激にやる気を喪失していましたが、開発はだらだら続けていました。 進みは遅いものの、モックはそれなりに完成していました。フォントを1から作成しておりかなり気合が入っていたのがわかります。 開発中のRPG が、もともと完成していた内容をイメージし切れておらず、
さて、JAX-RSで返すものはHTMLやTEXTだけではないはずだ。AJAXではJSONはよく使われる。これがシンプルに返せるのがいい。 JAX-RSにはもちろんそれを生成する能力はある。 JAX-RSの参照実装であるJerseyはオブジェクトをシリアライズする方法が2つある。 1つ目はJAXBを利用する方法。これは以前紹介した。 JSONはJettison経由で変換する。JettisonはあくまでもJAXBを経由、つまりXMLを経由するわけだ。そのため、無指定だと数字型もなにもかもダブルクォーテーションがついて文字列型になってしまう。かといって毎回個別に設定するのは手間だ。 そこで2つ目の方法を紹介する。 それはJacksonを利用する。 Jacksonは超高速名JSONパーサで有名なので知っている人も多いと思う。JAX-RSの依存jarにJacksonが含まれているのに気がついた人もい
次のページ
このページを最初にブックマークしてみませんか?
『しんさんの出張所 はてなブログ編』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く