JSONの構造(オブジェクト・配列)と使い方(Java)

JSONの構造(オブジェクト・配列)と、その使い方(Java)についてご紹介します。

JSONとは

JSONとは、データ交換フォーマットです。特徴としては、人間にとって理解しやすいフォーマット。さらに、軽量かつソースコード上でも扱いやすいといったことがあげられます。また、データ交換フォーマットなので、プログラミング言語の種類によらず使用することが出来ます。

JSONの構造

JSONの構造はオブジェクトと配列に大別されます。それぞれの基本構造はこのようになっています。

オブジェクト

{"name":somegoro, "age":"25"}

配列

["somegoro", "25", "man"]

また、これらを組み合わせることも可能です。

オブジェクトの中にオブジェクト

{"user01":{"name":somegoro, "age":"25"}, "user02":{"name":daigorou, "age":"28"}}

オブジェクトの中に配列

{"user01":["somegoro", "25", "man"], "user02":["somegoro", "25", "man"]}

配列の中にオブジェクト

[{"name":somegoro, "age":"25"}, {"name":daigorou, "age":"28"}, {"name":someko, "age":"18"}]

配列の中に配列

[["somegoro", "25", "man"], ["daigorou", "28", "man"], ["someko", "18", "woman"]]

こうして自由に組み合わせることが可能です。今は配列数やオブジェクト数を絞っていますが、これが膨大な数になり組み合わせも複雑化すると人間が見れたものではないですね。こういうときこそプログラムで人間の見やすい形式に変換しましょう。

変換について

JavaScriptでも自由に変換することが出来ますが、Javaを使える環境ならばJava側で変換した方がシステムとして高速かつ安定したものになります。Java側で処理する際にはライブラリを使用して処理するのが便利です。


JSONC

