fc2ブログ

VScodeでKotlinのコードを動かす

 最近、Android Studioを使ってKotlinでコーディングすることがありますが、エミュレータで実行結果(例えば計算結果)を確認するのにエミュレータの起動時間などがあり、時間がもったいないと感じることがありました。
 そもそもコンソールアプリでVScodeで簡単に確認できればと思いながら、ネット上を探していると、すぐに見つかったので早速試してみました。

 Kotlin command-line compilerというもので、以下、Mac Mini(M1チップ)で環境構築しました。
 ① brewでkotlinをインストールする。
brew update
brew install kotlin
 ② インストールされていることを確認をする。
kotlinc -version
を実行すると、以下の結果が出て、問題なくインストールされていることが分かりました。
info: kotlinc-jvm 1.7.10 (JRE 18.0.2.1+0)
 ③ VScodeの拡張機能(Extensions)で「Kotlin Language」をインストールする。kotlin_setup_220828.png
 環境構築が完了したので、次に、VScodeでコーディングして動作確認を行います。
 ① helloフォルダを作成し、ワーキングディレクトリをhelloフォルダにしておきます。その中に以下の通り「hello.kt」を作成します。kotlin_run_220828.png ② 作成後、ターミナルで以下のコマンドを実行して、jarファイルを作成します。
kotlinc hello.kt -d hello.jar
 ③ 最後に以下のコマンドでプログラムを実行します。
java -jar hello.jar
上図のターミナル部分にあるように、問題なく実行できました。

VScodeで実行すると、簡単な数値計算結果等を迅速に確認できそうです・・。ただ、数値計算ぐらいなら、わざわざ慣れない「kotlin」でやる必要もないなと事後に気付くのでした。AndroidのGUIアプリを主に作るためのプログラミング言語ですからね・・(自己納得)。
スポンサーサイト



京都ラーメン街道に行く(2)

 暑い日が続きます。湿度も高く、じっとしていても汗が出ますね。コロナの第七波の中ですが、自宅にいても閉塞感があり、奥さんと京都に出かけることにしました。今回は珍しく奥さんがおいしいラーメンを食べたいというので、以前のブログでお話しした京都一乗寺の「ラーメン街道」に行くことにしました。京都駅からバスで一乗寺へ。45分程の長い道のりです・・。今回は「極鶏」さんに入りました。ラーメン街道_220827 時間が良かったのか、10分程度の待ちで「鶏だく」の大盛を食べることができました。天下◯品よりもはるかにドロドロのスープでした。鶏だく大盛_220827油っぽいのかな?と一瞬ためらいましたが、食べてみると美味しい。ただ、胃の調子が最近良くない私には少しつらかったかも・・。奥さんは並盛を完食し、美味しかったと言っていたので、まずは安心。

 食事を終え、叡山電鉄で出町柳まで下り、その後、奥さんと別行動へ。私は高台寺で「百鬼夜行(ひゃっきやぎょう)展」を行っていたのを見に行きました。この寺は豊臣秀吉とねねの寺として有名ですね。展示と寺の庭園を汗をふきふきのんびりと散策しました。高台寺_220827日常とは異なる時間の流れを感じつつ、帰路につきました。

Androidアプリを作る(5)

 前回は、AndroidスマホにQPythonをインストールし、スマホのバッテリの情報を吸い上げるアプリを作成しました。
 そのサンプルプログラムで出力された結果はこんな感じでした。
  technology: Li-ion
battery_present: True
health: 2
status: 2
plugged: 2
level: 56
temperature: 310
voltage: 3934
これらはAndroidのAPIのBatteryManagerクラスの関数の戻り値でした。今回得られた結果を以下の表にまとめました。BatteryCheckList_220821.pngPythonからAndroidのAPI関数を呼び出せるので、Javaのコードからも確認してみました。コードはgithubにあったものを参考にさせてもらいました。その実行結果は以下の通りです。画面下部のBundleで書かれてある部分がAPIで取り込める全情報で、その内容をまとめたのが上部の表示です。BatteryChecker1_220821.png当然ですが、同じことがJavaからもできることが分かりました。

 味をしめて、Androidスマホの環境センサデータ(周囲の温度、湿度、気圧、照度)を取ってみようと思いました。これができれば、Raspberry Piにセンサ類をつけて表示しなくても、楽に周囲環境の情報が確認できますからね。早速、慣れないJavaでコーディングして実行しました。まずは自分のスマホにそのセンサが実装されているのかの確認です。作成したコードは以下の通り。
package com.example.sensortest;

import androidx.appcompat.app.AppCompatActivity;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private SensorManager sensorManager;
private Sensor temperature;
private Sensor humidity;
private Sensor pressure;
private Sensor illuminance;

TextView textSensorValue = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

