--/--/--(--)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント(-) | トラックバック(-) | --:--:--

2010/12/26(日)


マウスコンピューターの「LuvPad AD100」なるものを入手。色々触ってみたんですが、正直なところ、あんまりいい印象は持てなかったですね。iPadと比べちゃいけないんでしょうけど、タッチセンサーがいまいちで動きが悪く、JavaScriptの性能も良くないです。私はテスト機として使用するのでいいんですが、GPSはない、Flashも見れない、Androidマーケット使えない、カメラもないでは、コンシューマはこれでどうやって遊ぶのだろうと疑問に思いました。

ただ、余計なものがまったくついていないこの素っ気無さ加減はテスト機として最適で、android開発者にとってはもってこいの端末かもしれません。上級者用といったところでしょうか。
スポンサーサイト
コメント(0) | トラックバック(0) | 13:35:04

2010/12/25(土)


android各種端末とその情報です(改訂版)。
最新版はこちら

docomo
NameTargetSkinNotes
LYNX SH-10B
(SHARP)
Android 1.6
- API Level 4
(FWVGA++)
(480 x 960)
Memory: 512MB
Display:
5インチ(83 x 148 x 17.8)
LYNX 3D SH-03C
(SHARP)
2.1-update1
- API Level 7
WVGA800
(480 x 800)
Memory: 512MB
Display:
3.8インチ(62 x 123 x 13.4)
Xperia
(Sony Ericsson)
2.1-update1
- API Level 7
WVGA854
(480 x 854)
Memory: 384MB
Display:
4インチ(63 x 119 x 13.1)
REGZA Phone IS04/T-01C
(富士通東芝)
2.1-update1
- API Level 7
WVGA854
(480 x 854)
Memory: 512MB
Display:
4インチ(62 x 126 x 11.9)
GALAXY S
(Samsung)
Android 2.2
- API Level 8
WVGA800
(480 x 800)
Memory: 512MB
Display:
4インチ(64 x 122 x 9.9)
GALAXY Tab
(Samsung)
Android 2.2
- API Level 8
(WSVGA)
(600 x 1024)
Memory: 512MB
Display:
7インチ(120 × 190 × 12.1)

au
NameTargetSkinNotes
IS01
(SHARP)
Android 1.6
- API Level 4
(FWVGA++)?
(480 x 960)
Memory: 256MB
Display:
5インチ(83 x 149 x 17.9)
IS03
(SHARP)
2.1-update1
- API Level 7
HVGA?
(320 x 480)*2
Memory: 512MB
Display:
3.5インチ(63 x 121 x 13.3)
IS05
(SHARP)
Android 2.2
- API Level 8
WVGA854
(480 x 854)
Display:
3.4インチ(55 x 112 x 14)
SIRIUSα IS06
(Pantech)
Android 2.2
- API Level 8
WVGA800
(480 x 800)
Display:
3.7インチ(59.4 x 115.95 x 11.2)

SoftBank
NameTargetSkinNotes
Desire
(HTC)
Android 2.2
- API Level 8
WVGA800
(480 x 800)
Memory: 512MB
Display:
3.7インチ(60 x 119 x 11.9)
GALAPAGOS 003SH
(SHARP)
Android 2.2
- API Level 8
WVGA800
(480 x 800)
Memory: 512MB
Display:
3.8インチ(62 x 121 x 12)


NameTargetSkinNotes
LuvPad AD100
(mouse computer)
Android 2.2
- API Level 8
(WSVGA)
(600 x 1024)
Memory: 512MB
Display:
10.1インチ(169 × 260 × 13.9)

コメント(2) | トラックバック(0) | 12:25:51

2010/12/13(月)


本をめくるように指でなぞることでページを切り替えるには、ViewFlipperクラスを使用します。ViewFlipperを使うことでページごとにいちいちActivityを作らず、ビューを切り替えることができます。
「めくる」という指の動きは、指で押した座標と指を離した座標を比較することで判断します。タッチイベントの詳細については、以下を参照のこと。
Viewのタッチイベント

ページを切り替える際にアニメーションさせることもできます。アニメーションの詳細については、以下を参照のこと。
Tweenアニメーション

下の例では、3枚の画像(image_sample1.png、image_sample2.png、image_sample3.png)が指の動きで切り替わっていきます。

import android.app.Activity;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.view.View.OnTouchListener;
import android.widget.ViewFlipper;
 
public class MyClass extends Activity implements OnTouchListener{
 
 private ViewFlipper vf_ = null;
 private float lastX_ = 0.0f;
 
 private Animation leftIn_ = null; // 左から入ってくるアニメーション
 private Animation rightIn_ = null; // 右から入ってくるアニメーション
 private Animation leftOut_ = null; // 左へ抜けるアニメーション
 private Animation rightOut_ = null; // 右へ抜けるアニメーション
 
 public void myMethod(){
  vf_ = (ViewFlipper)this.findViewById(R.id.vfp_switcher);
  vf_.setDisplayedChild(0); // 1ページ目に設定
  vf_.setOnTouchListener(this);
 
  Animation leftIn_ = new TranslateAnimation(
   Animation.RELATIVE_TO_PARENT,-1.0f,
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,0.0f);
  leftIn_.setDuration(350);
  Animation rightIn_ = new TranslateAnimation(
   Animation.RELATIVE_TO_PARENT,1.0f,
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,0.0f);
  rightIn_.setDuration(350);
  Animation leftOut_ = new TranslateAnimation(
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,-1.0f,
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,0.0f);
  leftOut_.setDuration(350);
  Animation rightOut_ = new TranslateAnimation(
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,1.0f,
   Animation.RELATIVE_TO_PARENT,0.0f,
   Animation.RELATIVE_TO_PARENT,0.0f);
  rightOut_.setDuration(350);
 }
 
