2020年1月15日水曜日

Kotlinはじめました(前編)


新しいAndroidアプリを作成するにあたって、さすがにもうJavaじゃないのかなと思いまして。見ないふりをしてやり過ごしてきましたが、いい加減Kotlinに手を付けないとなぁ、というわけで。

めんどくさいなぁ、もう。

でも、新規のiOSアプリならもうObjective-Cでは作りませんしね。年貢の納め時でしょうか。とりあえず本を買って一通り読めば何とかなるでしょう。



この本はAndroid用というわけではなく、IntelliJ IDEAを使用する前提で書かれていますが、適宜Android Studioに読み替えればいけばいいはずです。

でもなぁ。。。

ちょっとやりにくいんですよね。そこでIntelliJ IDEAをインストールしようかとも思ったのですが、IntelliJ IDEAとAndroid Studioは基本的に同じですよね? 両方インストールして、なにかが競合するとかしないでしょうか(ま、大丈夫なんでしょうけど)。

そもそも、本に載ってるちょっとしたコードを実行するためだけにIntelliJ IDEAを使うのはオーバースペックです。なにかSwiftのplaygroundみたいな方法があればいいのに。

そうだ、VSCodeがあるじゃないか。


♪♪♪


とにもかくにも、まずはJDKが必要です。Java8なら大丈夫らしいです。でも最後にアップデートしてからしばらくたってます。
% javac -version 
javac 1.8.0_161
%

ちょっと古いですね。ここを見ると231が最新のようです(2020.1.7現在)。もちろん最新バージョンでなければいけないわけではないですが、モチベーションを上げるためにもここは早速ダウンロードして、、、と思ったら。

なんだよOracleプロファイルって。


Oracleのヤツめ。



じゃあOpen JDKかー、とjdk.java.netを見るとJDK13があります。

13でいいのか? 8で十分なんですけど。

macOS用をダウンロード


早速ダウンロードして、解凍します。
% cd temp                  
% ls -la                   
total 394640
drwxr-xr-x   4 hoge  staff        128  1  8 23:46 .
drwxr-xr-x+ 95 hoge  staff       3040  1  8 23:46 ..
-rw-r--r--@  1 hoge  staff       6148  1  8 21:34 .DS_Store
-rw-r--r--@  1 hoge  staff  189967039  1  8 23:41 openjdk-13.0.1_osx-x64_bin.tar.gz
% tar xvzf openjdk-13.0.1_osx-x64_bin.tar.gz  
x ./
x ./jdk-13.0.1.jdk/
x ./jdk-13.0.1.jdk/Contents/
x ./jdk-13.0.1.jdk/Contents/Home/

--省略--

x ./jdk-13.0.1.jdk/Contents/Home/bin/jstatd
x ./jdk-13.0.1.jdk/Contents/Home/bin/jdeps
x ./jdk-13.0.1.jdk/Contents/Home/bin/jconsole
x ./jdk-13.0.1.jdk/Contents/Home/bin/jimage
% ls -la                                     
total 394640
drwxr-xr-x@  5 hoge   staff        160  1  8 23:47 .
drwxr-xr-x+ 95 hoge   staff       3040  1  8 23:46 ..
-rw-r--r--@  1 hoge   staff       6148  1  8 21:34 .DS_Store
drwxr-xr-x@  3 hoge   staff         96 10  6 21:05 jdk-13.0.1.jdk
-rw-r--r--@  1 hoge   staff  189967039  1  8 23:41 openjdk-13.0.1_osx-x64_bin.tar.gz
%


解凍したJDKをJavaVirtualMachinesのディレクトリに移動します。
% sudo mv jdk-13.0.1.jdk /Library/Java/JavaVirtualMachines/
Password:
% /usr/libexec/java_home -V                                
Matching Java Virtual Machines (8):
    13.0.1, x86_64: "OpenJDK 13.0.1" /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
    1.8.0_161, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
    1.8.0_141, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home
    1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
    1.8.0_111, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    1.8.0_91, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
    1.8.0_77, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
    1.8.0_72, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