sensorManager = (SensorManager)getSystemService(this.SENSOR_SERVICE);
textSensorValue = findViewById(R.id.text_info);

temperature = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
humidity = sensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
pressure = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
illuminance = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

String info = "Temperature: " + temperature + "\n";
info += ("Humidity: " + humidity + "\n");
info += ("Pressure: " + pressure + "\n");
info += ("Illuminance: " + illuminance + "\n");

textSensorValue.setText(info);

}
}
実行結果は以下の通り。照度のみROHMのセンサがついていることが分かりましたが、温度、湿度、圧力がnullです。SensorChecker_220821.pngAndroidスマホに実装されている全センサを確認するコードがネット上にありましたので、念の為確認しました。結果、照度センサ(12)だけ実装済みであることが分かりました。年寄り携帯?(失礼!)の京セラ製BASIO4には必要最小限のセンサしか実装されていないようですね。SensorCheckList_220821.png今回触っているなかで自分のAndroidスマホに実装されているセンサが分かって来たので、その中で遊んでみようと思います。

Androidアプリを作る(4)

 前回からしばらく時間が空きました。前回はAndroid Studioとプログラミング言語はKotlinを使って簡単なカウントアプリを作りました。
 つい先日のブログで『PythonによるAndroidアプリ開発入門』という本の話をしましたが、この本のタイトルにもあるように、PythonでもAndroidアプリが作れるのですね。早速試してみました。 AndroidアプリをPythonで開発するには、QPythonというアプリを使うと良いということでセットアップから開始しました。

 まず、Androidスマホのブラウザからqpythonを検索し、QPython 3Lを選択し、QPython3_setup1_220820.pngQPython 3L - Python for Androidをインストールしました。QPython3_setup2_220820.png起動させると初期メニューが表示されました。QPython3_1_220820.pngConsoleを選択すると、見慣れたPythonコンソールが表示されました。Pythonのバージョンは3.6.6で古いです・・。QPython3_2_220820.png初期メニューのEditorを選択すると、行番号付きのエディタが起動しました。ただ、スマホのソフトウェアキーボードでコードを書くのはありえないですね。以前のブログでお話ししたリモートツールscrcpyでパソコンから文字入力した方が断然速いですね。QPython3_3_220820.png 結局、コードはMac MiniのVScodeで書いて、scrcpyを用いてコピーしました。scrcpyを使うと問題なく、QPythonのエディタにコピーできました。これは楽です。QPython3_4_220820.png実行すると、以下の結果が得られました。QPython3_5_220820.png分かりにくいので整理すると、こんな感じです。
  technology: Li-ion
battery_present: True
health: 2
status: 2
plugged: 2
level: 56
temperature: 310
voltage: 3934
levelの56はその時のスマホのバッテリの残り残量(%)でした。この詳細については次回改めてお話しします。

その後、ネットで色々調べている中で、インストールした最新版のQPython 3Lは、以前のQPythonのバージョンよりも機能(できること)が限定させているようですね。資金難かで開発が止まっているのでしょうか??将来性が怪しいかも知れません。Pythonではなく、王道のJavaやKotlinで書いた方が良いのでしょうか?次回は、このバッテリチェックをJavaでも書いて試してみましたので合わせてお話しします。

SONY SPRESENSEで遊ぶ(4)

 超高額なSONYのマイコンボードSPRESENSEですが、そもそも高機能なHDRカメラボード CXD5602PWBCAM2Wを使いたかったから購入しただけなのですが、そのカメラボードをまだ使えていなかったので今回初めて使いました。

 そのカメラ撮像のサンプルプログラムは、SDカードに画像を保存するもので、メインボードにはSDカードモジュールが付いていないので拡張ボードを別途購入する必要ありという話は1回目のブログでお話ししました。これもSONYの商法?

 拡張ボードを購入するのも癪なので、SDカードではなく内蔵のFlashメモリに画像を保存すべく、SDカード保存用のサンプルコードをFlashメモリ用に変更して動かしました。
 動かした後にFlashメモリの中身を確認すると、10枚の画像が保存されていることが分かりました。ただし、このデータが手元に抜き出せない・・。flash_memory_data_220812.png手元にある秋月のSDカードモジュールを使えないかなと思い、試行錯誤していましたが、メインボードの仕様を確認すると、以下の記述が・・。

「Spresense メインボードの基準I/O電圧は1.8Vです。1.8V以上の電圧を加えると Spresense のチップセットが破壊される可能性があります。取扱いには十分注意してください。」

おいおい、SONYよ、昔々のマイクロプラグのようなことをするなよなぁ〜・・!3.3V、5V系の部品との共存など、配線でヘタなことをすると、メインボードを潰しそうな気がしたので、心が折れてしまいました。