JavaでオブジェクトとJSONを相互変換するためのオープンソースのライブラリです。JSONIC公式サイト(http://jsonic.osdn.jp/)に使用方法とダウンロードリンクがあります。ここからダウンロードして「Javaのビルド・パス」の「ライブラリ」に追加してください。プログラム上で import すると上記で追加したライブラリが使用できます。

実際に使用しているこのお方の記事がわかりやすいです。
http://blog.codebook-10000.com/entry/20130930/1380507089



以上、「JSONの構造(オブジェクト・配列)と使い方(Java)」でした。

Android 開発するならAndroid Studio!Eclipse pluginのGoogle公式サポートは2015年度に終了

Androidアプリを開発しようと色々調べていたら、Eclipseベースの開発環境は現在の主流では無くなっているようです。私が以前、官公庁向けのAndroidアプリを開発していた2010年頃とは状況が随分と変わっているようですね。

infoQ - Google、Android Eclipseツールのサポートを終了

上記の記事を要約すると、Eclipse AndroidプラグインのGoogle公式サポートは2015年度をもって終了することが書かれています。そして、今後はAndroidの公式開発ツールをAndroid Studioとしてサポートしていくと。

では、これまでのAndroidアプリ開発環境はどうなってしまうのか。調べて見たらこれも情報が出てきました。EclipseのAndmoreプロジェクトで引き続きサポート活動は続くようです。

Eclipse Andmore

ですので、多少の間はEclipse環境のまま開発を進めてもいいかもしれませんが、ゆくゆくはGoogleが公式の開発環境と指定した「Android Studio」に移行しなければなりませんね。これからAndroidアプリの開発を始める方は「Android Studio」一択でしょう。

2010年頃のEclipse環境Androidアプリ開発はたくさんの課題があったことを今でも思い出します。起動に10分くらいかかって、やっと起動したかと思えばクラッシュして再起動なんてことが頻発していました。ベテランエンジニアでも開発に苦戦していましたし、私は当時新卒入社して数年目で、技術力不足だったこともあり開発には本当に時間がかかりました。そんな状況でしたので、プロジェクトは大赤字を記録していました。みんなで徹夜してたのが懐かしいですねぇ。

今のEclipseでのAndroidアプリ開発環境のことは詳しく知りませんが、組込み系は開発環境が重くなりがちです。これは標準化が難しいからで、専用の開発環境を作れば改善されるのではないかと思います。よって、私は「Android Studio」大賛成です。これで大分軽くなるのではないでしょうか。

よって、今回作るAndroidアプリは「Android Studio」で開発してみようと思います。

弁護士って今供給過多なのか? ~ 2012年の日記より ~

~ 2012年の日記より抜粋 ~

2012年頃、私が新卒入社した会社で4年目を迎えた年です。そんな年に私はこんなことを考えていたようです。

弁護士って今供給過多だって言う話をネット上でよくみかける。
日本弁護士連合団 基礎的な統計情報

そうなのか?
関係ない話ではないな。
正直者の弱者が損するのを防げるなんて、なんて良い仕事だ。

理不尽なこと多いものね。
今の仕事だって、濡れ衣やら、意味わからん理不尽なことたくさんあるからね。
それが、まかり通ってしまって、結局痛い目見るのは弱者。

知識が無いと、本当に弱者ですよ。
サンドバック状態の僕を助けてくれる人なんていなかった。
今ようやくすこしずつだけど、やられっぱなしじゃなくなってきたかな。
知識をつけたというよりも、もう辞めても辞めさせられても良いやって考えになったからだけど。

これ、仕事だからこういうこと思えるけど、
人生に対してこうなってしまったら死んでしまうしかないよね。
どんな状況か予想つかないけど。

そういう正直者の弱者を、悪者から守る。
守るっていうか、正しい関係性に正すだけだけど。
そういうことが仕事に出来たら最高だ。

その資格を得るのには、まずは試験勉強か!
そして、弁護士から政治家も良いね!

だいぶ当時の仕事に不満を持っていたようですね。私は入社してから3年間くらい右も左も分からない状態でした。大学では航空宇宙工学を専攻していて主に宇宙物理学を勉強していたので、システム会社に入社すれば最初はわからないことが多いのは当然ですね。

不幸なことは同期入社したほとんどの人達はシステムについての知識がある状態で、みんな非常に優秀で教えるのが下手な先輩上司でも自力で調査して課題解決できてしまったことです。これが常態化されており、即戦力でない新人はそのまま放置されていました。

即戦力でない新人でもタイプは万別で、出来るふりして適当に流す者、わからないことに真っ向から立ち向かい打ちひしがれる者、うつになる者、管理部門に異動する者。。。その中で私は「わからないことに真っ向から立ち向かい打ちひしがれる者」でした。

追いつくのはとても大変でした。同僚たちが効率よく知識を吸収できるよう理論だてられた大学教育で4年間~6年間学んだことを、働きながら学ばなければならない。かつ彼ら彼女らが仕事で身に着けた能力も追いかけねばならない。

やっと追いついたかなとなってきたのが4年目のころだったかと思います。実力がついたのは良いが、それまでの扱いは急に変わるものではなく私は「出来ないやつ」とレッテルを張られていました。会社では和を乱さぬようニコニコしていましたが、悔しくてたまらなくて毎日の勉強がさらに猛烈なものになっていったことを思い出します。

そんな状況のころ、システムの勉強に余裕が出てきたのですね。毎日猛烈に勉強しているわけですから時間はあります。システム以外の勉強もしてみようと思ったのです。そして題材に選ぼうとしていたのが「弁護士」ということですね。自分の理不尽な状況と社会の理不尽な状況を重ねて使命感に駆られていたのかと思います。

この後、実際には弁護士を目指すことなく違う方向を目指して活動を始めまるのですが、長くなってきたので今回の記事ではここまでにしておきます。それでは。

eclipse pleiades 解凍の仕方。Windows10

eclipse pleiades の解凍にちょっとしたノウハウが必要だったのでご紹介します。今回の環境は Windows10 で Pleiades All in One 4.6 を解凍しました。eclipse のバージョンとしては NEON が対応します。

ダウンロードと解凍

まずは公式サイトから pleiades をダウンロードします。ダウンロード場所は任意です。


最初はこのままダブルクリックして解凍を試みました。しかし解凍できない。解凍中にエラーが出て正常に解凍できないのです。どうやら、私が普段使用しているフリーソフトLhaplusでは解凍に失敗するようです。

色々なサイトを調査してみると、pleiadesのサイトにそれらしい記載がありました。Windows 上で zip を解凍するときの注意とあります。これによると、pleiadesはLhaplusでの解凍は不可とのことでした。そして、Windowsエクスプローラーでの解凍が推奨されていました。

解凍方法の指定

解凍方法の設定を変更するべく対象のzipを左クリックしてプロパティを確認。



続きまして「プログラム」の「変更」をクリックします。



「エクスプローラー」を選択して「OK」をクリックします。



この画面に戻りますので「OK」をクリックします。



無事にエクスプローラーアイコンに変更されました。ファイルの開く種類の変更は出来たということです。ここまではWindows10でも、それ以前のWindowsでも変わりないでしょう。

Windows10の場合

しかし、Windows10はここから少々変わっています。展開する際にエクスプローラーのタブから展開を行うのです。左クリックメニューからの展開は無くなりました。

「展開」タブを選択して「すべて展開」をクリックします。



展開場所の選択画面が表示されるので、展開場所を指定して「展開」をクリックします。


無事に解凍することが出来ました。

以上、eclipse pleiades 解凍の仕方でした。


java から HTML へのデータ受け渡しについて(詳細版)

以前、「java から HTML へのデータ受け渡しについて」の記事を書きました。
https://somegoro.blogspot.jp/2016/11/java-html.html
この記事ではざっくりした内容しか書かれていない所謂簡易版だったので、今回は内容をもう少し掘り下げた記事を書きます。

思えば上記の記事を書いたころはIT業界に久しぶりに戻ってきたときでした。プログラミングどころかエクセルの使い方もすっかり忘れていて、なんでもかんでもWebで調べていたことを思い出します。何をするにも時間がかかって、当時の現場の皆さんには迷惑をかけただろうなぁ。当時の私はまったく余裕が無かったので、強気な発言ばかりしていました。

さて、思い出すこともそれくらいにしておいて本題に入ります。
「java → HTML のデータ渡し」についてです。ここの部分のデータの渡し方は色々あるのですが、私が最も簡単だと思う方法を今日は記事に書きます。具体的にはjQueryを使います。

jQueryには、便利なデータ受け渡し処理が用意されています。代表的なのが次の3つです。
・$.get
・$.post
・$.ajax

$.get はGETでサーバにデータ送信する処理です。$.post も同じようにPOSTでサーバにデータ送信する処理。$.ajax は記述の仕方次第でGETでもPOSTでもサーバにデータ送信することが出来る処理です。私は便利なので、ほとんど $.ajax を使用しています。GETで送るかPOSTで送るかは、用途によって選択するのが一般的です。

サーバにデータを送信する処理は上記3つですが、サーバからのデータ取得はどのようにするのか。実はこれもサーバにデータを送信する上記3つの処理を使用します。どれでもいいのですが、やはり私は便利なことを理由に$.ajax を使用します。$.ajaxのブロックチェーンには、サーバからデータを取得することが出来る次の処理が用意されています。
・done(function(data) {...}
・success: function(data){...}

2つ書きましたが、どちらを使用してもサーバからのデータを取得することは出来ます。jQueryのバージョンによって推奨しているものがあるので、使用しているjQueryのバージョンを確認して推奨していう方を使用するのがいいでしょう。

引数にdataと書いていますがここの名称は任意でいいです。引数で指定した任意の名称のオブジェクトにデータが入っています。では、どのようなデータが入っているのでしょうか。それはサーバで出力したデータです。サーバ側のプログラムであるjavaでprintln で出力してやれば、上記に書いたdataに自動で取得されます。細かいことはみんなjQueryがやってくれるのですね、便利ですね。

それでは最後に通してで記載しておきます。
javascript
$.ajax({
   type: "POST",
   url: "/javaClassName",
   success: function(data){
     alert(data);
   }
 });

java
public class javaClassName {
  ...
  ...
  ...
  System.out.println(678);
}

以上、java → HTML のデータ渡しの詳細でした。

上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...