日々雑感的な日記

思ったこと考えたことを書いていく。IT系の話題が多くできればいいな

JAXPを簡単に扱うコードを書いてみた

xSchemaを作っている際、JAXPを簡単に扱えるコードを思いついたので、まとめてGitHubに上げてみた。

https://github.com/inomoto-hironobu/jaxp-helper

今のところはラムダを使ってDOM APIを簡潔に扱えるようにするコードが中心になる。というか、SAXをラムダを使ってうまく扱う方法が思いつけてない。

とにかくにも、今の時点でもDOM APIをかなりうまく扱えるコードになっているので、今後に期待してもらいたい。

Stream APIでFizzBuzzに挑戦したらなんだこれは

StreamAPIの勉強のため色々やり方を探していたら、ふとこの記事が目に入った。

forやifで書くアレをStream APIで書く - Java EE 事始め!

ここで文字列結合をしているコードがあったので、コメントでそのことを指摘してみた。
ただ、それだけではあれなので、自分なりに作ってみた。
それがこれだ。

IntStream.rangeClosed(1, 40)
	.filter(val -> {
		if(val % 15 == 0) {
			System.out.print("FizzBuzz");
			System.out.print(",");
			return false;
		}
		return true;
	}).filter(val -> {
		if(val % 5 == 0) {
			System.out.print("Buzz");
			System.out.print(",");
			return false;
		}
		return true;
	}).filter(val -> {
		if(val % 3 == 0) {
			System.out.print("Fizz");
			System.out.print(",");
			return false;
		}
		return true;
	}).filter(val -> {
		System.out.print(val);
		System.out.print(",");
		return false;
	}).count();

な、な、な、なんだこれは―

なんというか、もう…。
いや、やり方としてはこれが正しいはずだと思うのだけど…。
はあ。

世界を変えるコードを創った、かもしれない

先日も書いた通り、JSONスキーマXMLで表現するということにチャレンジししてみたのだが、思いのほかうまくいった。これはそれを処理するJavaコードと一緒にGitHubにあげている。

github.com

この中のsrc/main/resources/xjsonschema/にスキーマXML Schemaを置いている。

ただ、問題としてはどの程度の表現力を持たせるかということで、どの方向性に行くかで悩んでいた。シンプルさを重要視するか、多機能性を追求するか。

両方創る

この答えは、2つ作るということで解決した。つまりシンプル・イズ・ベストなスキーマと、多機能性を重要視するスキーマの両方を同時に開発していくことにしたのだ。とりあえず多機能性バージョンはTypea、タイピーと名づけ、シンプルバージョンはTypeb、タイペブと名づけた。

これによって唯一絶対の真理を追究するというおおよそ人間で成しえないことをすることは避けられた。そして、これによってとてもいいことが起きた。

シンプルさを考慮したスキーマ、タイペブが完成したのだ。というのも、シンプルであるがゆえにこれ以上付け加える要素がないので、これで開発終了となった。

タイペブは世界を変えるかもしれない

そしてこのタイペブだが、実用性は十分にある。まずはnpmで使われるpackage.jsonがあるとする。とりあえずこんな感じで。

{
  "name": "hoge",
  "version": "0.0.0",
  "description": "JSON用のスキーマのサンプル",
  "main": "src/js/main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "http": "http-server",
    "build": "node src/js/main"
  },
  "repository": {
    "type": "git",
    "url": "https://hoge.com"
  },
  "author": "ほげ",
  "license": "MIT",
  "bugs": {
    "url": "https://hoge.com"
  },
  "homepage": "https://hoge.com",
  "devDependencies": {
    "typescript": "^2.2.1"
  },
  "dependencies": {
    "@types/jquery": "^3.2.1",
    "babel": "^6.23.0",
    "babel-cli": "^6.24.1",
    "eslint": "^3.15.0",
    "jsdom": "^11.1.0",
    "vue": "~2.1.10",
    "vue-router": "2.4.0"
  }
}

