yoppyのandroidアプリ開発者になるためのブログ

yoppyのandroidアプリ開発者になるためのブログ

このブログでは、ソフト開発部に所属していながらもソフト開発の経験がほぼゼロのペーペーが、Javaの勉強やアプリ開発を経て、android携帯電話のアプリ開発者のプロを目指す共同学習型のブログです。androidやJavaなど、プログラミングに興味のある方はぜひ見て下さいね!

Amebaでブログを始めよう!
2012年迎えちゃいましたね。
忘年会は終わって、新年会の時期となります。

とはいえ、2011年の反省会をしていなかったので、ここで一回反省しておきます。

【反省点】
①彼女との約束を忘れてしまったこと

これは、長年付き添ってきた彼女と別れる大きな要因の一つです。
約束は守らないと相手に信頼されないもんね。
約束は守り、かつ、優先順位もきちんと考えることですね。

②彼女はいて当たり前だと思っていたこと

これも別れの要因の一つ。
長年付き合っていくと、いて当たり前になってくる。
そうすると、相手への思いやりとか愛情も次第に薄れていく。
相手は自分を慕ってくれているのに。
求めるだけじゃなくて、相手に気遣いを。

③時間にルーズ

仕事の締切とか計画がきっちりできていないから、
締切のぎりぎりになったり、締切過ぎそうでもなんとかなると思っちゃう。
それは間違い。
締切を破ることは約束を破ることと同じ。
相手に信頼されるための一つの掟。
あとは、彼女との待ち合わせとか、友達との待ち合わせに遅れることも多々。。

④人の考えを気にしすぎ

他人の意見を求めるだけじゃダメ。
自分の意見をまず伝えて(もしくは、意見を自分の中に持っておいて)
それから物事を決めていくこと。

⑤もっと筋トレを

週一回くらいの筋トレじゃあ、良くて現状維持。
バスケうまくなりたいんなら、週二回は必須。

【抱負】
①約束は守れ

せめて約束を忘れないこと。
約束したことは何があっても忘れないようにAndroidアプリのジョルテに
登録しておくこと。
時間にルーズなことも、余裕をもって行動すること。

②~して当たり前、なんてことは無いと思え

当たり前なことには何かしらの前提がある。
それをいつも感じ取って、当たり前なことの裏側をちゃんと意識すること。
彼女の優しさだったり、家族の存在だったり、友人の存在だったり、上司の存在だったり。

③イエスマンであること

人の目を気にしすぎるあまり、何かへの参加をしぶったりするのはやめよう。
そこにはきっと新しい良いことがあるはず。
ひとまず、イエスと言っておけ。

④週二回筋トレしなさい

必達で。

以上、反省と抱負でした!!




ふと考えました。

自分のやりたいことって、いっぱいあるなと。

①バスケ
②バンド
③プログラミングの勉強
④映画観賞
⑤旅行とか


だけど、どれも本気になっているのか?というのが疑問です。
本気にならないとダメだろう、と思うのは、①、②、③です。

バスケは、うまくなりたい、もっと試合で点を取りたい、と強く思ってます。
そう思っているなら、本気にならないとダメだと思うんですが、そうであれば、
行ける練習はすべて行くのが当然なのでは?という疑問が出ます。

バンド活動も、ドラムうまくなって、音楽というものをみんなで共有したいと思ったから、
始めました。確かに、計画的に練習はしているけど、本当にうまくなりたいのなら、
電子ドラムも買っていることだし、毎日練習するのが当然だろう?と疑問が出ます。

プログラミングもそうです。仕事で、プログラミングの知識はソフト開発職である限り、
絶対必要です。なくても、なんとかなりますが、裏付けが出来ませんし、自分の発言に
説得力がつきません。仕事ができるようになりたいと思ったから、プログラミングの
勉強をしようと思いました。そう思うなら、毎日勉強するのが当然だろう?と疑問が出ます。


このように、本気でやりたいと思っていることがありながら、本気を出せていないのが
現実でした。