%


あとは.zshrcを編集して、JDKにpathを通します。
#Open JDK
export JAVA_HOME=`/usr/libexec/java_home -v 13.0.1`


ターミナルを開き直して、Javaのバージョンを確認します。でも、いつものアレが出現します。

まあ、そうだよね。


[システム環境設定] > [セキュリティとプライバシー] > [一般]の下部に、JDKがブロックされた旨が表示されているので、[このまま許可]を押して許可します。

ちょっとドキドキするよね。



改めてバージョンをチェックします。
% javac -version
javac 13.0.1
% java -version 
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
%


大丈夫そうなので、最後に古いJDKを削除します。
% /usr/libexec/java_home -V
Matching Java Virtual Machines (8):
    13.0.1, x86_64: "OpenJDK 13.0.1" /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
    1.8.0_161, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
    1.8.0_141, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home
    1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
    1.8.0_111, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    1.8.0_91, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
    1.8.0_77, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
    1.8.0_72, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk   
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk 
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk
% sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk
% /usr/libexec/java_home -V                                    
Matching Java Virtual Machines (1):
    13.0.1, x86_64: "OpenJDK 13.0.1" /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
% 


これでOpen JDKの用意はできました。 全然Kotlinの話ではなくなってしまいましたが、ちょっと長くなったので、次回に続きます。


こちらもどうぞ。
Kotlinはじめました(後編)
Kotlinはじめました(書籍「Kotlinプログラミング」を読む)
Kotlinはじめました(AdMobバナー広告を組み込む)
Kotlinはじめました(AdMobアダプティブバナー広告を組み込む)




2020年1月1日水曜日

Old Standbyについて、熱く語ってみる④


「Old Standbyについて、熱く語ってみる③」のつづき、密造編の後編です。


♪♪♪


前回でオープナーができたので、これを使って早速カバープレートを外してみます。でもここでひとつ気をつけることは完全にコームが乾いた状態で作業することです。木製コームは湿気で膨張しますから、組み立てた後で乾いて収縮すると息漏れの原因になりかねません。当たり前だろとおこられそうですが、念のため。


では、まずはMarine Bandです。

カバープレートとリードプレートの間にオープナーを差し込みます。最初に刃を差し込むときは、ちょっとひっかかるかもしれませんが、ここで無理にこじるとカバープレートが曲がってしまいます。一度曲がってしまうと綺麗に元に戻すのは不可能になりますので、慎重にリードプレートに沿って釘の根元まで差し込みます。

2本の釘の根元まで。

えいっ。


オープナーが釘の根元に届いたら、てこの原理で釘を抜きます。一度に全部抜かずに2,3回に分けて抜きます。

釘の根元に当たるまで差し込みます。


簡単です。


同じようにOld Standbyのカバープレートも取り外します。


見た感じではリードプレートは同じように見えます。釘穴の位置も同じですし、たぶん同じだと思います。


♪♪♪


続いてリードプレートを取り外します。今回はキーを交換するので、取り外す前にサインペンでキーを書いておくのもいいかもしれません。

Special20のようにリードプレートがコームにはまり込んでいるタイプと違って、Marine BandやOld Standbyは、リードプレートのマウスピース側にカバープレートがはまる溝がありますから、ブロー/ドローの区別はつきやすいです。




角からリードプレートとコームの間にオープナーの刃を差し込んでから、ゆっくりと刃全体を滑り込ませます。あくまでオープナーの刃は差し込むだけです。

オープナーの刃を釘の根元まで差し込むと、刃の厚さ分だけ釘が浮きます。そうしたらオープナーを抜いて、このわずかに浮いた釘を切り欠きを使って抜きます。

特にドロウ側のプレートでは、オープナーを誤ってリードに引っかけてダメにしないように気をつけます。

カバープレートはもし失敗して曲がってしまってもみっともなくなるだけですが、リードプレートの歪みは楽器として致命的になるので慎重に作業します。