そしてこれのスキーマをタイペブで表現する場合はどうなるかというと、こうなる。

<?xml version="1.0" encoding="UTF-8"?>
<json-schema name="npm.package" xmlns="https://www.json.org/typeb">
	<string name="name" />
	<string name="version" />
	<string name="description" />
	<string name="main" />
	<typed-object name="scripts" type="string"/>
	<object name="repository">
		<string name="type" />
		<string name="url" />
	</object>
	<string name="author" />
	<string name="license" />
	<object name="bugs">
		<string name="url" />
	</object>
	<typed-object name="devDependencies" type="string"/>
	<typed-object name="dependencies" type="string"/>
</json-schema>

実際のpackage.jsonはもっといろいろ要素があるのだろうけど、それを表現するのはそれほど難しくはないだろう。そして、package.json以外の、世界にあまたあるJSONスキーマとしてはほとんどの場合タイペブで事足りるのではないだろうか。現在開発されているJSON Schemaはパッと見た限り複雑になりそうなので、それに比べれば一般的には書きづらいとされるXMLでもこれならほとんどのITエンジニアならスラスラと書けるだろう。

後は検証するプログラミングコード

この単純さはスキーマを表現するプログラミングコードを作りやすいという面でもメリットは大きい。実際試しにJavaで書いてみたのだけれど苦も無く書けた。もっともプログラムコードの書き方が特殊だしあとで大きく変える可能性はある。しかし、なんにせよコードを書きやすいというところは変わらないはずだ。
そして、後は検証するコードを書きたいのだが、ここで苦労が大きそうだし、一人でやっていくのは難しい。これは世界を変えるコードであるという絶対の自信があるが、協力者が必要だ。

JSONのスキーマを書くXMLのXML Schemaを書いた

以前からJSONスキーマXMLで表現できないかということを考えていたが、ここ数日でなぜか突然、こう書けばいいんじゃないか、というアイデアが降ってわいた。しかも、それを実際に使って検証するためのコードをJavaでも書いた。

そして、さっそくGitHubリポジトリを作りアップしてみた。

https://github.com/inomoto-hironobu/xjsonschema

タイトルを見ただけではよく分からない人に説明すると、JSONのデータがある一定の形式になっているかどうかを検証するためにはスキーマが必要で、そのためにJSON Schemaというのが考えられているそうだが、私はこれをXMLで書くといいのではと考えていた。で、その(XMLの)スキーマとしてXML Schemaを選び、書いてみたということだ。

えーとつまり、JSONスキーマXMLXML Scheamを書いた、のだけど、やっぱり分かりづらい。

ともかく、JSONスキーマについてはよくできた感触があるのでかなり自信があるのだが、このコミットログを見てほしい。

https://github.com/inomoto-hironobu/xjsonschema/commit/18a25e5f9e1247af9f3a30e77ac1e4a665b883ff

まあ、なんというか限界だった。途中の、スキーマインスタンス化するコードまではうまくいったのだが、検証するコードがめちゃくちゃになっている。

とてもじゃないけどうまくいく未来が見えない。なので、誰かに手伝ってもらいたい。

スマートフォンと腕時計

私は今年に入って腕時計を買った。1万円の高くもないが安物でもないもの。

それまではスマートフォンで代用していた。とはいってもいわゆるガラケーの携帯電話を持ちながら腕時計をしていた時期もある。しかし、安物の腕時計をしていたせいか、すぐに壊れてしまうことを嫌がって腕時計をしなくなっていた。

それからもう何年も経ってからまた腕時計を買って使うようになったのだ。なぜか?それはスマートフォンの電池がすぐになくなってしまうからだ。スマートフォンを時計として機能させるためには電池を気にしなくてはならない。それが意外とストレスになっていることに気づいたのだ。スマートフォンは高機能の分、電力消費が大きい。充電に気を使い、電池残量に気を使い、モバイルバッテリーを用意することに気を使い、という生活に耐えられなくなった。

