スマホアプリ開発のはじめ方2(テキスト&ボタン)

とりあえず前回、以下のページでAndroid Studioをセットアップするところを説明しました。
今回は、一歩進んで、簡単なアプリを開発してみたいと思います。

https://k2-ornata.com/android-app-dev

とはいえ、まったく初めての方は何からやればいいのかわからないとおもますので、自分がやったことを1つずつ説明したいと思います。

ボタンを押すと文字が変わるアプリ

わたしも最初、何から手をつけてよいのかわからず、とりあえず他の人がよく作成している、ボタンを押すと文字が変わるアプリを作成してみることにしました。

今回、開発に必要な画面(ソース)としては、とりあえずアプリのGUIを決めるactivity_main.xlmと、GUIでの操作に応じて動くMainActivity.javaの2つです。

1.とりあえず、GUIを眺めてみる

まずは、activity_main.xlmを見てみます。プロジェクトを立ち上げて画面の上の方を見てみると、「activity_main.xlm」というタブがあると思います。そのタブを選択すると、以下のような画面が表示されます。

2.テキストの属性を設定する

1.でタブを開くと、最初はスマホアプリのGUIの真ん中あたりに、Hello Worldのようなテキストが表示されていると思います。そのテキスト(オブジェクト)をクリックし、右のウィンドウから属性を変えてみましょう。上記の例ではidの属性を以下のように設定しています。

属性
idmessage01

このようにオブジェクトの属性を設定しておくことで、あとで、MainActivity.javaからそのオブジェクトを明示的に指定することができるようになります。

3.ボタンを作成する

次にアプリのGUI上にボタンを新しく配置してみます。下記のウィンドウの真ん中すこし左あたりにパレットがあると思いますので、そこから「Button」をマウスでクリックして、アプリのGUI上にもってきます。

その後で、先ほどのテキストと同様に属性を設定します。まずはid属性を設定し、その後にこのボタンが押された時に動き出す関数を設定します。
具体的な操作としては、右側の属性ウィンドウを下にスクロールしていくと、「onClick」という属性があると思いますので、そこに「changeText」という関数を設定します。

ボタンオブジェクトの設定をまとめると以下の通りです。

属性
idbutton02
onClickchangeText

4.ボタンを押すとテキストが変わるようにする

ここまででアプリのGUIは作成できたので、あとはMainActivity.javaで先ほどボタンに設定した「changeText」関数を使って動きを設定するだけです。

MainActivity.javaのタブを最初に開いた時は以下のような感じになっていると思いますので、ここから「changeText」関数を定義していきます。

具体的には以下のような感じで記述します。全コードを記載しているので、このままコピー&ペーストでもいいですが、最初は自分で真似しながら打ってみるといいかと思います。
Android Studioはなかなかかしこくで、コードを打っていると自動的に入力候補を出してくれるので、初心者にはありがたいです。

package com.example.textandbutton;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

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

    public void changeText(View view) {
        TextView message01 = (TextView)findViewById(R.id.message01);
        message01.setText("You pushed button!");
    }
}

public class MainActivity以降がアプリの動作を定義している部分で、それぞれの関数の実行タイミングはだいたい以下のようになると思います。

関数実行されるタイミング
onCreate名前のとおり、このアプリが作成(Create)されたときに動く関数だと思います。secContentViewで先ほどGUIで設定したテキストやボタンを生成・配置しているものと思われます。
changeText先ほど自分でボタンを押した時に呼び出されるようにした関数です。テキストを実体化して、ボタンが押された時に、”You pushed button!”を表示するようにしています。

ちなみに上の方のimport文はコードの作成に必要なライブラリみたいなものを取り込む処理になります。
さらにその上のpackageはこのプログラム自身の名前だと思えばいいかと思います。

5.仮想環境を選択する

コーディングは以上になりますので、あとは実際に動かしてみます。
Android Studioの上のツールバーに緑色の三角ボタンがあると思いますので、それを押せばいいのですが、その前に、スマートフォンの仮想環境を設定しておく必要があります。

うろ覚えですが、上図の赤い四角に囲まれたプルダウンから仮想環境を選択することができます。選択が終わっていると、このように選択した機種が表示されていると思います。

6.動かしてみる

それでは先ほど説明したとおり、緑の三角(再生)ボタンを押してみます。以下のようにスマートフォンの仮想環境が表示され、その中にテキストとボタンが描画されていると思います。

