生がつらい! ― 2012年01月28日 02:43
GOアイテムの画像
やっと、終わった!。
今日の最後はかなり、シンドかった。
(新たに「Go」アイテムを作成する)
http://thinkit.co.jp/story/2010/06/03/1551?page=0,0
エクリプスのエラー表示を消すときに、変なことをやってしまったらしい。何度も何度も書き換えて、変数が何かに変わってしまっていることを発見して修正する(これに気づくのにほぼ2時間。エラーを消せばいいというものではない)。
コードを舐めるようにチェックして、意味を考え、バグの原因を潰していく。
うーん!、これがトンネルというものだ。プログラミングの真髄。バグ取り3年。
そして、先ほど、ようやくバグフィックスに成功!。
やはり、エクリプスの便利機能に翻弄される。仕掛けに使われてしまった。コーディングとは、極めて人間臭くかつ泥臭い仕事であることを忘れていた。
これで、無事にコピペプログラミングの成功である。完成!。
せっかくなので、全部のコードをもう一度コピーしておく。
</MyWebView/src/com/example/mywebview/MyWebView.java>
package com.example.mywebview;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebView extends Activity {
private Intent intentGoActitvity;
/** Called when the activity is first created.
* @return
* @return
* @return */
public boolean onMenuItemSelected(int featureId,MenuItem item){
switch (item.getItemId()) {
case ABOUT_MENU_ID :
//Intentの作成
Intent intentAboutActitvity = new Intent(this,AboutActivity.class);
startActivity(intentAboutActitvity);
return true;
case GO_MENU_ID :
//Intentの作成
Intent intentGotoActitvity = new Intent(this,GoActivity.class);
startActivityForResult(intentGotoActitvity, GO_MENU_ID);
return true;
default :
break;
}
return super.onMenuItemSelected(featureId, item);
}
//オプション・メニューを作成する
private static final int GO_MENU_ID = Menu.FIRST+1;
private static final int ABOUT_MENU_ID = Menu.FIRST;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//URL入力ダイアログ表示メニュー・アイテム
MenuItem gotoItem = menu.add(0, GO_MENU_ID, 0 ,R.string.menu_item_name_go);
gotoItem.setIcon(android.R.drawable.ic_menu_search);
//Aboutダイアログ表示メニュー・アイテム
MenuItem aboutItem = menu.add(0, ABOUT_MENU_ID, 0 ,R.string.menu_item_name_about);
aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//ハンドリング対象外のリクエストは無視
if (requestCode != GO_MENU_ID) {
return;
}
//OKで以外で戻ってきたら何もしない
if (resultCode != RESULT_OK) {
return;
}
//URLが入力されたと見なしロードする
WebView webView = (WebView)findViewById(R.id.main_webview);
webView.loadUrl(data.getStringExtra(GoActivity.THE_URL));
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView webView = (WebView)findViewById(R.id.main_webview);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://google.co.jp");
}
}
</MyWebView/src/com/example/mywebview/AboutActivity.java>
package com.example.mywebview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class AboutActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
// OKボタン
Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// 閉じる
finish();
}
});
}
}
</MyWebView/src/com/example/mywebview/GoActivity.java
package com.example.mywebview;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class GoActivity extends Activity {
public static final String THE_URL = "THE_URL";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.go_activity);
// OKボタン
Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
//Editコントロールから文字列を取得する。
EditText edit = (EditText)findViewById(R.id.url_edit_text);
//入力値をIntentの拡張項目へ登録
Intent intent = new Intent();
intent.putExtra(THE_URL, edit.getText().toString());
// 閉じる
setResult(RESULT_OK, intent);
finish();
}
});
}
}
</MyWebView/gen/com/example/mywebview/R.java>
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.example.mywebview;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button_ok=0x7f050000;
public static final int main_webview=0x7f050002;
public static final int url_edit_text=0x7f050001;
}
public static final class layout {
public static final int about_activity=0x7f030000;
public static final int go_activity=0x7f030001;
public static final int main=0x7f030002;
}
public static final class string {
public static final int about_appname=0x7f040005;
public static final int app_name=0x7f040001;
public static final int go_edit_title=0x7f040004;
public static final int hello=0x7f040000;
/** オプション・メニュー用文字列
*/
public static final int menu_item_name_about=0x7f040002;
public static final int menu_item_name_go=0x7f040003;
}
}
</MyWebView/res/layout/main.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/main_webview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
</MyWebView/res/layout/about_activity.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="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<!-- スペーサー -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="50dip" >
</LinearLayout>
<!-- アプリケーション・タイトル -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_appname"
/>
</LinearLayout>
<!-- スペーサー -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="50dip" >
</LinearLayout>
<!-- OKボタン -->
<Button android:id="@+id/button_ok"
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=" OK "
/>
</LinearLayout>
</MyWebView/res/layout/go_activity.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"
android:gravity="center_horizontal"
>
<!-- スペーサー -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="50dip">
</LinearLayout>
<!-- エディット・コントロールのタイトル -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/go_edit_title"
/>
</LinearLayout>
<!-- エディット・コントロール -->
<EditText
android:text="http://"
android:id="@+id/url_edit_text"
android:hint="URL"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginBottom="20dip"
>
</EditText>
<!-- Go ボタン -->
<Button
android:id="@+id/button_ok"
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=" OK "
/>
</LinearLayout>
</MyWebView/res/values/strings.xml>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MyWebView!</string>
<string name="app_name">MyWebView</string>
<!-- オプション・メニュー用文字列 -->
<string name="menu_item_name_about">About</string>
<string name="menu_item_name_go">Go</string>
<string name="go_edit_title">Where do you want to go today?</string>
<string name="about_appname">MyWebView Version.1.0.0</string>
</resources>
</MyWebView/AndroidManifest.xml>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mywebview"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="4" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MyWebView"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AboutActivity">
</activity>
<activity android:name=".GoActivity">
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
これだけの定義体で、とりあえず動くブラウザーができる。ちなみに、apkファイルの大きさは、なんと18キロバイトである。有難い時代になったものだ。
最終回はさすがに、生中継をする余裕はなかったが、せっかく開発環境を(ただで)手に入れたのだから、もう少しまともに使えるようになったら、アンドロイドマーケットに出せるようなものを作ってみたいものだ(コピペで・・・)。
やっと、終わった!。
今日の最後はかなり、シンドかった。
(新たに「Go」アイテムを作成する)
http://thinkit.co.jp/story/2010/06/03/1551?page=0,0
エクリプスのエラー表示を消すときに、変なことをやってしまったらしい。何度も何度も書き換えて、変数が何かに変わってしまっていることを発見して修正する(これに気づくのにほぼ2時間。エラーを消せばいいというものではない)。
コードを舐めるようにチェックして、意味を考え、バグの原因を潰していく。
うーん!、これがトンネルというものだ。プログラミングの真髄。バグ取り3年。
そして、先ほど、ようやくバグフィックスに成功!。
やはり、エクリプスの便利機能に翻弄される。仕掛けに使われてしまった。コーディングとは、極めて人間臭くかつ泥臭い仕事であることを忘れていた。
これで、無事にコピペプログラミングの成功である。完成!。
せっかくなので、全部のコードをもう一度コピーしておく。
</MyWebView/src/com/example/mywebview/MyWebView.java>
package com.example.mywebview;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebView extends Activity {
private Intent intentGoActitvity;
/** Called when the activity is first created.
* @return
* @return
* @return */
public boolean onMenuItemSelected(int featureId,MenuItem item){
switch (item.getItemId()) {
case ABOUT_MENU_ID :
//Intentの作成
Intent intentAboutActitvity = new Intent(this,AboutActivity.class);
startActivity(intentAboutActitvity);
return true;
case GO_MENU_ID :
//Intentの作成
Intent intentGotoActitvity = new Intent(this,GoActivity.class);
startActivityForResult(intentGotoActitvity, GO_MENU_ID);
return true;
default :
break;
}
return super.onMenuItemSelected(featureId, item);
}
//オプション・メニューを作成する
private static final int GO_MENU_ID = Menu.FIRST+1;
private static final int ABOUT_MENU_ID = Menu.FIRST;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//URL入力ダイアログ表示メニュー・アイテム
MenuItem gotoItem = menu.add(0, GO_MENU_ID, 0 ,R.string.menu_item_name_go);
gotoItem.setIcon(android.R.drawable.ic_menu_search);
//Aboutダイアログ表示メニュー・アイテム
MenuItem aboutItem = menu.add(0, ABOUT_MENU_ID, 0 ,R.string.menu_item_name_about);
aboutItem.setIcon(android.R.drawable.ic_menu_info_details);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//ハンドリング対象外のリクエストは無視
if (requestCode != GO_MENU_ID) {
return;
}
//OKで以外で戻ってきたら何もしない
if (resultCode != RESULT_OK) {
return;
}
//URLが入力されたと見なしロードする
WebView webView = (WebView)findViewById(R.id.main_webview);
webView.loadUrl(data.getStringExtra(GoActivity.THE_URL));
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView webView = (WebView)findViewById(R.id.main_webview);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://google.co.jp");
}
}
</MyWebView/src/com/example/mywebview/AboutActivity.java>
package com.example.mywebview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class AboutActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
// OKボタン
Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// 閉じる
finish();
}
});
}
}
</MyWebView/src/com/example/mywebview/GoActivity.java
package com.example.mywebview;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class GoActivity extends Activity {
public static final String THE_URL = "THE_URL";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.go_activity);
// OKボタン
Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
//Editコントロールから文字列を取得する。
EditText edit = (EditText)findViewById(R.id.url_edit_text);
//入力値をIntentの拡張項目へ登録
Intent intent = new Intent();
intent.putExtra(THE_URL, edit.getText().toString());
// 閉じる
setResult(RESULT_OK, intent);
finish();
}
});
}
}
</MyWebView/gen/com/example/mywebview/R.java>
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.example.mywebview;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button_ok=0x7f050000;
public static final int main_webview=0x7f050002;
public static final int url_edit_text=0x7f050001;
}
public static final class layout {
public static final int about_activity=0x7f030000;
public static final int go_activity=0x7f030001;
public static final int main=0x7f030002;
}
public static final class string {
public static final int about_appname=0x7f040005;
public static final int app_name=0x7f040001;
public static final int go_edit_title=0x7f040004;
public static final int hello=0x7f040000;
/** オプション・メニュー用文字列
*/
public static final int menu_item_name_about=0x7f040002;
public static final int menu_item_name_go=0x7f040003;
}
}
</MyWebView/res/layout/main.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/main_webview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
</MyWebView/res/layout/about_activity.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="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<!-- スペーサー -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="50dip" >
</LinearLayout>
<!-- アプリケーション・タイトル -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_appname"
/>
</LinearLayout>
<!-- スペーサー -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="50dip" >
</LinearLayout>
<!-- OKボタン -->
<Button android:id="@+id/button_ok"
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=" OK "
/>
</LinearLayout>
</MyWebView/res/layout/go_activity.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"
android:gravity="center_horizontal"
>
<!-- スペーサー -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="50dip">
</LinearLayout>
<!-- エディット・コントロールのタイトル -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/go_edit_title"
/>
</LinearLayout>
<!-- エディット・コントロール -->
<EditText
android:text="http://"
android:id="@+id/url_edit_text"
android:hint="URL"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginBottom="20dip"
>
</EditText>
<!-- Go ボタン -->
<Button
android:id="@+id/button_ok"
style="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=" OK "
/>
</LinearLayout>
</MyWebView/res/values/strings.xml>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MyWebView!</string>
<string name="app_name">MyWebView</string>
<!-- オプション・メニュー用文字列 -->
<string name="menu_item_name_about">About</string>
<string name="menu_item_name_go">Go</string>
<string name="go_edit_title">Where do you want to go today?</string>
<string name="about_appname">MyWebView Version.1.0.0</string>
</resources>
</MyWebView/AndroidManifest.xml>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mywebview"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="4" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MyWebView"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AboutActivity">
</activity>
<activity android:name=".GoActivity">
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
これだけの定義体で、とりあえず動くブラウザーができる。ちなみに、apkファイルの大きさは、なんと18キロバイトである。有難い時代になったものだ。
最終回はさすがに、生中継をする余裕はなかったが、せっかく開発環境を(ただで)手に入れたのだから、もう少しまともに使えるようになったら、アンドロイドマーケットに出せるようなものを作ってみたいものだ(コピペで・・・)。
R.javaな話 ― 2012年01月28日 03:36
Goメニューを追加
ちょっとハズカシイ話だ。
http://kfujito2.asablo.jp/blog/2012/01/27/6309000
R.javaのカラーコードと思っていたのは、実は識別値だってこと。
(ありがたいページ)
http://d.hatena.ne.jp/corrupt/20110512/1305186977
(実際の自動生成の様子)
http://www.javadrive.jp/android/xml_layout/index2.html
一生懸命コピーしたり、色コードだと思って解析したりして損した。でも、このファイルができるおかげで、便利になっているので、R.javaに感謝である(二度とコピーしないけど)。
(こんな記事も)
http://techbooster.jpn.org/andriod/environment/5796/
(自動ビルドで自動生成)
http://androidon.jp/sippai/rjava/
皆さん、R.javaを大切にね!。
ちょっとハズカシイ話だ。
http://kfujito2.asablo.jp/blog/2012/01/27/6309000
R.javaのカラーコードと思っていたのは、実は識別値だってこと。
(ありがたいページ)
http://d.hatena.ne.jp/corrupt/20110512/1305186977
(実際の自動生成の様子)
http://www.javadrive.jp/android/xml_layout/index2.html
一生懸命コピーしたり、色コードだと思って解析したりして損した。でも、このファイルができるおかげで、便利になっているので、R.javaに感謝である(二度とコピーしないけど)。
(こんな記事も)
http://techbooster.jpn.org/andriod/environment/5796/
(自動ビルドで自動生成)
http://androidon.jp/sippai/rjava/
皆さん、R.javaを大切にね!。
安卓平板 ― 2012年01月28日 16:31
安卓平板
今日は日本での今年初めての土曜休みの日。
ルンルン気分でアキバにGO!。
こんなお店に行ってみた。
(店の名前が分からないホームページ)
http://shop.apadjp.com/
で、探していたのはこれ!
(パラディン:騎士)
http://shop.apadjp.com/products/detail.php?product_id=174
(メーカーのサイト)
http://www.ainol.com/plugin.php?identifier=ainol&module=product&action=info&productid=43
怪しげな中華パッドにICSが載っている。当然在庫なし、当然2月中旬入荷予定、当然千客万来、当然待ちきれない、当然、そのまま帰ってきた。
店に在庫のある商品の価格は、2万5千円位。めちゃくちゃ安いわけではなく、アマゾンで買うより若干値引きしてある程度。
秋葉原中央通り沿いにある(8階だけど)、中華パッド専門店だ。店には、中華パッドを支えるアームの類が豊富においてある。7千円位。7インチのタブレット端末を、家の中で手ブラで使うのが流行りなのか?。
まあ、いい。
ちょっと欲求不満になったので、某量販店でアスースのTF201Tをいじってくる。やはり、速い。テグラ3は伊達じゃない。早く高解像度版(盤?)を出して欲しい(当然、ICS)。
ブックセンターで、開発本を買い求める。
(作りながら覚えるAndroidプログラミング)
http://www.amazon.co.jp/%E4%BD%9C%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E8%A6%9A%E3%81%88%E3%82%8BAndroid%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E6%95%B4%E3%81%88%E6%96%B9%E3%81%8B%E3%82%89%E3%80%81Android%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%81%A7%E3%81%AE%E5%85%AC%E9%96%8B%E3%81%BE%E3%81%A7%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88-%E6%9D%BE%E5%B2%A1-%E5%AE%A3/dp/4797362790
何種類か、ぱらぱらめくってみて、飽きずに読めそうで、かつ、私でもなんとかなりそうな本を探す。JAVA屋さんが書いている本が多くて、そっちに話がいきすぎるとツライ。かといって、開発環境をインストールしてサンプルプログラムを動かしておしまい、というレベルは卒業している。プロのプログラマーではなく、少しだけJAVAのコードが読めて、手っ取り早く、とにかく動くアプリが作れそうな本を選んだ。
どうも、ゲームアプリを作るのが流行っているようで、解説本の半分近くがゲームの関係だった。金になるし、なにより面白そうだ。が、私はやらない。かつて、ゲームにハマって体調を崩したことがあり、以来、近寄らないようにしている(君子なので・・・?)。
今日からは、じっくりと腰を据えて、アンドロイドのアプリをいじり倒すかな(コピペして・・・)。
今日は日本での今年初めての土曜休みの日。
ルンルン気分でアキバにGO!。
こんなお店に行ってみた。
(店の名前が分からないホームページ)
http://shop.apadjp.com/
で、探していたのはこれ!
(パラディン:騎士)
http://shop.apadjp.com/products/detail.php?product_id=174
(メーカーのサイト)
http://www.ainol.com/plugin.php?identifier=ainol&module=product&action=info&productid=43
怪しげな中華パッドにICSが載っている。当然在庫なし、当然2月中旬入荷予定、当然千客万来、当然待ちきれない、当然、そのまま帰ってきた。
店に在庫のある商品の価格は、2万5千円位。めちゃくちゃ安いわけではなく、アマゾンで買うより若干値引きしてある程度。
秋葉原中央通り沿いにある(8階だけど)、中華パッド専門店だ。店には、中華パッドを支えるアームの類が豊富においてある。7千円位。7インチのタブレット端末を、家の中で手ブラで使うのが流行りなのか?。
まあ、いい。
ちょっと欲求不満になったので、某量販店でアスースのTF201Tをいじってくる。やはり、速い。テグラ3は伊達じゃない。早く高解像度版(盤?)を出して欲しい(当然、ICS)。
ブックセンターで、開発本を買い求める。
(作りながら覚えるAndroidプログラミング)
http://www.amazon.co.jp/%E4%BD%9C%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E8%A6%9A%E3%81%88%E3%82%8BAndroid%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E6%95%B4%E3%81%88%E6%96%B9%E3%81%8B%E3%82%89%E3%80%81Android%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%81%A7%E3%81%AE%E5%85%AC%E9%96%8B%E3%81%BE%E3%81%A7%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88-%E6%9D%BE%E5%B2%A1-%E5%AE%A3/dp/4797362790
何種類か、ぱらぱらめくってみて、飽きずに読めそうで、かつ、私でもなんとかなりそうな本を探す。JAVA屋さんが書いている本が多くて、そっちに話がいきすぎるとツライ。かといって、開発環境をインストールしてサンプルプログラムを動かしておしまい、というレベルは卒業している。プロのプログラマーではなく、少しだけJAVAのコードが読めて、手っ取り早く、とにかく動くアプリが作れそうな本を選んだ。
どうも、ゲームアプリを作るのが流行っているようで、解説本の半分近くがゲームの関係だった。金になるし、なにより面白そうだ。が、私はやらない。かつて、ゲームにハマって体調を崩したことがあり、以来、近寄らないようにしている(君子なので・・・?)。
今日からは、じっくりと腰を据えて、アンドロイドのアプリをいじり倒すかな(コピペして・・・)。
最近のコメント