しかし、腕時計を買ってからはそれらのストレスとは無縁になった。時間を見るときは必ず腕時計を使う。気を使う要素はほぼ皆無だ。それにかっこいいし邪魔にもならない。

今の時代、今どきの若い人はすべてをスマートフォンで済ませることが多いかもしれないが、少なくとも腕時計は用意しておいた方がいいと断言できる。高機能でなくても長持ちし、なるべくかっこいいもの。値はその分張るが、その効果は大きい。

スピーチ記事を通してやりたいこと

inmthrnb.hatenablog.com

先日スピーチ記事を上げたが、このことについて今後どうやっていくかを簡単にメモ。

 

結論からいうとITの事業の内容の理解は求めていない。
自分としては課題を見つけ、それに対して分析し解決策を提案できる能力を見てもらいたい。
つまり自分の能力と努力、解決策としてITの知識を持っていることのアピールができればそれでいい。
結果として起業できなくても、その過程で人脈が広がり、自分の能力を広く伝える効果があって就職の幅が広がると期待している。
スピーチ記事の共有が広がったら私の気が楽になり、周りも気が楽になると思っている。

私から世界へ

私から北九州へ

以前に記事を書いたとおり私は北九州で生まれ長年ここに住んでいた。そして最近はIT企業を起ち上げたいと思うようになった。なんといっても住んでいるところのなるべく近くに職場があった方がいいし、錆びれた町をどうにかできないかという気持ちがなぜだか強くなっているからだ。

愛着があるからなのか何なのかは分からないが、とにかく自分が周辺に合わせる、という発想がどうにも気に入らなくなっている。つまり、とにかくより人がいるところへ、という発想。そうではなくまず自分の周辺を変えたいという気持ちが湧き出て止まらなくなっている。

今はITの時代で本来なら場所は重要ではないはずだ。何かきっかけがあれば活気づく要素はある。住むのにちょうどいい要素がそろっているのは実際に私が実感している。北九州で何かできないかと動いている人は数多い。これはチャンスではないか。

北九州から福岡へ

福岡市は元気だ。福岡県といえば福岡市でのイメージを描く人が多いのではないか。ITでの活躍を夢見ている私個人の視点から言うとIT産業が強くなっている。以前から福岡市での就職も頭をよぎっていたし、実は以前に福岡市でIT系の就職をしないかと誘われたこともある。その時は一人暮らしが難しいから断ったのだが、一人暮らしに挑戦してみるべきなのかずっと悩んでいた。

ただ、自分が周りを変える、という気持ちが強くなった今、もう迷いはない。北九州で仕事をし北九州を変える。そして、福岡市と並んで福岡県をITで盛り上げていきたい、東京が何もかも中心な今の日本を変えたい、そういう挑戦がしたい。

福岡から日本へ

福岡は福岡市を中心としてIT産業で元気に動いている。もはやIT分野に限れば東京をいつか追い抜かすのではないか。福岡に住んでいると東京とはまた違って視点で世界を意識する。アジアの玄関口といわれることもある。今後はここが大きな役割を担うだろう。

日本から世界へ

ITといえばアメリカ、というのが多くの人の印象だろう。AmazonGoogleAppleMicrosoft、多くの世界的なIT企業はアメリカを中心にしている。そもそもがITの発達はアメリカを中心に起こってきたのであたりまえの話だろう。でも、それはずっとなのだろうか。IT界では英語が共通語のようになっているがそれもいつまで続くのだろうか?常識はいつまでも続かない。

そして、私から世界へ

思えば広大なネットで私は様々なことを経験した。ネット越しで得られる経験はもしかしたらたいしたものではないのかもしれない。しかし、ネットでしか経験しえないものはたくさんあった。世界をつなぐ、IT、インターネット、それは私を大きく変えたし、これからも大きく変えていくだろう。

でも、その一方的な流動は終わらせたい。今度は私から世界へ、変化を起こしたい。