コームは、厚さも歯の長さ(つまりチャネルの深さ)も同じようです。


♪♪♪


前回書いたように、最初はカバープレートの交換をするだけのつもりでした。その場合はカバープレートの釘穴の位置はMarine BandとOld Standbyとで微妙に違うので、一度釘穴を埋めてから釘を打ち直す必要がありました。

結局今回はコームも交換することにしたので、穴の埋め戻しは必要なくなりました。リードプレートの釘穴の位置は同じなので、そのまま組み立てます。

丁寧にやるなら、ここでドロウ側のリードプレートのコームに接する面をサンドペーパーで擦り合わせするのもいいかもしれません。ただ、今回擦り合わせはせずそのまま組み立てましたが、特に気密性に問題はでませんでした。


♪♪♪


ここからは組み立てです。既に空いている穴に再度釘を差し込むだけですので、金槌でトントン叩く必要はなく、プライヤーで釘を押し込むだけで大丈夫です。

プライヤーの釘を当てる側はそのままですが、反対側はリードプレート(またはコーム)を傷つけないように、フェルトを貼ります。



このフェルトは、床の傷つき防止用の家具などの足裏に貼るためのもので、片側が粘着テープになっています。フェルトじゃなくても、ゴムや布のような柔らかい素材があれば両面テープで貼るといいです。これは別になければないで問題ないですが、まあ、保険みたいなものでしょうか。



釘は7本あります。抜くときと同様に一度に全部締めないで、少し余裕を持ってリードプレートが少し動くくらいの状態で先に7本刺してから、リードプレートの位置を確認しながら締め込みます。

この締める釘の順番に正しい順があるのでしょうか。僕はなんとなく中心から外側に向けて締めていきました。とりあえずそれで問題は出ていませんので良しとしています。

当然ですが木製コームなので、「気密性がぁー」とあまり強く締めるのは厳禁です。


♪♪♪


同様にカバープレートの取り付けですが、その前に調子の刻印についてです。

何とかしたい。


カバープレートに刻印された調子記号はさすがに消せないので、どうしたものかと考えた結果、とりあえずテプラでも貼っておくかということにしました。SUZUKIの調子シールが入手可能でしたが、ちょっとサイズ的に貼るスペースがなさそうなので今回はやめておきます。テプラも大概ですが、調子シールがカバープレートからはみ出すのも、かっこわるいですからね。

かなり微妙。

刻印をルーターで削って間違えないようにして、調子シールをコームの側面に貼るのがベストな気がします。これは宿題ですね。


♪♪♪


上下のカバープレートの取り付けは、ずれないように輪ゴムで押さえておくと楽です。

輪ゴム作戦

ここもリードプレート同様、一度に締めずに4本の釘を余裕を持った状態に刺してから、リードプレートのマウスピース側にある溝にカバープレートがきちんとはまっていることを確認してから本締めをします。

カバープレートが溝にはまっている事が重要。



リードプレートのマウスピース側にある溝にカバープレートがはまっていることを再度確認したら、音を出して気密性などを確認します。


♪♪♪


最後にケースの調子シールを交換して貼り直せば、あら不思議、Old StandbyのA♭とMarine BandのB♭出来上がりです。

シールを貼り替えます。

できたぜ、密造Old Standby(A♭)。


これならLowキーはちょっと無理ですが、Marine Bandとして売られている12キー+High G、さらにマイナーキーなどが、Old Standbyで揃えられます。

そこまでお金と手間をかける意味があるかどうかは別ですが(笑)。



こちらもどうぞ。
Old Standbyについて、熱く語ってみる①
Old Standbyについて、熱く語ってみる②
Old Standbyについて、熱く語ってみる③
Old Standbyについて、熱く語ってみる⑤(お掃除編)
Old Standbyについて、熱く語ってみる⑥(もう少しカバープレート編)
Old Standbyについて、熱く語ってみる⑦(リードの調整編)