2012年10月29日月曜日

iPhone5買っちゃったぜふっふー(゜▽゜)

iPad mini
つい先日iPad miniを初め、いくつかの新製品がAppleより発表となりました。
また、MicrosoftからはWindows 8の発売がありました。
Amazon JapanからはKindleについてアナウンスがありました。

そして、それらとはほとんど関係なく、今更iPhone5買いました(゜д゜)
(塩崎)





iPhone5の発売から約一ヶ月、ついにiPhone5が手元に来ました!
つっても、4Sの月賦が残ってたんで買うかどうかで2週間迷ってて、予約したのが13日なんですけどね(テヘペロ(・ω<)

今まで使っていた携帯電話は、
A5404S(SONY ERICSSON)
W42K(京セラ)
W62S(SONY ERICSSON)

W-ZERO3[es](SHARP)
iPhone 3GS(Apple)
iPhone 4S(Apple)
Photon(Motorola)
iPhone5(Apple)
となり、今回の機種で8代目となります。


今回はiPhone4SからiPhone5への機種変更なので、去年の3GS→4Sほど大きな感動は無いと思っていました。
というより、大して変わってないから、今回は流して来年の5S(仮)まで待とうと思ってました。
ところが!近所のエディオンでiPhone5を触ったら驚き!何この速さ!
YouTubeの動画を全く待たないで見れる!LTEすげえ!

コレが機種変更する動機の全てでしたね。
すさまじく速いですよ、5は。

画面のサイズに関してはそんなに意識するほどの差では無いのですが、ふとした時に恩恵と持ちにくさを感じます。まあ、慣れでしょうね。
あと本体が軽く・薄くなったのは評価点です。
バッテリーに関してですが、LTE掴んでると持ちが悪い印象がありますが、きちんと測ったわけではないのであくまで僕の感覚です。

iPhone5、オススメです!


-->

2012年10月28日日曜日

ジブリっていいよね


ジブリっていいよね


10月06日に収録したpodcastです
上のタイトルをクリックすると再生します
(馬耳東風ラジオ)


出演は平賀、小林、塩崎
※山下欠席です。
今回はジブリなどアニメ映画がテーマです

podcastをお手持ちのiTunesに登録すると、
次回からの更新が自動的にあなたのiTunesにダウンロードされます
ぜひ登録してください(゜▽゜)

iTunesに登録するには、こちらのリンクをクリックしてください

よろしくお願いします


-->

2012年10月22日月曜日

別APKのServiceとAIDL通信を実装するサンプル

10月もいつの間にか終盤です。
塩崎です。
ここで白状しますが、実は僕はSEです。
プログラマです。
なので、たまにはプログラムに関する記事を書こうと思います(゜▽゜)
(塩崎)
今回紹介するのは最近流行りのAndroidのプログラムです。
Androidのアプリと言えば様々なものがありますが、今回はAIDLを用いたプロセス間通信についてざっくりサンプルコードを書いてみようと思います。
アプリの概要ですが、簡単なじゃんけんアプリです。
ただし、ActivityはGUIの処理のみで、コンピュータの手の生成や勝敗判定はActivityからパラメタを受け取ったServiceで行い、結果をActivityに返すという構成です。
目玉としては、ActivityとServiceを別のAPKにて実装すると言う点です。
それではまず、AIDLファイルのコードです。
パッケージはjp.bajitofu.masa.aidlsampleserviceです。
package jp.bajitofu.masa.aidlsampleservice;

interface IAIDLSampleService{
    //  プレイヤの手の文字列を返す
    String getStrMyHand(int inMyHand);
    //  コンピュータの手を生成し、文字列で返す
    String getStrEnmHand();
    //  勝敗を文字列で返す
    String getStrResult();
}
そして同パッケージにて上記AIDLを実装したServiceを記述します。
package jp.bajitofu.masa.aidlsampleservice;

import java.util.Random;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;

/**
 * じゃんけんの手と結果を計算するサービス
 * 
 * @author masashio
 * 
 */
public class AIDLSampleService extends Service {
 // じゃんけんの手の配列
 private final String[] HAND = { "グー", "チョキ", "パー" };
 // じゃんけんの結果の配列
 private final String[] RESULT = { "あいこ!", "あなたの負け!", "あなたの勝ち!" };

 // デバッグ用
 private final String TAG = "AIDLSampleService";

 /**
  * サービスがバインドされた時にコールバックされる
  */
 @Override
 public IBinder onBind(Intent intent) {
  Log.d(TAG, "バインドされた!");
  // インテントが本物か確認(不要かも?)
  if (IAIDLSampleService.class.getName().equals(intent.getAction())) {
   // IADLSampleServiceインターフェースを実装したインスタンスを返す
   return aidlSampleServiceIf;
  }
  return null;
 }

 // IAIDLSampleServiceの実装
 IAIDLSampleService.Stub aidlSampleServiceIf = new IAIDLSampleService.Stub() {
  // プレイヤの手とコンピュータの手を持っておく
  int inMyHand, inEnmHand;

  /**
   * 結果を文字列で返す
   */
  @Override
  public String getStrResult() throws RemoteException {
   Log.d(TAG, "結果を返すよ!");
   return RESULT[(inMyHand - inEnmHand + 3) % 3];
  }

  /**
   * プレイヤの手の文字列を返す
   */
  @Override
  public String getStrMyHand(int inMyHand) throws RemoteException {
   Log.d(TAG, "プレイヤの手を返すよ!");
   this.inMyHand = inMyHand;
   return HAND[inMyHand];
  }

  /**
   * コンピュータの手を生成し、文字列で返す
   */
  @Override
  public String getStrEnmHand() throws RemoteException {
   Log.d(TAG, "コンピュータの手を返すよ!");
   inEnmHand = new Random().nextInt(2);
   return HAND[inEnmHand];
  }
 };

}
続いてActivity側です。
こちらのパッケージ名はjp.bajitofu.masa.aidlsampleclientです。
まずはXMLのレイアウトファイルです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/rockbtn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="グー"
            android:textSize="25dp" />

        <Button
            android:id="@+id/scissorsbtn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="チョキ"
            android:textSize="25dp" />

        <Button
            android:id="@+id/paperbtn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="パー"
            android:textSize="25dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="あなたの手:"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/myhand"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="20dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="コンピュータの手:"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/enmhand"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="20dp" />
    </LinearLayout>

    <TextView
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30dp" />

</LinearLayout>
最後に、クライアントとなるActivityのソースです。
package jp.bajitofu.masa.aidlsampleclient;

import jp.bajitofu.masa.aidlsampleservice.IAIDLSampleService;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AIDLSample extends Activity {
 // IAIDLSampleServiceのインスタンス
 private IAIDLSampleService aidlSampleServiceIf;

 // UIパーツのインスタンス
 private Button rockBtn, scissorsBtn, paperBtn;
 private TextView myHandView, enmHandView, resultView;

 // デバッグ用
 private final String TAG = "AIDLSample";

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_aidlsample);

  // IAIDLSampleServiceをバインド
  Intent intent = new Intent(IAIDLSampleService.class.getName());
  bindService(intent, aidlSampleServiceConn, BIND_AUTO_CREATE);

  // UIパーツ取得
  rockBtn = (Button) findViewById(R.id.rockbtn);
  scissorsBtn = (Button) findViewById(R.id.scissorsbtn);
  paperBtn = (Button) findViewById(R.id.paperbtn);
  myHandView = (TextView) findViewById(R.id.myhand);
  enmHandView = (TextView) findViewById(R.id.enmhand);
  resultView = (TextView) findViewById(R.id.result);

  // ボタンにクリックリスナーを登録
  rockBtn.setOnClickListener(new myBtnClickListener());
  scissorsBtn.setOnClickListener(new myBtnClickListener());
  paperBtn.setOnClickListener(new myBtnClickListener());

 }

 @Override
 protected void onDestroy() {
  // IAIDLSampleServiceをunbind
  unbindService(aidlSampleServiceConn);

  super.onDestroy();
 }

 /**
  * クリックリスナー実装クラス
  * 
  * @author masashio
  * 
  */
 private class myBtnClickListener implements OnClickListener {
  // 手の定数
  private final int ROCK = 0, SCISSORS = 1, PAPER = 2;

  // プレイヤの手を持っておく
  int inMyHand;

  /**
   * クリックされた時の挙動
   */
  @Override
  public void onClick(View view) {
   Log.d(TAG, "クリックされたよ!");

   // 自分の手を数値化する
   switch (view.getId()) {
   case R.id.rockbtn:
    inMyHand = ROCK;
    break;
   case R.id.scissorsbtn:
    inMyHand = SCISSORS;
    break;
   case R.id.paperbtn:
    inMyHand = PAPER;
    break;
   default:
    // なんかエラー
    inMyHand = -1;
   }

   // サービスインターフェースを叩く
   try {
    myHandView.setText(aidlSampleServiceIf.getStrMyHand(inMyHand));
    enmHandView.setText(aidlSampleServiceIf.getStrEnmHand());
    resultView.setText(aidlSampleServiceIf.getStrResult());
   } catch (RemoteException e) {
    // やばいエラー
    Log.d(TAG, "RemoteException");
   } catch (NullPointerException e) {
    // サービスが死んでるとぬるぽが返る
    Log.d(TAG, "ぬるぽ(´・ω・`)");
   }
  }

 }

 /**
  * サービスと接続・切断された時の処理
  */
 private ServiceConnection aidlSampleServiceConn = new ServiceConnection() {

  /**
   * サービスに接続された
   */
  @Override
  public void onServiceConnected(ComponentName name, IBinder service) {
   // サービスのインターフェースを取得する
   aidlSampleServiceIf = IAIDLSampleService.Stub.asInterface(service);
   Log.d(TAG, "インターフェース取得!");
  }

  /**
   * サービスと切断された
   */
  @Override
  public void onServiceDisconnected(ComponentName name) {
   aidlSampleServiceIf = null;
   Log.d(TAG, "サービスと切断!");
  }

 };

}
以上です。
Androidの開発環境構築してある方は、ぜひ実行してみたください(゜▽゜)
それではまた!