なんででしょう?

本気を出さなくても、生きていけるからでしょうか。

かつて、高校時代に弓道部に所属していましたが、高校3年生のとき、なかなか的に
矢が的中しなくなり、毎日朝5時くらいから朝練をしていました。自慢ですが、このときは
本当に努力したと実感しました。

あのときのように、努力が出来る人間になりたいと思います。

こんなことを考えたのは、NHKのプロフェッショナルという番組で、宇宙飛行士の若田さんが
言った言葉が強く印象に残ったからです。

「人間の価値は努力の量で決まる」

確かにそうだな、と思いました。
高校3年生のとき、自分には価値があったと、思えます。
今の自分はどうかな?と思ってしまいます。

そもそも、価値って必要なの?っていう大前提があるんですが、
たぶん価値があった方が、自分の人生とその周りの人たち、これから自分が出会う人たちを
幸せに出来るんじゃないかな、と思います。

まあ、何事も真剣に、ってことですね!!
がんばります!!


かなりご無沙汰しております。
今日は、例外処理について簡単にメモっておきます。

例外とは、例えば0で割ったときとかに発生します。
コンパイルエラーで出てくるわけではなく、実行中にはじめてエラーとなるものです。
もし、例外処理を入れてなければ、実行中にそのプログラムは停止します。

以下のように使用します。

---------------------------------------
class ExampleException{
public static void main(String args[]){
try{ //例外を検出したい処理を入れておく
int i = Integer.parseInt(args[0]);
int j = Integer.parseInt(args[1]);
System.out.println("Before");
System.out.println(i/j);
System.out.println("After");
}
catch(ArithmeticException e){ //例外発生時に、そのエラーと一致すれば実行
System.out.println(e);
}
catch(Exception e){ //Eceptionを指定すれば、全ての例外をキャッチ出来る
System.out.println(e);
}
finally{ //例外発生時に必ず実行される処理
System.out.println("finally");
}
}
}
---------------------------------------

上記の例では、コマンドラインで整数値を2つ入力し、それらを割り算する、というものです。
もし、args[1]を0に指定すると、ArithmeticExceptionなので、一番目のcatchブロックに
引っ掛かります。

また、コマンドラインで整数値を何も入力しなかった場合は、ArrayIndexOutOfBoundsExceptionに
なるので、一番目のcatchブロックはスルーされ、二番目のcatchブロックでcatchされます。

そして、最後に必ずfinallyブロックを通ります。

catchブロックの検索の方法は、一番上から順に行います。
また、catch(Exception e)を指定する場合は、最後の順番にしなければコンパイルエラーになります。

もし、catchブロックに該当の例外処理をするものがなければ、finallyブロック実行後、
例外が発生します。

手抜きですが、以上です!
またしても久し振りの更新になります。。
今回もカフェEcranよりお届けします。
今日は"クラスパス"の設定方法についてまとめました。

設定方法は2つあります。

①-classpathオプションの利用

コマンドラインでjavaのソースファイルをコンパイルするときや、実行するときに、

javac xxx.java
java xxx

というように入力していましたが、これはカレントディレクトリにxxx.javaや、
xxx.classが無いと実行できません。

上記コマンドは下記コマンドと同じ意味を持っています。

javac -classpath . xxx.java
(.はカレントディレクトリを指す)
java -classpath . xxx

もし、C:\abc\def という絶対パスにxxx.javaやxxx.classがあるのであれば、
カレントディレクトリがどこであろうと、下記コマンドを実行すれば問題なく
動作します。

javac -classpath C:\abc\def xxx.java

このようなクラスパスは、複数渡すことができるため、カレントディレクトリと
特定のディレクトリを一緒に指すことができます。従って、どちらにも同じファイル
xxx.javaがある場合は、先に記述したパスから探すため、先に記述した方で実行
されます。

javac -classpath .;C:\abc\def xxx.java

上記コマンドであれば、「カレントディレクトリ」と「特定のディレクトリ」ですが、
先に記述している「カレントディレクトリ」を優先して実行します。

