2014年1月18日土曜日

英語の勉強にも数学(集合)の勉強にもなる動画

数学の教科書を見ながら動画をみればきっと理解できますよ

2013年5月2日木曜日

インタフェース - Java入門

G.W.開けにJavaのインタフェースを学生に説明することになったので資料を作ってみました。

いざ作ってみると,シンプルに教えるのはなかなか難しいです。網羅的に説明しようとすると盛り沢山になって学生たちが消化不良になることは容易に予想出来ます。

最終的には,元々のテーマである「振る舞いの変更」に絞って資料をつくってみました。slideshare にアップしてあります。PDFがslideshare経由でダウンロードできると思います。


2012年11月18日日曜日

参照型変数ってなに?

プログラミング初心者はポインター変数で躓くようです。JavaにはC言語のようなポインターを操作するポインター変数はありませんが、参照型の変数があります。

参照が理解できない学生にどうやって理解してもらうか?結構ハードルが高いです。C言語のポインターの方がまだ説明はしやすいですね。(学生が理解できるかは別として)

ということで、ちょっとした資料を作ってみました。


オリジナル(Keynoteファイル) はこちら

2012年10月28日日曜日

ループ処理ープログラミング

ループとは繰り返し同じ処理を行うことを指します。
この動画は犬を移動させるアニメーションのプログラミングです。ループを理解するには分かりやすい例だと思います。



2012年4月22日日曜日

分からない学生が躓く点その1(関数・メソッド)

Javaを使ってプログラミングを教えていますが、学生が躓く点が共通していることが分ってきました。
見よう見まねでプログラミングしていればそのうちわかるようになるだろうと思っていましたが、考えが甘かったです。
分からない学生は既存のコードから逆算して「あーこういうことか!」と推測する力が弱いと感じます。よって、何時まで経っても暗号かおまじないのままです。写経のように書き写すだけで進展がありません。

幾つか躓くポイントがあるのですが、まず大きいのは関数・メソッドです。何がわからないかというと、たとえば呼び出しと宣言が同じファイルに書いてあることが混乱を招くようです。例えば、

正解サンプル:
public static void main(String[] args){
   int year = 2010;
         if( isLeapYear(year) ){
            System.out.println("LeapYear");
         }
}
public static boolean isLeapYear(int val){
   boolean result = false;
   :
   :
   return result;
}

こんな感じのコードを書いてもらおうと課題を出すと、

 メソッドの呼び出しを
   if( isLeapYear(int year) ){
     :
  }
と書いたり、定義の箇所で
 public static boolean isLeapYear(year) と書きます。

その他にはメソッドの返り値のreturn文ですが、
 return 100; というようにリテラルであれば書けていたのに変数を返すように指示すると

 return int a; と書いたりします。

なんとなく、理解できていない点はわかるのですが、学生に説明できるまでにまとめられなく、自分の力不足を実感します。

変数が値を保存する箱だという定番の説明が理解できるのですが、メソッドへの引数、リターン文で値を返すということになると途端にできなくなります。

いまだ引数、パラメータについては上手く説明できませんが、返り値は次のように説明すると大体わかってくれます。

  int a = 1 + 3;

これは 1と3の計算結果が変数 aに格納される。それと同じで、

     int a = foobar(1,3) ;

メソッドの実行結果が aに格納される。aに格納する値が何かというとreturn 文に書かれている値である。ここで値を「返す」と説明してしまうと、返すとはどういうことかわからず混乱してしまいます。

型が厳しいJavaを教えることがそもそも無謀というレベルかも知れませんが、スクリプト言語をやっとこさ覚えたところで将来エンジニアにあとしてやっていくのは無理だと思うので、試金石という意味でも今後もJavaで行くのが良いと考えています。(わかりませんけどねw)

2012年2月21日火曜日

単4電池に代えてApple Magic Mouse を軽量化


AppleのMagic Mouseは単三電池を二本使います。一日中使っているとその重さで手首が痛くなってきます。単4電池にできたらいいのにと思っていたらありました、スペーサ。単2や単1に変換するスペーサは見かけるのですが、単四を単三に変換するスペーサはあまりありません。


amazonで5本パックのを見つけたのでそれを購入。直ぐに届いたので早速交換してみました。効果テキメン!


軽くなって大分使いやすくなりました。電池の持ちは悪くなるでしょうが eneloopにしたのでこまめに充電すれば大丈夫でしょう。なんとなく沢山単三のeneloopを買ったあとに切れると困るリモコンは単4が多いことに気づいて後悔してます。これからは単4で統一し、単三のデバイスにはスペーサをつかう方法で行きたいと思います。

2011年8月15日月曜日

Titanium Mobileで作る iPhone/Androidアプリ


Titanium mobileはAppcelerator社が提供するスマートフォンアプリの開発環境です。Javascriptでコードを記述することでiPhoneやipad用のアプリとAndroid用のアプリの両方が生成できます。

Androidアプリの開発経験は有りましたが、iOSアプリは未経験でした。



今回、Titaniumを試すにあたりエミュレータのみでiOSアプリを動かしてみていますが、エミュレータがAndroidと比べて非常に軽快に動くことに感動しています。というか、Android開発はエミュレータを使わず実機を使うべきですね。USBで繋ぐだけでエミュレータと同様にインストール&起動がコマンド一発で行えるのですから、あの重いエミュレータを使う理由はないです。(持っていない実機のテストには必要ですが)


この本のコードを入力しながらTitaniumの勉強をしていますが、これはハマりますね。本当に簡単にアプリが開発できます。とはいえ色々ハマることも多く、特に受託開発で使うにはまだまだリスクが高いと感じますが、非常に可能性のあるテクノロジーであり、継続してウォッチしノウハウを蓄積していきたいと思います。



P.S.
 同様な開発環境としてPhoneGapにも注目しています。そのうちTitaniumとの比較をしてみたいと思います。

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger