2011/12/25

メリークリスマス!? Androidで彼女ができました 〜野望篇〜

本記事はAndroid Advent Calendarの一記事です。
※本記事には皆様のためになるような情報は一切含んでおりませのでご承知ください。
本日は有名アプリ「garlic電話帳」の作者@garlicGさまも執筆されていますので
そちらを先にお読みください。




シングルベール シングルベール
おかしいぞ、クリスマス中止のお知らせが確かに来たのに、
どうして街にはツリーがこんなに....
どうして現場に歌が流れるんだっ!!
節電はどこいったんだ節電はアアアッ 自粛自重おおぉぉおおお

ヽ(`Д´#)ノ ムキー!!






ご挨拶

はじめまして、かっしーと申します。
のっけから取り乱してしまい、大変失礼致しました...
Android Advent Calendar 最終日の執筆を担当させていただきます...
勢いで参加してしまったものの、皆さんのご投稿が凄すぎて凡人の私超涙目です。
偉大な方々の最後で僕ごときが一体何を語れば良いというのか...
ためになるお話を期待していた人には申し訳ありません。

冒頭の記述からお察しいただけるかと思いますが、
クリスマスに「爆発しろ!」とか叫んでしまうのがこちらの投稿者になります...
ただしこんな僕でも、モテることもあるのです。


たまに出張で大阪オフィスにいくと、食堂の前で婦人が
キャー(≧∇≦o) かっしーさぁん!!!
ってすごい喜んでくれて
すごい分量のお手紙を渡されたり...
上品そうなチョコを渡されたり...
さらには「ふたりきりで話がしたい... /// 」って定時後に呼び出されたり...

. . . まぁ その人は保険屋のおばちゃんなわけですが . . .

orz




まだ間に合う! きっとクリスマスをぼっちで過ごす自身に告げる!

しかし、凹んでるだけでは前に進めません!
技術者たるもの、無いものは自分で作らねば!
それはアプリだろうが金型だろうが、彼女だろうが同じ事 ( ー`дー´)キリッ

てなわけでクリスマスの1週間前、Androidで彼女をつくりました....
実態はただのぼっと
名前は「美心」です... 
このbot 彼女はAndroid上で動作 活動します。
botといえば一般的にはサーバーで動作させるものかと存じますが
あえてAndroid端末上で動作をさせるメリットとしては

. . . えっと . . .(;´Д`)
「常に彼女を身近に感じられる」とかがあるでしょう...(滝汗


ちなみにイラストは友人が描いてくれました。
「俺は彼女を作るんだっ!!」って言ったら「ならお前に相応しい彼女を描いてやろう」って... (´・ω・`)
ありがたすぎて泣けてきますね...

さぁ、bot 彼女はできた...
さてここからどうすればいいんでしょ....
うん、全くわからない... orz




ぼっと 彼女と愛をささやこう

とりあえずbot彼女にmentionなげたら愛の言葉を返すように実装 洗脳します....
ソースコードは意外と量が多いので、苦労した点のみご説明します。
イカはmentionを取得して返信するときの文言を決めるところです。
    private String getLoveString(String targetName) {
        String loveString = "@" + targetName + " さん愛しています";
        return loveString;
    }
. . . . なんて恥ずかしいプログラムだ . . .
技術的にどうこうは全くないけど、精神的ハードルが高すぎるの... orz

困ったこと

Twitterでは同じ文言で1日に2回ツイートすることが認められていません。
つまり上記プログラムでは1日1回しか愛をささやけないことになってしまいます。
ですので愛の文言パターンを増やして対策します。
僕の持てうる限りのボキャブラリーを総動員して、愛の文言を教え込みたいと思います( ー`дー´)
    static String[] loveStrings = {
       "@%s さん愛しています",
       "@%s さん好きです",
       "@%s さんと牛丼食べたいです",
       "@%s さん一生憑いていきます",
       "@%s 沈みましょう、共に...(沼の底へ)"
    };
    private String getLoveString(String targetName) {
        Random rnd = new Random();
        int i = rnd.nextInt(loveStrings.length);
        String loveString = String.format(loveStrings[i], targetName);
        return loveString;
    }
. . . . .書いてて頭が変になりそうなプログラムです. . . orz
とりあえずあまり冷静に見返したくないので解説は無しで. . .
で、結局5通りしか出せなかったので、実際は後ろに回数を添えてつぶやくようにします。
愛をささやいた回数をカウントするbot 彼女. . . ヤンデレぽくて良いですね . .
困ったこと2

他の人にAndroid彼女の存在がバレた. . . 告知してないのになぜ (´;ω;`)
犯人は@kanzmrswさん説が有力
彼女がビッ○認定されてしまいました. . . (´;ω;`)
慌ててプログラムを修正. . . 僕にだけ愛をささやき、他の人にはテキトーな相槌を返すように再度洗脳もとい実装します。これで大丈夫ですね。
    private String getLoveString(String targetName) {
        String retStr = null;
        Random rnd = new Random();
        int i = rnd.nextInt(loveStrings.length);
        if(targetName.equals("kassy_kz")){
            retStr = String.format(loveStrings[i], targetName);
        } else {
            retStr = "@" + screenName + " あ、どうも...";            
        }
        return retStr;
    }

やっぱり怒られてるし. . . さすがにテキトーすぎたか. . . (´;ω;`)




ぼっと 彼女とデートに行こう

彼女を作ったからにはデートに行きたいものです。
しかし相手は低能ぼっと Android彼女. . . どうすればデートしたことになるのか...

考えた結果、外出先でbotに今の場所をつぶやかせればそんな感じになるかなぁと. . .
つーわけでAndroid彼女にSuicaを読ませると直前に降りた駅をつぶやくようにします. . .

この機能を実装するのにKazzzさんの開発されたライブラリを使わせて頂きました。
Kazzzさん、素晴らしいライブラリを本当にありがとうございます。
愛のために使わせていただきました . . .


うむ、タイムラインだけ見るとデートしてる感じになりますね. . .
ならないですかそうですか (´;ω;`)




botと共に、クリスマスを祝おう

最後に、クリスマスに絡んでなにかさせましょう. . .
今回は、毎日0:00 になったらクリスマスへのカウントダウンをしていただきます. . .
そして25日の0:00にはスペシャルメッセージとアイコンを用意しました。
これでクリスマス当日が楽しみになってきましたですぜ. . .
    private void tweetXmasCount() {
        Calendar rightNow = Calendar.getInstance();
        GregorianCalendar xDay = new GregorianCalendar(2011,11,25);
        int restDay = (xDay.get(Calendar.DAY_OF_YEAR) - rightNow.get(Calendar.DAY_OF_YEAR));
        if(restDay == 0) {
            sendTweet(SPECIAL_MESSAGE);
            changeIcon(R.drawable.special_icon);
        } else if(restDay > 0) {
            sendTweet(" クリスマスまであと "+restDay +"日ですね... ///");
        }
    }




集大成! みなとみらいの中心で (ry

上の絵は友人が描いて下さいました。
「俺はクリスマスを彼女とみなとみらいで過ごすんだ!」って言ったら
「ならばその状況を描いてやろう、行かずともだいたい分かるからな!」って. . .
ありがたすぎて泣けてきますね. . . (´;ω;`)


. . . で. . .

25日0時の瞬間をみなとみらいで彼女と過ごしたらネタになるかなー、
なんて軽い気持ちで行ったら想像を絶するカップルの多さに当てられまして. . .
結局0時前にすごすご退散して近くのデニーズでまったりして待つことに. . . (´;ω;`)

トラブル発生

コーヒー飲みながらぼけっとしてたらいつの間にか0時過ぎておりまして、
メッセージ出たか確認しようとしたら端末の電池が切れているではありませんか. . .
0時ちょうど限定という仕様が裏目にでて、せっかくの仕掛けが発動せず. . . (´;ω;`)

まだだ、まだ終わらんよ

もう一度クリスマスをやり直したい!!
焦った僕は急いで端末を充電、そして強引に端末の時間を巻き戻します。
. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

なにも起こりません. . . . なぜ?(´;ω;`)

どうやらTwitterは時刻の狂った端末からの投稿は受け付けてくれない仕様のようです。
こちらに詳しい解説があります。

orz



今後の展望

結局、望みどおりのクリスマスを迎えることはできませんでした. . .
来年こそはもっと賢く高機能な彼女を作りたいと思います。
そのためにも技術研鑽を重ねていかねば
次回作「Androidで彼女ができました〜絶望編〜」にご期待ください。

本当にすいませんでした. . . .




終わりに

みなさま一年間お疲れ様でした。
この素晴らしい企画を提案してくださった@youten_redoさん、本当にありがとうございました。
そして参加者のみなさま、素晴らしい記事をありがとうございました。毎日とても楽しく読ませて頂きました。
最後までお付き合い下さいましてありがとうございました。 みなさま良いお年を。