②CLASSPATH環境変数の利用

続いて、CLASSPATH環境変数を使った場合のクラスパス設定方法を説明します。

下記設定を行えば、クラスパスのセットが可能です。

set CLASSPATH=クラスパス1;クラスパス2;クラスパス3…

確認には、以下コマンドで確かめることが出来ます。

echo "CLASSPATH"

このようにCLASSPATH環境変数を設定すると、オプションでわざわざつけなくても、
自動的に参照してくれるようになります。

やっぱり人生って、仕事が大半を占めるよね。


一日あたり7時間45分働いて、残業時間が月に40時間くらいで、

月あたり20日出勤するとします。


そうすると、一か月で195時間働いていることになりますね。


つまり、195÷24=8.125日ですね。


で、それが12か月分なので、8.125×12=97.5日です。


睡眠時間を1日あたり6時間とすると、6時間×365日÷24=91.25日です。


睡眠時間は無意識に消費していく時間なので、365日からそれを

差し引きしてやった時間を、"自分の人生"とします。


つまり、365日-91.25日=273.75日です。





さて、そうなると、自分の人生に占める仕事の割合が出てきますね。





97.5÷273.75×100(%)≒35.6(%)




はい、出ました。


仕事とは、私の人生の3分の1以上を占めた大きな要素です。


実際に計算すると、よくわかりますね、仕事がどれだけ大きな存在か。


仕事が自分の人生を大きく左右するかもしれないってことですね。


仕事って大事だね。


もっと頑張ろうって思うね。


実際のところ、休みの日とか、仕事終わりとかで、仕事関連の勉強もするから、

35.6%どころではないと思いますね。それに、無意識にご飯食べてる時間も

あるから、50%くらいはいってるんじゃないかなって思ってます。


とはいえ、残りの64.4%は、仕事以外の部分なのだから、


人間は仕事だけじゃないってことの証明にもなるよね。


いやはや、哲学ですな。




仕事以外の部分も大きいとは言ったものの、3分の1を占める仕事に対して、


何も取り組まないのは、人生棒に振ったのと同じですよね。


ってことで、仕事のノウハウだったり、反省点だったり、不満点だったり、


今後の仕事のスタイルを確立するために情報の蓄積をしたいなって


思ったので、ブログに書きとめようと思います。




皆さん、温かい目で見守ってくださいませ!!!



それでは!


かなり久し振りの更新です。

長期間、勉強さぼってました…


ということで、復帰一発目は"interfaceの継承"と、"instanceof演算子"について説明したいと思います。


■interfaceの継承


interfaceは、クラスと同じように継承の仕組みがあります。
ただ、クラスとは一点異なっています。
クラスは、ただ一つのスーパークラスから継承を行いますが、
interfaceは、その制限はなく、いくつも継承が可能です。


例えば、こんな感じで。↓


-----------------------------------

//interface I3は、I1とI2を継承

interface I3 extends I1, I2{


}

-----------------------------------


正直、interface継承の利用シーンが現時点では思いつかないので、
このくらいにしておきます。


■instanceof演算子について


オブジェクトが、「どのクラスなのか」「どのinterfaceを実装しているのか」を確認するための演算子です。

クラスの場合は、以下のように使います。


------------------------------------

if(varName instanceof ClassName){
System.out.println("varName is an object of ClassName");
}

------------------------------------


varNameは、オブジェクトの参照変数で、ClassNameは、クラス名です。
このとき、varNameがClassNameクラス(もしくは、ClassNameのサブクラス)の
変数であれば、trueとなります。


interfaceの場合は、以下のように使います。


------------------------------------

if(varName instanceof InterfaceName){
System.out.println("varName implements a InterfaceName");
}

------------------------------------


InterfaceNameは、interface名です。
このとき、varNameが、InterfaceNameをimplementsしていれば、trueとなります。
もちろん、直接implementsしていなくとも、InterfaceNameを継承したinterfaceを
implementsしていればtrueとなります。同じように、InterfaceNameをimplements
したクラスのサブクラスであっても、trueとなります。




結局、どんなときにinstanceof演算子を使うと便利なのか、については

あんまりわかりませんでしたあせる

時間があるときにまた調べておきます。


はい、以上!!


今回の3連休は、友達の結婚式&BBQに行ってきました!


BBQに関しては、大学のバスケのサークルのメンバーで行ってきました。社会人としては、こうやって、大学の人たちと絡めるのはとてもありがたいことですね。


こんな感じ↓


yoppyのandroidアプリ開発者になるためのブログ


どこでBBQやったかというと、東広島の憩いの森公園ってとこです。BBQが出来る施設が用意されてて、BBQやるにはもってこいの場所です。リンク貼っておきます。


憩いの森公園


ほんじゃまた!

たまには、日常ネタでも書こうと思います。


先週末の土曜日に、ドライブもかねて、山口県下松市の名物「牛骨ラーメン」を食べに行きました!


「蘭らん」っていうお店が、オススメ!!と、下松市役所の公務員の友達が言ってたので、行ってみました。


こんな入口!↓

yoppyのandroidアプリ開発者になるためのブログ-欄らん


ラーメンはこんな感じ。↓


yoppyのandroidアプリ開発者になるためのブログ-牛骨ラーメン


牛骨ラーメンといいまして、豚骨とはまた一風違って、ほんと美味しいんですアップ


大盛りでも700円でして、結構リーズナブル!!オススメです!!




それで、そのあとちょっくら車を走らせて、湯田温泉まで行ってきました!!↓


yoppyのandroidアプリ開発者になるためのブログ-湯田温泉


旅館がいっぱいあるけど、日帰り温泉もたくさんあるので、疲れを癒したいときは、ドライブがてら


行ってみるのもいいかもグッド!


行った温泉の横らへんに、有名な「女将劇場」をやってる旅館がありました。


旅館に泊まらなくても、女将のショーを見ることができるらしい。。


そんなことで、牛骨ラーメンと湯田温泉、オススメです!!それでは~




今日は、趣味のバスケをした後に、東広島のカフェEcranで勉強中です。そして昨日の筋トレの筋肉痛が徐々にきています。。


それでは、今日のお題"インターフェイス"について説明したいと思います。


インターフェイスとは、定数とメソッド宣言を集めたものです。そして、そのメソッドの中身は一切実装しません。実装すると、コンパイルエラーが発生します。その代わりに、他のクラスがインターフェイスのメソッドの中身を実装します。


また、インターフェイスは複数のクラスで利用可能で、かつ、クラスは複数のインターフェイスを実装することが出来ます。


うる覚えで書きますが、androidでもインターフェイスを活用している部分があります。アプリの画面で、とあるボタンを押したときに、どんな処理をするか、というのをインターフェイスを使って実装しています。


簡単な例を以下に示します。


---------------------------------------------

/* interfaceの使い方 */

class Example_7_1{
public static void main(String args[]){
//Activity1クラスのインスタンス化
Activity1 act1 = new Activity1();
act1.shortTouchEvent();
act1.longTouchEvent();
act1.doubleTouchEvent();

//Activity2クラスのインスタンス化
Activity2 act2 = new Activity2();
act2.shortTouchEvent();
act2.longTouchEvent();
act2.doubleTouchEvent();
}
}


//interfaceは実装はしない
interface ShortTouch{
//自動的にメソッドにはabstractとpublicの修飾子がつく
void shortTouchEvent();
}


interface LongTouch{
void longTouchEvent();
}


interface DoubleTouch{
void doubleTouchEvent();
}


//interfaceメソッドが本体を持つことはできない
/*interface AAA{
void aaaa(){
System.out.println("aaa");
}
}*/