2012年10月21日日曜日

ハロウィンはカニ


ハロウィンはカニ


10月06日に収録したpodcastです
上のタイトルをクリックすると再生します
(馬耳東風ラジオ)


出演は平賀、小林、塩崎
※山下欠席です。
今回はハロウィンがテーマです

podcastをお手持ちのiTunesに登録すると、
次回からの更新が自動的にあなたのiTunesにダウンロードされます
ぜひ登録してください(゜▽゜)

iTunesに登録するには、こちらのリンクをクリックしてください

よろしくお願いします


-->

2012年10月17日水曜日

犠牲になったのだ・・・

どうも、大自然の甘党、幻担当の幻の僕です。1ヶ月とちょっとぶりです。
もはや幻です。この記事を読んだ貴方はラッキーです。そんな貴方は幻と化すでしょう。嘘です。
記事書かないでごめんなさい。けしてサボってたわけじゃ・・・ごめんなさい。
(山下)


さて、この1ヶ月とちょっとで少し生活環境が変わりました。今までの生活から解き放たれました。これで秘めたる右腕の力を存分に振るうことができ引越しました。
ええ、今まで住んでた場所からほんのちょっと離れた場所に引越しました。
いやー引越しって大変ですね。まずモノがどこにあるかわからない、髭剃りが、バリカンが、爪切りが、綿棒が、調味料諸々がどこに仕舞ったっけ状態。朝のドタバタコメディーの始まりです。