この後、ボタンを押してテキストが”You pushed button!”になれば成功です。もしうまく動かなかった場合は、Android Studioの画面下(たぶんEvent Log)にエラーが表示されていると思いますので、確認してみてください。

どうでしょう?意外と簡単だったのではないでしょうか?

ウィルスバスター for Mac がアップデートされました

先週、Macをいじっていたところ、今年春ごろから利用しているTrendMicroウィルスバスターから以下のようなポップアップメッセージが出たので、アップデートしてみました。

このアップデートによりWebのセキュリティ機能が強化されていたのでご紹介しておきます。

Googleで検索されたサイトの安全性が表示されるようになった

FireFoxやChromeのアドオンとして、Trendツールバーが使えるようになりました。

これをONにすることで、Googleで検索された各サイトの安全性が自動的に色で表示されるようになります。

これはなかなか安心かもと思いましたが、何ということでしょう!このサイトが未評価となっており、グレーで塗られています。

これは営業妨害だ〜ということで、上の画面からトレンドマイクロに評価をお願いしていますが、いまのところ変わる気配はありません。

ちなみに上の画面から「トレンドマイクロに依頼します」というリンクをクリックすると以下のような画面が表示さて、任意のサイトの安全性を調べることができます。

SNSのプライバシーチェック機能も(できるようになる?)

Googleの検索検索結果の安全性以外にも、FacebookやTwitterなどのSNSサイトのプライバシーチェックもできるようになるようです。

いまのところ残念ながらFacebookとTwtterについてはサイトの最新仕様に対応中とのことで動作しないようですが、どんなチェックをしてくれるのか楽しみです

さいきんトレンドマイクロは頑張っているようですので、このままいい製品を作り続けてほしいですね。

スマホアプリ開発の始め方(Android Studio)

コロナウィルス対策としてCocoaというアプリがリリースされていますが、そのアプリの仕様に満足がいかず、自分でそれを補完するようなアプリが作れないかと思い、アプリ開発の勉強をしてみることにしました。

とはいえ、長い間、開発から遠ざかっており、今時の言語もあまり知らないので、一から勉強してみることにしました。

とりあえず開発環境を整える

正直、まったくAndroidアプリの開発をやったことがなく、何から手を付けたらいいのかわからない状態でしたが、いろいろ調べてみると、とりあえず開発環境としてAndroid Studioというものがあることが分かりました。Androidをターゲットに開発を考えている場合は、これが一番メジャーな開発環境なのではないでしょうか?

1.Android Studioの入手

Andoroid Studioは以下のサイトから入手可能です。

https://developer.android.com/studio

ダウンロードしたら早速インストールします。
インストーラの中で色々カスタマイズすることができるようですが、とりあえずデフォルトで問題なさそうです。

2.Android Studioの起動

インストールが完了したら、起動してみます。
起動した直後の画面は以下の通りです。(4.0.1 for Macの場合)
バージョンによってかなり画面が変わる可能性がありますが、基本的な操作は変わらないかと思います。

ここから、新規にアプリを作成する場合は「+Start a new Android Studio Project」を選択します。

またすでに作成済みのProjectがある場合は、左側にリストで表示されます。

3.プロジェクトテンプレートの選択

新規にプロジェクトを作成する場合、最初にテンプレートを聞かれるようです。上の右3つであればどれでもよさそうですが、普通は、一番右のEmpty Activityを選択するといいようです。

4.言語とミニマムSDKの選択

ここは最初、選択が悩ましいところでした。

一番上のNameは適当で良いとして、LanguageはJava かKotlinを選べます。私の場合、Kotlinって何?状態だったので、昔すこし勉強したことがあるJavaを選択しました。Javaも最近結構進化しているようですが、Kotlinの方が今時でコーディングしやすいようですね。

あとここでもう一点注意が必要そうなのが、Minimum SDKの選択です。古いSDKを選択すればするほど、サポート可能なAndoroidは増えますが、あまり古いと自分の使いたいライブラリがインポートできなかったりするみたいです。とりあえず、ここではAndroid 5.0を選択しています。

5.Projectの初期画面

上記の画面でFinishボタンを押してしばらく待つと、以下のような画面が表示されます。(インストール直後はちょっと違う画面になっているかもしれません。)

ここでまた、何から手をつけたらいいんだ?と混乱するかもしれませんが、とりあえず、画面を見ると、MainActivity.javaのソースが開いていることがわかると思います。また、そのタブのとなりにもう一つactivity_main.xmlというタブがでていることが分かります。それぞれの役割は以下のような感じです。

MainActivity.java・・・アプリの動作について記述するコード
activity_main.xml・・・アプリの画面について記述するコード

とりあえず、難しいことをしないのであれば、まずはこの2つをいじっていけば簡単なアプリが開発できるようです。

以上、Android Projectのインストールから起動までをご紹介しました。昨日、始めたばかりなので、間違いがあったらこめんなさい。

続きはまた次のブログで記載していきたいと思います。

Splunk社が提供するBOTS環境でSPL言語を勉強する

先日、Splunk FreeをMacOSにインストールした後、Splunk 社が提供しているBOTS(Boss of the SOC)用のデータとQ&Aをダウンロードして、SPL(Search Processing Language) 言語の勉強中です。

SPL 言語が書けるようになれば、Splunk に取り込んだログデータを簡単に検索、分析できるようになり、また日本においても多くの企業でSpunkを導入している為、勉強しておいて損はないかと思います。

なお、以下サイトにSPL言語の入門書/説明書が置かれていますので、参考になるかと思います。

https://www.splunk.com/ja_jp/goto/book

ちなみに今年の3月にその最新版であるv3がリリースされたようですね。

https://www.splunk.com/en_us/blog/security/botsv3-dataset-released.html

また、私がAWS環境にSplunkをインストールした時の記事を以下に載せていますので興味があれば見てみてください。

https://k2-ornata.com/splunk-install-on-aws/

BOTSv1をトライしたときに利用したSPL言語

まだSPL言語初心者ではありますが、BOTv1を通じて勉強したことを記載しておきたいと思います。

0.Splunk内のインデックスを確認

さっそくSPL言語を利用してみたいところですが、SPL言語を使う際に、indexを指定することが多々あります。

そこで、どんなインデックスがSplunkの中にあるのか確認する方法を記載しておきます。

いろいろ方法はありそうですが、まずはOSのコマンドで確認する方法を記載しておきます。

Splunk がインストールされているディレクトリ(Macの場合、通常、/Applications/Splunk ディレクトリにインストールされています)の配下のbinディレクトリに移動し、splunk list index とコマンドを入力します。

% /Applications/Splunk/bin
% ./splunk list index

すると、以下のようにインデックスの一覧が表示されます。

コマンドでSplunkのインデックス一覧を表示

1.インデックスに取り込まれているデータの一覧表示

以下のように最初にパイプを書いた後、metadataコマンドを以下のようにつかうことで、botsv1インデックスに含まれるhostsの一覧と概要が表示されます。

| metadata type=hosts index=botsv1

また、hostsの代わりに sourcesや sourcetypes を指定することもできます。

| metadata type=sources index=botsv1

2.時間を整型する

上の例だと、各時間(*Time)がなにやら数字の羅列になっているので、これをわかりやすい表記にすることが可能です。

| metadata type=sourcetypes index=botsv1
| foreach *Time [eval <>=strftime(<>,”%d/%b/%y %H:%m:%S”)]

とりあえずSPL言語の出だしだけ書いてみましたが、また気が向いたら、続きを書いてみたいと思います。

ファミペイアプリがお得な件

会社の近くにファミマが多い為、最近、仕事の合間によくファミマカフェを利用しています。
その中でファミペイアプリというものがあることを知り、ちょっとお得&便利そうなのでスマフに入れて使ってみることにしました。

ちなみにファミペイアプリへのお金のチャージ方法はクレジットカードの登録以外にファミペイのカウンターで現金チャージもできます。(現金チャージの場合は、1,000円からです。)

お得:10杯分のお値段で11杯コーヒーが飲める

これが一番の目的だったのですが、ファミペイにお金をチャージして回数券を買うと、各種コーヒーが10回に1回ただで飲めます。
ポイントで考えると、100円で10ポイントに相当するので、かなりお得ではないでしょうか?

なお、回数券は購入してから91日間のみ有効らしいので、気を付ける必要があります。私の場合、毎日2〜3杯、ブレンドSを飲んでいるのでまったくその心配はありませんが。

便利:ファミペーから各種ポイントカードが使える

これはファミペイを使い始めてから気がついたのですが、ファミペイにTカードやdポイントカードを登録しておくと、ファミリーマートで購入した時に自動的にポイントがつくだけでなく、他のお店でも使えることがわかりました。

したがって、お金と一緒にそれらのカードを持ち歩かなくても、さっとバーコードをスマホ上に表示し読み取ってもらうことで、ポイントを付けてもらうことができます。

