IT用語斜め読み - JFIF
(photo by Pixabay)
最近のIT用語検索トレンド
いつもお世話になってるいる IT用語辞典 e-Wordsさんの 2020年3月7日(土)のアクセスランキングを見てみると、
1位 SNS 2位 NDR 3位 サブスクリプション 4位 Web 5位 API 6位 YouTube 7位 クラスタ 8位 プロキシ 9位 LDAP 10位 SSID 11位 プラットフォーム 12位 スクリプト 13位 インフラ 14位 インスタンス 15位 JFIF
となっていました。今回はこの中で気になった15位のJFIF
についてです。
JFIFって何?
まずこれ読み方はジェーエフアイエフじゃなくて「ジェーフィフ」らしいです。
ジェーフィフ JFIF 【 JPEG File Interchange Format 】 JFIF JFIFとは、JPEG形式の画像データをファイルに記録するための形式を定めた標準規格の一つ。ファイル名の標準の拡張子は「.jpg」あるいは「.jpeg」。
JPEG形式の標準規格ってことらしいです。知らなかった。JPEGはJPEGだけなのかと思ってたけど、色々あるんですね。 符号化された画像データ本体、画像の付加情報とか、圧縮アルゴリズムの種類とか、カラーモデルとか色々取り決めしているらしい。
Exif (Exchangeable image file format)
JFIFには、画像を扱うソフトウェアが独自情報を記録するための拡張領域を作成する方法を定めているらしい。で、この仕組みを応用して、撮影時の情報(撮影日時、機種名、解像度、GPS計測による撮影位置などなど)を記録するための標準的な規格として「Exif」っていうのがあってそちらが有名。現在では素のJFIFファイルは少ないみたいで、多くのJPEGファイルはExif情報を含んだ形式となっている。
おわりに
画像フォーマット、奥深し。
Javaはつまらなくなったな
これは、Javaに限った話ではないが、最近の流れとして、プログラミング言語がどれもこれも似てきてしまっているように思う*1。 あまりに言語が似すぎてしまうと、何を選んでも大差ない、選ぶ基準は動かせるプラットフォームとか、動作速度とか、そういった部分になってきてしまう。言語を選ぶ基準がその言語の特徴的な機能や、その言語でしか出来ないことでなくなってしまうことに、ワクワク感が薄れてしまうのは私だけだろうか。
AltJava言語達
このブログの読者の皆さんならきっとご存知と思うが、JavaはJava8でついに重い腰を上げて関数型の構文が取り入れた。そのあたりから進化のスピードが加速してきており、その後はJava10で型推論が導入されたり、Java12ではSwitch式が取り入れられたりと枚挙にいとまがない。 しかしJava8が世に出る以前から、AltJava言語*2では既に取り入れられていたものが多くある。 諸事情により、Java6で長い間更新が滞ってしまっていたこともあり、その間に多くのAltJavaが栄えたのではないかと思う。
その機能をよこせ
さて、このように「公式がなかなかやってくれないから俺がやるぜ!」と名乗りを上げた多数の言語達が、その当時Javaがまだ持っていなかった先進的な機能をどんどん繰り出すことによって優位性を誇示していた。 しかし現在、Javaは貪欲にそれらの機能を吸収し続けていっており、どんどん複雑になってきている*3。 こんな状況だから、心無い開発者から「もうその機能はJava自体で使えるんだから、AltJavaはいらないよねー」と言った声が聴こえてくると、とても悲しい。 誤解しないで欲しいのは、公式に採用されたことは非常に喜ばしいことであることに違いはない。世の中に広く普及するための第一歩を踏み出したのだ。だが、それでAltJavaのことを忘れないであげて欲しいのだ。牙を抜かれたライオンのような扱いはやめてあげて欲しい。
あえて削る
上であげたようなJavaの貪欲さとは対照的な美しさ、それはシンプルであることだと思う。 JavaはJVMというシンプルなスタックマシンで動いている。コアはシンプルな方が美しい。本当に必要な機能だけを卒なく美しく提供してくれればそれでいい。それでよかったのだ。
Javaもかつては無駄な*4機能は削ぎ落す選択をしていた。だから未だにプロパティ*5を扱えなかったり、演算子もオーバーロードできないし、もちろんポインタ*6も使えない。しかし、この状況だから、そのうちJavaでもプロパティが使えて、演算子もオーバーロードできて、そしてついにはポインタが使えるようになってしまうかもしれない。そんなJavaはたぶんつまらない。 私はJavaをJava1.4の頃から使っているのだが、あの頃の不自由さが今思うと非常に懐かしい*7。
多様性の海に
とりとめもなく書いてきたが、Javaに限らず、プログラミング言語は他の多種多様な言語の様々な機能に囲まれ、影響され、磨かれて進化してきたのだ。 たとえAltJavaが衰退しようとも、太りすぎたJavaがシンプルな新言語に将来もしかしたら駆逐されようとも、それはそれで。 この弱肉強食のプログラミングの多様性を最後まで見届けようと私は思う。
参考
Java8の新機能を徹底解説!(ラムダ式、Streamなど) | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
Reactive Programming with JDK 9 Flow API | Oracle Community
[速報]Java 13が登場。ZGCの改善やSwitch式の実現など新機能。 Oracle Code One 2019 - Publickey
Windows環境にRustをインストールする
突然、RustをやりたくなったのでWindows環境にインストールしてみた。 その時のインストール手順をメモしておく。 環境やバージョンなどは以下の通り。最近インストールばっかりしてるなー。
環境
バージョン | |
---|---|
OS | Windows 10 (64bit) |
Rust | 1.39.0 |
rustup | 1.20.2 |
Cargo | 1.39.0 |
手順
インストーラーダウンロード
こちらよりダウンロード
ダウンロードした rustup-init.exe
を実行
すると、C++のコンパイラが要るよと言われるので、コンパイラを先にインストール
C++のコンパイラをインストール
せっかくなので、Visual Studio 2019の方から入れてみた。
まず新しいプロジェクトの作成を選んで
C++ユニバーサル Windows プラットフォームツールを選んで
インストール開始
インストール完了!
Rustのインストール(続き)
Rustのインストールを再開
1) Proceed with installa (default)
を選択
Rust is installed now Great!
インストール完了!
rustc --version
でバージョン確認してみる
rustup --version
でバージョン確認してみる
cargo --version
でバージョン確認してみる
ということで、Rustがインストールできたみたい
Hello World
ひとまずget startedのハローワールドまでやってみた。
cargo new hello_world
でプロジェクトが作成される
Visual Studio Codeで開いてみたところ。
hello_worldにTerminalで入っていって
cargo run
で実行できた
おしまい。
参考
Windows環境にElixirをインストールする
Logbackで開始時に出るLogback自身のログの出力をやめたい
Logback自身のログが最初に大量に出る
logbackを導入したときに、プログラム開始時にlogback自身のログが大量に出ることがあります。こんな感じで。
調べてみると、NopStatusListener
というのを指定するだけで、消せるみたい。
<!-- Stop output INFO at start --> <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
消えました
参考
How to stop logback status INFO at the start of every log? – Mkyong.com
How to prevent logback from outputting its own status at the start of every log? - Stack Overflow