そして、僕の靴が幻と化しました。

まだ今年買った靴なのに・・・両親いわく僕が仕事に行ってる際業者が間違って持ってたんじゃね? とのこと 

まだ今年買ったお気に入りの靴なのに・・・引越しの犠牲になったのだ・・・

みなさんも引越しの時は幻と化すものがないように気を付けましょう。

それでは。


-->

2012年10月15日月曜日

大自然の甘党も半年経ちました

チーム馬耳東風、Webマスターの塩崎です。
僕達のブログ、大自然の甘党がスタートしたのは2012年の4月。
それから早半年が経ちました。
この辺りで、今までの記事の中からアクセスが多いものを紹介しましょう!
(塩崎)

2012年10月12日金曜日

新潟おみやげ

どうも!大自然の甘党の就職活動をしている方の平賀です。
そして、就職先が見つかりました。探し始めてから1ヶ月ちょっと。
長かった…。もう二度とやりたくないね!将来は、看護師になれる予定です。未定ですが。
とりあえず、連絡おば。
(平賀)

2012年10月8日月曜日

TimeCapsuleを買いましたよ!

最近とんと寒くなりまして、元気がなくなってきた塩崎です。
記事サボっててすみません。。。
なんかね、ラジオの更新も僕が担当してるもんで、ラジオ更新すると記事も書いた気になっちゃってついサボっちゃうんですよ(´・ω・`) 以後気をつけます。
で、今回はAppleのTime Capsuleを購入したので、そのレポートです!
(塩崎)

2012年10月5日金曜日

メタボな体をなんとかする

どうも!大自然の甘党の結局最初の出だしを考えてなかった方の平賀です。
思いつかなかっただけなんですよ。何か無いもんですかね?
最近は世の中、不景気だとか、島がどうとか、誘拐だとか、世紀末に近づいてる気がします。
現在絶賛NEETになった私にはあまり関係の無い話しですが(笑)
(平賀)