class Activity1 implements ShortTouch, LongTouch, DoubleTouch{

//コンストラクタ
Activity1(){
System.out.println("--Activity1--");
}

//interfaceの実装
public void shortTouchEvent(){
System.out.println("フォーカス移動");
}

public void longTouchEvent(){
System.out.println("アイコン持ち上げ");
}

public void doubleTouchEvent(){
System.out.println("アプリ起動");
}
}

class Activity2 implements ShortTouch, LongTouch, DoubleTouch{

//コンストラクタ
Activity2(){
System.out.println("--Activity2--");
}

//interfaceの実装
public void shortTouchEvent(){
System.out.println("画面遷移");
}

public void longTouchEvent(){
System.out.println("コンテキストメニュー表示");
}

public void doubleTouchEvent(){
System.out.println("拡大表示");
}
}

---------------------------------------------

★実行結果


--Activity1--

フォーカス移動

アイコン持ち上げ

アプリ起動

--Activity2--

画面遷移

コンテキストメニュー表示

拡大表示


---------------------------------------------


上のプログラムは、3つのinterfaceを作成しています。いずれも、画面をタッチしたときの動作処理を想定して、作成しています。そして、そのinterfaceを、Activityというクラスに実装しています。実装するには、implementsを使用します。実装するときは、ちゃんと全てのインターフェイスメソッドを実装してやらないと、コンパイルエラーが発生するので、注意が必要です。


また、インターフェイスメソッドには、自動的にabstractとpublicの修飾子がつくので、実装するときにpublic修飾子をつけないと、コンパイルエラーが発生します。


インターフェイスを使うと便利!!というような例ではありませんでしたが、次回のブログでもう少し詳しいところにつっこんでいこうと思います。


以上です!!



今日は、東広島に新しくできたカフェ「Cafe大学」にて勉強中です!

今なら、カレー一杯100円で食べられて、最初の30分は無料らしいです。

しかも、徒歩や自転車で来店する場合は、エコ割引が効いて、通常30分250円のところが、

200円になります。店内は結構広く、東広島のカフェ不足を解消してくれてますので、

ぜひ皆さんも足を運んでみてください!


宣伝はここまでとして、今回はクラス、変数、メソッドの"修飾子"についてまとめたいと思います。


■クラスの修飾子


abstract、final、publicの3つあります。


・abstract


 この修飾子をつけると、そのクラスの中のメソッドの中身は実装しなくて良い(してはならない)です。

 複数のサブクラス側で実装することを前提として作られた修飾子です。


・final


 final修飾子をつけると、そのクラスを継承することが出来なくなります。もし、継承するようなコードを書くと、

 コンパイル時にエラーが出ます。


・public


 public修飾子をつけると、アプリケーション内のどのクラスからでもアクセスできるようになります。

 逆に、これを指定しない場合は、現在のパッケージからしかこのクラスを参照できません。


■変数の修飾子


final、private、protected、public、static、transient、volatileの7つありますが、今回は

final、staticのみ説明します。


・final


 final修飾子をつけると、定数になります。C言語で言うところの、defineみたいな役割で、変更したくない値

 などに付けると便利です。円周率とか。


・static


 static修飾子をつけると、静的変数となります。つまり、インスタンス化しなくても使用できる変数です。


ちなみに、修飾子を一切つけないと、同じパッケージ内のコードからしかアクセスできない状態となります。


■メソッドの修飾子


abstract、final、native、private、protected、public、static、synchronizedの8つありますが、今回は

abstract、final、staticのみ説明します。


・abstract


 クラスの所でも説明しましたが、クラスにabstractをつけると、そのクラス内のメソッドには、何もつけないか

 abstractをつけないといけません。abstractをつけたら、そのメソッドはそのクラス内で実装できません。


・final


 finalをつけたメソッドは、オーバーライドができなくなります。final変数と同様に、書き換えができない、

 ということです。


・static


 静的メソッドとなります。つまり、インスタンス化しなくても使用できるメソッドのことです。逆に、staticを

 つけないと、インスタンスメソッドとなりますので、インスタンス化しないと使用できません。


---------------------


はい、今回は修飾子について紹介しました。以上です!

(P.205まで学習)