 public boolean onTouch(View v,MotionEvent event){
  switch(event.getAction()){
   case MotionEvent.ACTION_DOWN:
    lastX_ = event.getX();
    break;
 
   case MotionEvent.ACTION_UP:
    float currentX = event.getX();
    if(currentX - lastX_ > 10){ // 指を10px以上右方向にスライド
     vf_.setInAnimation(leftIn_); // 次ページは左から入ってきて
     vf_.setOutAnimation(rightOut_); // 現ページは右へ抜ける
     vf_.showNext(); // 次ページへ
    }else if(lastX_ - currentX > 10){ // 指を10px以上左方向にスライド
     vf_.setInAnimation(rightIn_); // 次ページは右から入ってきて
     vf_.setOutAnimation(leftOut_); // 現ページは左へ抜ける
     vf_.showPrevious(); // 前ページへ
    }
    break;
   }
  }
 }
}

ViewFlipperタグに囲まれた3つのImageViewがページに相当します。

res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
>
<ViewFlipper
android:id="@+id/vfp_switcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
>
<ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:scaleType="center"
 android:src="@drawable/image_sample1"
/>
<ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:scaleType="center"
 android:src="@drawable/image_sample2"
/>
<ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:scaleType="center"
 android:src="@drawable/image_sample3"
/>
</ViewFlipper>
</LinearLayout>
</LinearLayout>

コメント(0) | トラックバック(0) | 12:11:24

2010/12/11(土)


私が考えているのはどちらかというと、Ahfさんのおっしゃるようにどのように前提条件を揃えるのかとか、そもそも問題の認識はあるのか、みたいなほんとに入り口の議論を想定してたんですよね。

ただいかなる理由においても、一切の議論を否定してしまうのはどうかなと思いまして、コメントさせていただいたしだいです。可読性の問題は多くのプログラマが実際に経験しているにもかかわらず、「議論もするな」じゃいつまで経っても問題が解決の方向に向かわないと思うんです。

私の考えはインドリさんと同じで、属人的な部分とそうでない部分を分けることで、少なくとも属人的でない部分については理論的な議論が可能だということです。特にスキルレベルとか教育といった観点と密接に関連した議論ができるんじゃないかなぁ、と漠然と思っています。要するに低スキルが招く可読性低下の部分です。

また、低スキル者自身も問題ですが、実はそれを指導する側の問題もあって、指導する側は技術力はもちろんのことそれを明確に説明できる説明力という高いスキルが必要とされるので、実際の現場ではこのような教育は十分行き届いていないだろうというのが私の推測です。

意味なくメンバ変数をstaticにしてたら誰だって指摘しますよね。でも明確になぜかを説明できる人って意外と少ないんじゃないかと思ったりしてるんです。
コメント(0) | トラックバック(0) | 12:18:09

2010/12/07(火)


私のくだらない雑談でコメント欄を汚しては申し訳ないので、こちらに書こうと思います。

一口にソフトウェア開発と言っても、その領域は驚くほど広いです。「私はプログラマです」という人同士の会話で、相手の言ってることがちんぷんかんぷんだった、というのはよくあることです。

このコラムのコメント欄を見て、私もAhfさんと同じ感情を抱きました。人それぞれ色々な環境に身をおき、色々な経験をし、そしてそれを通じて色々な意見・主張を持っているのだなぁ、ということです。
例えば、ここでコメントなさっているかるたやさんは、

>ソースコードの可読性が良いからといって、保守性に優れているとは思えません。

と言っています。ソフトウェア開発者の多くがあまり新鮮味のない保守業務(というと御幣があるかな?)に従事しているなかで、主にプロトタイプ開発をなさっているという、なんともうらやましい環境にいる方で、コラムの内容も大変面白くいつも拝見させていただいています。この方のように常に新規開発をしている現場では、度重なる仕様変更や長期化した保守工程によってボロボロになったソースコードを見る機会は恐らくあまりないのでしょう。あくまで一例ですが、私のコラムにある坂本さんのコメントでは、引継ぎ業務においてその深刻さを物語っています。
また同じくコメントなさっているインドリさんは、周りのプログラミングスキルの低さに相当苦労なさっているようです。

このような環境の違いははなっから想定されるべきことですが、保守性や可読性といった基礎工学的な話をする場合は、論点以外の要因を注意深く取り払わないと議論が発散しかねないんですね。インドリさんの主張は単に周りのスキルレベルの低さが問題なだけなように思いますし、Ahfさんの現場では、そもそも上流工程に保守性の観点が盛り込まれていないことが問題なように思います。

ソフトウェア工学が対象とするものは、主に中~大規模のプログラムにおける技術論であったり方法論であったりすると思っています。なぜなら小規模なものはどう作っても意外となんとかなるからで、あまり本質的な問題は出てこないんですね。たいていの場合、設計工程がごっそり抜け、保守工程がプログラマの力ずくで成り立っているので、下流工程は相当優秀な人でないと勤まりませんけどね。

色々言いましたが要するに工学の話をする場合は、プロジェクトが良好な業務で遂行されている前提に立ち、それでもなお問題が起こる場合を議論しなければならないと思うのです。そしてそこで生まれた工学的な思想は、大部分が小規模プログラムにも適用できるものになるでしょう。

ちなみに私はソフトウェア工学なるものをまともに勉強したことがありません。あくまで実際の現場で得た経験や、それに付随する学習をもとにしたものであり、ここでの主張は決して机上の空論になっているとは思いません。
コメント(0) | トラックバック(0) | 00:40:35

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。