ただし、スマホのバーコードが使えるお店は限られているようで、ドトールは大丈夫でしたが、マルエツはTカードをカード読み取り機に通す必要がある為、読み取ってもらえませんでした。

上記2点以外にも初回アプリ利用時やチャージした際に還元があったり、フラッペなどの割引券がもらえたりしますので、よくファミリーマートに行く人は、入れてみてはいかがでしょうか?

ポーチドエッグトーストをギーで作ったら焦げなかった件

最近、我が家では食パンをくり抜いてその中で卵とベーコン、チーズを焼くポーチドエッグトーストが流行っていますが、焼きすぎるとパン(特に、耳の部分)が焦げてしまったり、早すぎると卵が生すぎてしまうという、焼き加減が難しいのが悩みでした。

しかし、ギーをつかって焼いてみたところ、いつもどおり焼いているのに焦げたところがほとんどなく作ることができました。

ギーは発煙点が高い

すこしネットで調べたところでは、ギーの発煙点は約250度となっており、バターの発煙点(約180度)と比べると高く、これが焦げにくい原因と思われます。

ギーはバターから脂質以外の成分を取り除いた非常にピュアなオイルとのことなので、余計な成分がはいっておらず、それが発火点の高さに繋がっているようです。

バターコーヒーに挑戦してみたい

今回、ギーについて調べていたところ、ギーブーム?の火付け役となったバターコーヒーというものがあり、コーヒーにギーとMCTオイルというものを加えれば良いらしいので、今度挑戦してみたいと思っています。

VulnHubをMacOSで動かそうとしたら、/dev/vmmon を開けないというエラーが出た

諸事情によりVulnHub(脆弱性が残された仮想イメージ)を自分のMacOSにインストールしてみたくなったので、トライしてみました。
その時に、VMware Fusion 11.5で仮想イメージを起動しようとしましたが、「/dev/vmmon を開くことができませんでした:パイプが壊れています。」というエラーが発生したので、そこの対処方法も含めて記載しておきます。

MacOS上で仮想イメージを動かすにはVMware Fusion一択?

1.VulnHubから仮想イメージをダウンロード

以下のサイトから好きな仮想イメージをダウンロードします。

https://www.vulnhub.com/

今回はとりあえず権限昇格の脆弱性のある「Kioptrix: Level 1 (#1)」を落としてみました。

2.rarファイルを解凍

ダウンロードのファイル形式はrarしかないようでしたので、それをダウンロードし、MacOS上で解凍することにしました。
しかしながら、MacOSでは標準でrarファイルの解凍ツールはインストールされていないようなので、Apple StoreからThe Unarchiverをインストールしました。

3.VMware FusionをMac OSにインストール

ダウンロードした仮想イメージをMac OS上で動かすには仮想環境が必要ですが、Mac OSではあまり選択肢がなく、VMware社が提供している試用版のFusion 11.5を入手しました。

以下はFusion 11.5をインストール中の画面ですが、30日間、試用できるようです。

4.仮想イメージの起動

Fusionをインストールすると、仮想イメージのvmxファイルのアイコンが以下のようにFusionのものに変わっています。

これをダブルクリックすれば起動する。。。はずですが、ここで「/dev/vmmon を開けない」というエラーが出ました。

/dev/vmmonって何だ?という話はありますが、例によってMac OSのセキュリティが邪魔しているようです。
以下の2点を確認してください。

確認ポイント1:
OSの「システム環境設定」-「セキュリティとプライバシー」画面の「プライバシー」-「アクセシビリティ」にて、Fusionにコンピュータの制御を許可しているかどうか?

確認ポイント2:
同じく「セキュリティとプライバシー」画面の「一般」にて「すべてのアプリケーションを許可」にチェックがついているかどうか?

なお、「すべてのアプリケーションを許可」する方法は以下のブログに記載していますのでわからない方はチェックしてみてください。
ちなみにこの設定はそのまま放っておくと危険なので、作業が終わったら元に戻しておくことをお勧めします。

https://k2-ornata.com/instantwp-error-on-mac/

この対処により、以下のとおり仮想イメージが起動するはずです。

以上で脆弱性のある環境は構築できましたが、次は攻撃環境としてKali Linuxを準備したいとおもます。それはまた別の機会で。。。

11年目のマツダ・ロードスターのコンディション

2009年にマツダロードスターNC2を購入し、今年で11年目となります。
今年1月に11年目の車検を実施し、それから半年後の8月(本当は7月でしたが、予約がいっぱいでした。)に定期点検に行ってきましたのでその時の状況を記載しておきます。

エンジンは好調、エアコンがレッド、クラッチがイエロー

どうも今年の夏に入ってからエアコンの効きが悪いなあと思っており、点検で見てもらおうと思ってはいたのですが、定期点検の当日は運悪く気温が35度近くあり、ディラーに行くまでの30分の道のりだけでも汗だくとなりました。

ようやくディラーにたどり着き、エアコンがまったく効かないことを伝えた後、1時間程度のチェックを実施してもらった結果が以下のとおりです。

エアコンについてはどこかからガスが漏れているのではないかと疑われたようですが、目視では見つからず、テスト的にガスを1.5本補充してもらい様子を見ることになりました。(ガス代はテストなので無料とのこと。マツダさんありがとうございます!)

それ以外に言われたのが、以下の点です。

クラッチパッド・・・まだ換えたことないですが、そろそろまずいらしい。
バッテリー・・・たぶん2代目のバッテリーですが、ちょっと弱っているらしい。
夏タイヤ・・・これも2代目のBridgestoneですが、すこしヒビが入っているらしい。

予想していなかったのがクラッチパッドですね。ディーラーの話によると交換する場合、10万円くらいするらしいです。結構しますね。
普段、1速に入れるのがめんどうで、2速発進していますが、それにしては頑張ったほうかもしれません。

またエアコンのガスがどこかから漏れていた場合ですが、これは漏れている場所によるとのこと。機械自体が壊れているわけではない(風はきているが冷たくないだけ)なのでそんなに費用はかからないのではないかと思います。

ちなみに私はマツダのパック・デ・メンテに入っているので、技術料の9,240円は支払う必要がなく、エンジンオイルを標準品からカストロールにアップグレードした費用の3,876円だけで済みました。

CISSPのCPEポイントを無料もしくは格安で取得する方法(その2:各種Webinars)

その1では新しく提供されたラボコースを説明しましたが、実は受講して1ヶ月経過してもCPEポイントが反映されない為、現在、原因をISC2に確認中です。

https://k2-ornata.com/cissp-point-isc2-lab/

そこで、今回は昔からある各種Webninarをご紹介しておきたいと思います。

The (ISC)² Solutions Summit and e-Symposium Webinar Series

このWebinarは1時間のビデオが3つで1セットになっています。毎回、あるセキュリティ関連の話題について、概要から提供ベンダーの製品紹介に移っていきます。

https://www.isc2.org/Member-Resources/e-Symposium

3時間じっくり見ないとCPEが付与されませんが、じっくり特定の話題について勉強したいときは良いかもしれません。もちろん、CPEは3ポイント付与されます。

(ISC)² Think Tank Webinars

このWebinarは1時間毎にCPEが付与されますので、取り急ぎCPEを1〜2ポイント稼ぎたい場合は、e-Symposiumよりこちらの方がよいでしょう。

https://www.isc2.org/News-and-Events/Webinars/ThinkTank

個人的には概要から説明してくれるe-Symposiumの方が好きですが、正直、そんな大きな違いはありません。

今年はコロナの影響で、これまでオフサイトでCPEを稼ぐために参加していたセミナーが軒並み延期や中止になっており、40ポイント稼ぐのが大変ですね。

osqueryのインストールでエラーが発生してこずった件

osquery とは、Facebookが開発したSQLライクな攻撃/侵入検知ツールとのことです。
いろいろなシステム情報をわかりやすいフォーマットでコマンドプロンプト上に表示でき、Splunk というSIEMにシステム情報を取り込むのも簡単そうだったので、MacOS にインストールしてみることにしました。

当初は簡単にインストールできるだろうと考えていましたが、brew install osquery とコマンドを打ったところ、以下のように「Error : osquery has been disabled!」と表示され、インストールできませんでした。

そこでGoogleで検索しましたが、いくら検索してもHomebrewを使う以外の方法が見つからず、困っておりましたが、ようやくあるサイトを見つけ、インストールすることができました。

osquery.ioサイトからMacOS用のpkgファイルがダウンロード可能

そんな中、ようやく以下のサイトを発見しました。

https://osquery.io/downloads/

このサイトにアクセスすると、自動的に最新バージョンのダウンロードページが表示されます。

下にスクロールすると、MacOSのpkgがダウンロードできます。

ダウンロードした後は、(あまり覚えていませんが)たぶん、pkgファイルをダブルクリックしただけで、インストールできました!

今後はこのツールを利用して定期的にシステム状態を監視してみたいと考えています。