結局、不本意ですが、拡張ボードを購入しました。うまくSONYに乗せられました。カメラボード(12,980円)+メインボード(6,050円)+拡張ボード(3,850円)で合計22,880円也。Raspberry Pi 4B(4GB)を2台買えてお釣りが来るほどですね。マイコン機器とは思えない高い高い買い物になりました(苦笑・・涙)。ext_board_220812.pngメインボードを実装するとこんな感じです。ext_board_set_220812.png泣く泣くFlashメモリ用に書き換えていたソフトをSDカード用に戻して、実行させました。あっさりと結果は出ました。問題なく動作しました。camera_img_220812.png
 超々高額なSONYのマイコンボードSPRESENSEに振り回されていますが、多機能なことには変わりないので、Raspiにはない使い方をして、遊んでみようと自分を慰めています・・。

Androidスマホをscrcpyで操作する

 久々に個人のAndroidスマホ、別名年寄りスマホ?(失礼!)の京セラ製BASIO4で遊んでみようと思い立ちました。

 先日、古い本が無駄に多くある(嫌味?)県立図書館で『PythonによるAndroidアプリ開発入門』という本を見つけて借りました。この類の書籍は自分が読みたい所がスポットで、全部は必要ないので、購入するよりも図書館で借りるのが良いですね。 その中でPCからAndroidスマホを操作できるとの記述がありましたので、早速試そうと思ったのですが、書籍に記載の「mobiden mirroring」のサービスが今年の2月に終了したとのネット記事を発見。ただし、その記事の中に「scrcpy」が代替できると書かれていたので、これを試しました。

M1チップのMac miniにscrcpyをインストールする手順はネット記事にありましたので、参考に進めました。brewでscrcpyとandroid-platform-toolsをMacにインストールしました。
brew install scrcpy
brew install android-platform-tools
scrcpyで操作するためには、Androidスマホを「デバッグモード」にする必要がありますので、以前のブログの「1.スマホ側の設定」に従い、設定しました。

起動はターミナルからscrcpyを叩けば良いのですが、エラーが発生。認証されていないエラーのようです。scrcpy_run1_220811.pngAndroidスマホを確認すると、USBデバッグの許可を聞いていたので、まさにこれでした。許可をすると問題なく起動しました。scrcpy_run2_220811.pngMac miniでAndroidスマホ画像をマウス操作するとAndroidスマホがその通りに動作していることを確認しました。scrcpy_run3_220811.pngAndroidスマホのアプリ開発を行う上で非常に便利ですね。何かと遊べそうです。

データサイエンティスト検定リテラシーレベル

 暑い日が続いたり、異常な大雨が降ったり、コロナの第七波が到来したりと、嫌なことが多い日々ですね。気分も塞ぎがちになりますが、6月中旬に受験していた「データサイエンティスト検定リテラシーレベル」の結果発表が8/3にあり、無事に合格しました。合格ラインが得点率8割ということで、スコアシートを確認してもクリアできていることが分かりました。合格証_220803合格のオープンバッジはこんな感じです。オープンバッジ_220803 今年の4月にふと「腕試しに受けてみようかな」と、いつもの思いつきで、スキルアップAIの無償の動画セミナーを受けたのがきっかけです。

この検定はデータサイエンティスト協会の実施する民間検定で、CBT(Computer Based Testing)方式で試験が行われました。毎年会社でTOEICの試験は受けていますが、外部の検定試験はもとより、CBT方式の試験を受けたのは初めてでした。

50歳を過ぎると、若い頃(学生の頃)に比べ、新しいことを学び、理解することにますます難儀しています。まず、集中して、多くのことを覚えられないですね。何回も繰り返さないと頭に入ってこない・・。一生懸命さが足りないのでしょうか・・?

その中でも、思い立って2ヶ月間、通勤の電車の中と土日にまとまった時間を取り、以下の問題集と参考書は数回程度読みました。

徹底攻略データサイエンティスト検定問題集[リテラシーレベル]対応この問題集は初版を購入したのですが、誤記が非常に多かったですね。問題を解いていて、理解できない所があり、ネットで調べると誤記であることが分かりました。まだ、書籍の修正情報が挙がっていなかったので、出版社にメールすると、案の定、誤記だとの連絡がありました。数十ヶ所誤記がある問題集でした。校正をきちんとして出版して欲しいものです。

最短突破 データサイエンティスト検定(リテラシーレベル)公式リファレンスブック 第2版 幅広く情報が記載されている参考書でした。詳細は別途勉強が必要なものでした。

今回、この検定試験は第二回とのことで、問題集や参考書も限られたものしか手に入りませんでしたが、今後充実されていくのでしょうね。

頭がボケない程度に、このような検定試験を受けるのも良いかも知れません。また、何か手頃な検定にチャレンジしてみるのもありかも。

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: