2010年4月27日火曜日

[日記]具体的とはどういう事か

このところ、ボーナス査定とか情報処理技術者試験の論文とかで、「俺って具体的文章を書くのが苦手だなぁ」と思うことが重なりまして。
俺に限らず「具体的に書いて」と言われる人は多いんではないでしょうか。

でもさ、「具体的」って、具体的にどういう事よ?
説明できねーぞ?33にもなって。
と言うことでまとめて見ることにしわわけです。

Google先生に聞いてみたらやっぱり同じことに悩んだ人はいるみたいで。

「具体的」とはなんぞや?
http://coaching.way-nifty.com/timeandtide/2005/09/post_3119.html
----引用ここから----
具体:物事が、直接に知覚され認識されうる形や内容を備えていること。
 具:ある目的を果たすために利用する手段。道具。「政争の—にする」
 体:物事の本質をなすもの。「名は—を表す」
----引用ここまで----

なるほど。辞書も自分で引いてみよう。

具体的 yahoo!辞書
http://dic.yahoo.co.jp/dsearch?enc=UTF-8&p=%E5%85%B7%E4%BD%93%E7%9A%84&stype=0&dtype=0
----引用ここから----
[形動]はっきりとした実体を備えているさま。個々の事物に即しているさま。「—な方法」「—に指示する」⇔抽象的。
----引用ここまで----

なるほどなー。
つまり、「具体的に言う」と言うことは、「実際のモノやコトを使って話をする」と言うことなんですね。


ところで、「具体的」の反対語は「抽象的」。
じゃあ「抽象的」についても具体的に調べてみよう。

抽象的 yahoo!辞書
http://dic.yahoo.co.jp/dsearch?enc=UTF-8&p=%E6%8A%BD%E8%B1%A1%E7%9A%84&stype=0&dtype=0
----引用ここから----
[形動]
1 いくつかの事物に共通なものを抜き出して、それを一般化して考えるさま。「本質を—にとらえる」
2 頭の中だけで考えていて、具体性に欠けるさま。「—で、わかりにくい文章」⇔具象的/具体的。
----引用ここまで----

なるほど。

話を抽象化してなんとなく理解出来るようにする場合も、具体化してはっきりわかるようにする場合も、日本語だとどちらも「例えば」で出来るような気がします。
例:iPhoneとAndroidの違いを説明する場合を考える。
抽象化しておばちゃんに分かるようにする
→お子さんが持ってる任天堂DSとPSPの違いみたいなもんですよ。(全然違うけど・・・)
具体化して技術者に分かるようにする
→iPhoneは開発言語はObjectiveCですが、AndroidはJavaベースで開発出来ます。実際には通常のJVMではなくDalvikという独自のVMを搭載しており、小型の端末に最適化されています。iPhoneはシングルタスクですが、Androidは最初からマルチタスクです。ただ、これは今後変わっていくでしょう。(もう変わったか?)。iPhoneは当初からマルチタッチ機能を搭載していましたが、Androidはver2.1になってから搭載されました。とかいろいろ

こんな感じですかね。

具体化した方がいいか抽象化した方がいいかは、伝える対象が誰かによりそうですね。
で、具体的な話をしたあとで「まあつまり○○ってことだよね」と相手に確認する場合は、抽象化しているように思います。


以上、具体的と抽象的について具体的に考えてみました(?)。

2010年4月6日火曜日

[android][java]twitter4Jで取得したタイムラインをSQLiteのテーブルに突っ込む

ってことで。

twitter4Jは素晴らしいっすね。
ものすごく簡単に、twitterにアクセスして色々できちゃいます。

詳しい使い方は
http://www.nilab.info/zurazure2/001120.html
http://www.adamrocker.com/blog/255/hello-android-chapter7-the-connected-world.html
あたりを見てもらうとして。

取得したタイムラインをデータベースに一時的に入れて色々弄りたいじゃないですか。
ってことでやってみました。
すごい簡単。
以下コード。汚いですけど勘弁してください。



/**
*
* @author bangucs
* twitterに接続してDBに入れるとこまでやります
*/
class DatabaseHelper extends SQLiteOpenHelper {

    public DatabaseHelper(Context context) {
        super(context, null, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.beginTransaction();
        try {
            SQLiteStatement stmt;
            //作成するテーブルを指定
            db.execSQL("create table twits (user_name text not null, twit text not null);");
            //実行するSQLステートメント。prepared Statementに近いかな?
            stmt = db.compileStatement("insert into twits values (?, ?);");
            //Twitterに接続します
            TwitterFactory tf = new TwitterFactory();
            Twitter twitter = tf.getInstance("bangucs","********");
            //タイムライン取得
            List lst = twitter.getUserTimeline();

            //取得したタイムラインをSQLiteDBにつっこみます
            for (int i=0;i
                stmt.bindString(1, lst.get(i).getUser().getName());
                stmt.bindString(2, lst.get(i).getText());
                stmt.executeInsert();
            }
            db.setTransactionSuccessful();
        } catch (TwitterException e) {
            e.printStackTrace();
        } finally {
            db.endTransaction();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

    }
}

んー簡単ですね。
さて今日はけいおん!!だ!