韜晦日記

韜晦日記

Rietveldよりもプログラミングメインになりつつある

Rietveld解析初心者による備忘録とつぶやき

Javaを取り巻く環境が不穏なようで。

どうも。最近、研究室の先輩がRietveld解析をやりたいと言っており、フリーソフトではRIETAN-FPしか触ったことがなかったのでRIETAN-FPを薦めました。従ってこのブログが見つかってしまうのも時間の問題に思えます。非常に困った。まあ、諦めます。

Java、始めました。

学部の時に制作したRIETAN-FP自動実行用マクロ「RietRun」ですが、或る深刻な問題を抱えています。
RietRunはExcel上で動作するマクロであり、某競合ソフトと同じであります。このため、著作権的に侵害に当たらないかが心配の種であります。
Excelは入力画面がセルによって区切ってあり、より記入しやすい方法を模索すると必然と似たような画面になるかと思います。
だって、(x, y)データのグラフの系列だって1列目にx、2列目にyを記入しますよね。これと同じです。
そんな訳で、いろいろ試行錯誤しましたがどうも致命的に似ている箇所が存在するわけです。
それが解析シーケンスの入力画面です。にはstep数, には精密化パラメータを入力するようにしてあります。
この点に関してはほぼ一緒ですね。その入力画面には某競合ソフトにはない機能も取り入れており差別化を図っています。
しかし、このマクロソフトの配布や商品化にあたってはこの辺をつつかれると非常に居心地が悪いものです。別に商品化しようとは思っていませんが。
従って、完全にExcelから独立したソフトの開発が急務となるわけです。

そこで目を付けたのがJavaであります。
Javaはプラットフォーム依存がなく、Windows, MacOS, Linux上でも動作可能な言語となっております。
JavaJava仮想マシンという方式を採用することで、ソースコードJavaバイコードと呼ばれる中間的な言語に置き換え、それらを記録したクラスファイルを生成します。クラスファイルはプラットフォームに依存しないため、様々なOS上で動作するわけです。

これに対して通常の言語はコンパイル言語とインタプリタ言語に分類され、どちらも環境依存が比較的強いものです。
コンパイル言語ソースコードを機械言語にコンパイル(翻訳)し実行します。コンパイルと実行の2段階で漸く使える訳ですが、その分動作は高速です。
しかしながらコンパイラや機種に依存する傾向が高いのが特徴です。
インタプリタ言語ソースコードを1行1行読み込みながら実行する形式で、コンパイルを不要とするので開発はかなり早く進めることができます。しかしながら実行速度はコンパイル言語に劣ります。また、インタプリタ言語はソースコードを1行1行読み、実行してくれるソフトが場合によっては必要になることも問題の一つです。

RIETAN-FPはWindows版とMac版があります。Javaでの開発を行い、Windows, Mac上で問題なく動作すれば少しは需要があるでしょう。
ということで、先日からJavaでの開発を始めている訳です。
Javaで開発するからといってExcelの方のサポートは打ち切りません。ソフトが完成したら終わりにしますが。すぐには完成しないでしょう。

Java界隈に忍び寄る不穏な空気

Javaでソフトウェア開発を行うと決めてから、いろいろと周辺調査をしていましたが不穏な空気が感じられるようになりました。
まず第一に互換性の問題です。
Javaで開発する為にJavaでいろいろ調べていたところ、JavaにはJava7, Java8, (Java9), Java10とバージョンによる種類があるようです。
基本的には同じようですが、そこはやはりアップデートですので互換性の問題も出てくるわけです。更に、Javaは本来オブジェクト指向という設計方針を掲げていましたが、現在主流?のJava8では新たに関数型プログラミングラムダ式という記述法を採用してきたのです。
これまで、オブジェクト指向の設計を考えていたのですがラムダ式の登場で私は混乱しています。
ここで更に、今年?に入ってJavaの提供元であるOracleJavaの有料化に乗り出したのです。
これまで無償でサポートを受けられていたJavaですが、このJava8も2019年1月までしかサポートを受けられなくなるのです。
Java8で開発しても配布が難しいことになるかもしれません。

じゃあ、Java9, Java10使えばいいじゃないか。という話ですが、最近リリース(2018年3月)されたJava10は2018年9月にサポートが切れ、Java9に至っては既にサポートが切れている始末です。
今後OracleJavaを6ヶ月ごとにアップデートする予定だそうです。こうなると開発しているうちに新しいバージョンにあがり、対応しているうちに、、、なんてことになりかねません。

いったいJava初心者の私はどうすれば良いのでしょうか。
Java以外の言語に乗り換えるか、Java8が2020年までなんとかサポートされるかもしれないのでそれに望みを託すか。
開発途方から暗礁に乗り上げそうであります。

f:id:tanisuke_str:20180510235349j:plain
最近、雨の日が続き、春の陽気はどこへやら。開発にも影を差しはじめています。。。