2012年3月24日土曜日

iPhoneやAndroidでfacebookする時にやっておくべきプライバシー設定について

毎回だけど・・・久々に更新。

去年あたりからfacebookを始めて、やっと最近更新頻度が上がって来ました。
ただ、実名制と言う事で、プライバシーには気を使いたいのだけど、設定わかりにくくないですか?多分何気に始めた人ってよく分からずデフォルトで使っていそう・・・または、過剰に怖がって何でもかんでも非公開にしてたりもしてそう・・・

って事で、押し付けがましく、一般の日本人がFacebookを安全に楽しむ為に、私が考える、「縛りすぎず、緩すぎない適度なプライバシー設定」の推奨をご紹介します。

キツすぎると、Facebookの醍醐味である「つながり」の機会が少なくなりますし、ユルすぎると、インターネットに個人情報をばらまくことにもなりかねません。(世間に名を売りたい人はフルオープンで構いませんが・・・)

なので、よくわからず始めたけど、やるからには楽しみたい!けど、ある程度の安全は確保しておきたいって人用の設定になってます。

恐らく、現在大半の人はiPhoneとかAndroidのアプリで楽しんでる人が多そうなので、アプリ上での設定方法です。

まず、プライバシー設定をするには、メニューから【設定】->【プライバシー設定】を開きます。(【設定】は結構下の方にあるのでスクロールが必要です。)

下記で「友達」としてる部分は、人によっては、「友達(制限されている人を除く)」となっている場合もあると思いますが、同じと考えてもらって構いません。(制限されている人は後述)

  1. デフォルト設定の管理
    • 友達」にしておきましょう。ちなみにアプリを使っている上ではこの設定はほぼ関係ないのであまり気にせずに。アプリの場合投稿時に公開の範囲を選べます。
  2. つながりの設定
    • メールアドレスまたは電話番号であなたを検索できる人
      公開」にしておきましょう。 Facebookをしている人限定で自分を検索できるようにします。公開にしておかないと、 なかなか人とつながれません。(メルアド、電番自体が公開されるわけでは無いです。)
    • あなたに友達リクエストを送信できる人
      公開」にしておきましょう。Facebookの友だち申請を誰からでも許可します。これも公開にしておかないと、 なかなか人とつながれません。
    • あなたにFacebookメッセージを送信できる人
      公開」でいいと思います。が、スパムメッセージとかが多くなってきたら、「友達の友達」や「友達」に限定してもいいと思います。「公開」がいいと言ったのは、公開プロフィール情報が少ない場合等に、あなたの知り合いがあなたに友達申請する前に、一度本人かどうかメッセージを送って確認したい場合に送信されたメッセージが届かないためです。なので、プロフィールの公開情報が多めの人は「友達の友達」や「友達」でもいいですが、少なめの人は「公開」とした方がいいでしょう。
  3. Facebookでの共有
    ここは基本的に人によって大分考えが違ってくる部分でしょうが、一応私的考えと推奨設定をご紹介。
    • あなたがシェアする情報
      • 生年月日
        友達」にしておくのを推奨します。繋がり重視といえど、学校情報と卒業年などを公開していれば生年月日まで公開する必要はないと思ってます。逆に学校情報もなく、プロフィール写真も実際の顔が写ってないなどの場合は、「公開」にしておいてもいいかも知れません。
    • 連絡先情報
      • 住所
        友達」にしておくべきでしょう!
      • xxx@example.com(メールアドレス)
        友達」にしておくべきでしょう!
      • +81xxxxxxxxxx(電話番号)
        友達」にしておくべきでしょう!
  4. タイムラインとタグ付け
    • あなたのタイムラインに投稿できる人
      友達」にしておきましょう!
    • 他の人からのタイムラインへの投稿を見る
      友達」にしておきましょう!
    • あなたがタグ付されたコンテンツの共有範囲
      友達」にしておきましょう!
    • タイムライン掲載を確認
      オン」にしておきましょう!
    • タグの確認
      オン」にしておきましょう!
    • タグ付けの提案
      友達」にしておきましょう!
    • 友達によるチェックインを許可する
      有効」にしておきましょう!ただし、普段やましい行動が多い方等は無効にしたほうがいい場合があります・・・(^^;
  5. アプリとウェブサイト
    • 利用しているアプリケーション
      よくわからない人はいじらないほうがいいです。
    • アクセス出来る情報
      ここもよくわからない人はいじらないほうがいいです。
    • ゲームやアプリケーションに関連するア...
      友達」にしておきましょう!
    • 一般検索
      絶対「いいえ」をお薦めします!ここを「はい」にしていると、Yahoo!やGoogleで自分の名前を検索された時に出てきちゃいます。おそらく大半の(日本)人はそのような事は望む動作ではないと思います。
  6. 過去の投稿の共有範囲
    プライバシーを気にせずに今まで「公開」設定で投稿してきた記事の共有範囲を一括で「友達」限定にします。気になる方は「共有範囲を変更」しておきましょう!
  7. ブロックしているユーザーとアプリ
    よくわからない人はいじらないほうがいいです。スパムアプリのをブロックしたり、金輪際Facebookで関わりたくない人などをブロックできます。ただ、相手にもブロックされたことがわかるので、相手にわからずにコソッと共有する投稿をコントロールしたい時はリストの機能を使う必要があります。詳しくは、「親しい友だち」「知り合い」「制限ユーザー」などで調べていただくとして、簡単に言うと以下のような使い分けをしてもいいかも!リストは設定したい人のページ(タイムライン)の[友達]ボタンを押すことで変更できます。
    • あからさまに拒否したい相手
      • ブロック
    • 渋々友だちになった人
      • リスト 制限ユーザ
    • 職場の人とかあまり親しくない人
      家族の写真や友達の写真など、秘匿性の高い情報を投稿時に公開設定を「知り合い以外の友達」にすることで、割と安心して投稿することができると思います。
      • リスト 知り合い
    • 普通の友達
      • 特に何もしない
    • 特に仲の良い人や興味のある友達、信頼出来る友達
      • リスト 親しい友達

以上、私的おすすめプライバシー設定でした!「嘘教えんなや!!」と思った方は、コメントください。訂正します・・・

2011年10月21日金曜日

すいません。なんかいつの間にか非公開設定になってました・・・

2011年8月23日火曜日

Google Syncが使える奴になって来た!

久々に更新など・・・

お題は表題の通り「Google Sync」。

言わずと知れた、iphone上でGmail・Googleカレンダー・Google Contacts(Gmail 連絡先)のOTAでのプッシュ同期が出来る機能です。

提供開始当時は「スゲー!」とは思ったのですが、実際使ってみると細かいところで色々と使いにくい所があって使用を断念してました。

しかし、あれから2年・・・革新は速いけど、対応の遅いGoogleさんでも流石に実用できるレベルまで来てました!(Apple側の対応も含む)

[IMAP]->[Google Sync]
Gmailに関しては、以前からほとんど問題なかったんですが、例えばドコモからのメールの文字化け等は解消済みですね。

噂によると、iOS5のノーティフィケーションセンターでの通知が"いい感じ"らしいですし、Mail.appの着信音も変更可能になるらしいですし、絵文字キーボードも使用できる様になるらしいですから、かなり使えるようになるのでは?

そして、IMAP方式だと、15分おきもしくはPNS系のアプリ(Boxcar等)で「プッシュ通知」してましたが、正真正銘「プッシュ配信」されます。(メール着信を通知のみではなく、メール着信を通知と同時にダウンロードまで)

まぁ、極度にバッテリーの持ちを気にする方とか、送信元アドレスを変更して使用するヘビーユーザな方などは、まだ完全には乗り換えは難しいでしょうが・・・

ちなみに、バッテリーですが、プッシュに切り替えた翌日などはやはり減りがメチャメチャ速いような気がしますが、少しの間使ってると、そんなに気にするレベルでもなくなってきました。あくまで私の場合ですが・・・


[CalDav]->[Google Sync]
カレンダーに関しては、当初、登録できるカレンダー数に制限があったみたいですが、現在では25個までOKらしいですから実際問題なしですよね。

あと、これまではCalDavにアドバンテージがあったカレンダーの色が同期しない問題ですが、噂によるとiOS5からはiOS側でカレンダーの色が変更できるようになるらしいのでこれも解決ですよね。

標準アプリが若干機能不足ですが、iOSのカレンダーデータを参照するカレンダーアプリを使えば解決ですよね。最近のアプリは大抵対応してますし。

何より、PCからGoogleカレンダーに入力した予定が瞬時にiPhoneに転送されているのは感動すら覚えます。CalDavの場合少し間が有りましたからね。と言っても、実際問題スケジュールの転送が瞬時ではなく、1時間ぐらい遅れてもほとんど影響は無いですけどね・・・

[Macと同期の連絡先]->[Google Sync]
今まではこれが、一番ダメダメでした。
・項目の不一致
・フリガナ未対応
・同期時に姓名が逆になる
・グループ未対応
・Gmail側のWebUIが糞
・・・etc
でも、これが一番やりたかった方法なので、これが使えるようになったのは嬉しいです。

項目に関しては、Google側が大幅に改善したので実害のないレベルでほぼ一致するようになりました。

致命的な問題だったフリガナも対応。WebUI側でも入力できるようになりました。

無理矢理iPhone側で反転する必要のあった姓名の逆転現象も現在は、私のところでは起こっていません。

残念ながらグループの同期に関しては現在もサポートされていないのですが、よくよく考えてみると、私の場合、1500件以上の連絡先があるのですが、大概は「すべての連絡先」グループにて検索かけてました。その他のメールや電話のアプリなどでもグループが無いことによる支障はないので、iPhone上ではグループがなくても問題ありません。クラウド上には残ってますし。

ちなみに、macのアドレスブックのデータをGmail連絡先に移行するのは、アドレスブックから全データを一括でvcardエクスポートして、Gmail側でインポートするとほぼ完璧に移行できます。ただ、グループに関しては、アドレスブックのグループをあらかじめGmailの連絡先に作っておく必要がありますが、その仕込みさえできてればグループ含めて、誕生日や関係(親・子など)まで移行できます。

あと、仮にiPhone側が問題なくても致命的だったのが、Gmail連絡先のWebUI。

連絡先に関しては、PCでラクラク入力でiPhoneと同期というのが私のやり方なので、PC側のUIが使えるレベルにないと話にならない。

じゃ、アドレスブックで良いような気もしますが、Gmail連絡先が使えるレベルになると、

・自己満足レベルの瞬間同期が可能(^^;
・クラウドなので入力場所を選ばない(これが大きい)
・ZindusアドインをつかってThuderbirdのアドレス帳と同期可能!

と何かと嬉しい。ただ、前までのGmail連絡先のUIは前述の項目やフリガナ対応などができなかったし、氏名や住所の分割入力ができなかった。氏名ぐらいはスペース開ければよかったけど、住所の表記はコツが必要で常用できるレベルの話ではなかった。

住所以外は結構前に解決してたのだが、つい最近住所の分割入力が可能になってやっと使い物になるレベルに達した!

ただ、細かいことを言えば、フリガナの欄をイチイチ追加するのが面倒だったりと不満はあるが、とにかく「使える」様にはなった。


ってなわけで、AndroidとGoogleの親和性が羨ましいなと思っていたのですが、Goole使いでiPhone使いな人でも、ようやく、普通に使えるようになって来たかなと言うお話でした。


オマケでGoogle連絡先のどの項目がiPhoneに同期されるのかを調べてみた。
まぁ、現実的にほぼ網羅と言っていいレベルかと・・・


名前関連

  • OK 画像
  • OK 敬称(名前の前)
  • OK 名
  • OK ミドルネーム/旧姓
  • OK 姓
  • OK 敬称(名前の後)
  • OK フリガナ(姓)
  • OK フリガナ(名)
  • OK 役職
  • OK 会社
  • NG ファイル形式
  • OK 部署


部署はGoogle側にないので、カスタムフィールドで作成する必要あり。(iPhone側で作成すると自動的に作られる)


メール

  • OK 自宅
  • OK 仕事
  • OK カスタム

※ 但し、自宅、仕事、カスタムそれぞれ1つまでしか同期されない
※ iPhone側の表記は全て「メール」になる

電話番号関連

  • OK 携帯電話
  • OK FAX(勤務先)
  • OK FAX(自宅)
  • OK ポケベル

※ 但し、それぞれ1つまでしか同期されない

  • OK 仕事
  • OK 自宅

※ それぞれ2つまで同期可能

  • NG メイン
  • NG Google Voice
  • NG カスタム


住所関連

  • OK 自宅
  • OK 仕事
  • OK カスタム

※ 但し、それぞれ1つまでしか同期されない
※ 詳細項目は全て反映「町名以下の住所」~「国」


日付関連

  • OK 誕生日
  • OK 記念日

※ 但し、記念日は1つまで同期されない(誕生日はGoogle側でも1つ)

  • NG カスタム



URL関連

  • OK ホームページ
  • OK ブログ
  • OK プロフィール
  • OK 仕事
  • OK カスタム

※ 但し、URL関連全体で1つまでしか同期されない
※ iPhone側の表記は全て「Web」になる

関係

  • OK 配偶者
  • OK アシスタント

※ 但し、それぞれ1つまでしか同期されない

  • NG 子ども
  • NG
  • NG
  • NG
  • NG 兄弟
  • NG 姉妹
  • NG 友達
  • NG 親戚
  • NG 上司
  • NG 紹介者
  • NG パートナー
  • NG パートナー(国内)
  • NG カスタム




IM

  • OK Google トーク
  • OK AIM
  • OK Yahoo
  • OK Skype
  • OK QQ
  • OK MSN
  • OK ICQ
  • OK Jabber
  • OK カスタム

※ IM全体で3つまで。
※ iPhone側の表記は全て「IM」になる


メモ

  • OK メモ


2011年6月24日金曜日

久々にGT.BLEDSのホームページ更新

まえまえからGT.BLEDSのホームページがなんか野暮ったいというかなんというか・・・かなり気に入らなかったんだけど、面倒臭がって更新するのサボってました・・・

が、やっとこさできました!ジャン!!

http://www.gtbleds.net

まぁ、しょせん私程度なのでデザインはイケてるわけではないですが、だいぶスッキリした感じではないでしょうか???

2011年5月4日水曜日

[続] iAdをメインにしてAdmobをバックアップとして設置

iAdをメインにしてAdmobをバックアップとして設置の続編。

なんか、AdMobのコードが更新されたとかなんとか言って来るので、試験的に組み込み。

Admobの登録して、SDKをダウンロードして、

  • GoogleAdMobAdsSDK
を面倒くさいのでフォルダごと組み込みました。そして、以下のフレームワークを追加。必要なフレームワークがちょっと減ってますね。
  • AudioToolbox
  • MessageUI
  • SystemConfiguration
  • iAd

iAdはOS3.xをターゲットにするならiAdをweklinkにする必要あり。

その他、ちょっといろいろ工夫してみました。ただいまテスト中・・・なんとか動いてるみたいだけど・・・


↓以下サンプルソース

viewController.h

...
#import <iAd/iAd.h>
#import "GADBannerView.h"
...
@interface viewController :UiViewController < ... , ADBannerViewDelegate, GADBannerViewDelegate>{
...
GADBannerView *adMobAd;
ADBannerView *bannerView;
...
}
...
- (void) startiAd;
- (void) startAdMobAd;
- (void) endAdMobAd;
...
@end


viewController.m
#import "viewController.h"
@implementation:viewController

#define MY_BANNER_UNIT_ID @"publisher id"                     // 自分のパブリッシャーIDを設定
#define ADMOBAD_TESTING YES                                             // リリース時はNOにする
BOOL isEnableAdMob = NO;

...
//========================================================
// 起動時設定
//========================================================
- (void)viewDidLoad {
        [super viewDidLoad];
 ...
  //iAd(OS4.0以上)
 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {
  [self startiAd];
 } else {
  [self startAdMobAd];
 }
 ...
}
//========================================================
// メモリ解放
//========================================================
- (void)dealloc {
        [super dealloc];
 ...
  //Admob
 if (isEnableAdMob) {
  adMobAd.delegate = nil;
  [adMobAd release];
 }
 //iAd
 bannerView.delegate = nil;
 [bannerView release];
...
}
...
...
...
...
#pragma mark iAd,Admob
//**********************************************************************
// iAd関連
//**********************************************************************
//======================================================================
// iAD広告開始
//======================================================================
- (void) startiAd {
 NSLog(@"iAd:startiAd");
 // iAd初期化
 bannerView = [[ADBannerView alloc] init];
 bannerView.delegate = self;
 
 // 広告サイズのiOSバージョン別設定
 if (&ADBannerContentSizeIdentifierPortrait != nil) {
  bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
 }else {
  bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
 }
 
 // 初期は隠す
 bannerView.frame = CGRectMake(0.0,
          self.view.frame.size.height,
          bannerView.frame.size.width,
          bannerView.frame.size.height);
 
 [self.view addSubview:bannerView];
}
//======================================================================
// iAD広告取得成功時
//======================================================================
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
 NSLog(@"iAd:bannerViewDidLoadAd");

 // AdMob非表示
 [self endAdMobAd];
 
 // iAdアニメーション表示
 bannerView.frame = CGRectMake(0.0,
          self.view.frame.size.height,
          banner.frame.size.width,
          banner.frame.size.height);
 [UIView beginAnimations:@"BannerViewMoveOnScreen" context:NULL];
 bannerView.frame = CGRectMake(0.0,
          self.view.frame.size.height - banner.frame.size.height,
          banner.frame.size.width,
          banner.frame.size.height);
 [UIView commitAnimations];
}
//======================================================================
// iAD広告取得失敗時
//======================================================================
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
 NSLog(@"iAd:didFailToReceiveAdWithError:%@", [error localizedDescription]);
 
 // Admob開始
 [self startAdMobAd];
 
 // iADアニメーション非表示
 [UIView beginAnimations:@"BannerViewMoveOffScreen" context:NULL];
 bannerView.frame = CGRectMake(0.0,
          self.view.frame.size.height,
          banner.frame.size.width,
          banner.frame.size.height);
 [UIView commitAnimations];
}
//**********************************************************************
// Admob関連
//**********************************************************************
//======================================================================
// Admob広告開始
//======================================================================
- (void) startAdMobAd {
 if (!isEnableAdMob) {
  NSLog(@"AdMob:startAdMobAd:isEnableAdmob=%d", isEnableAdMob);
  
  // AdMob初期化
  adMobAd = [[GADBannerView alloc]
       initWithFrame:CGRectMake(0.0,
           self.view.frame.size.height,
           GAD_SIZE_320x50.width,
           GAD_SIZE_320x50.height)];
  adMobAd.adUnitID = MY_BANNER_UNIT_ID; // パブリッシャーID
  adMobAd.rootViewController = self;
  [self.view addSubview:adMobAd];
  adMobAd.delegate = self;
  GADRequest *request = [GADRequest request];
  request.testing = ADMOBAD_TESTING;  // テストモード
  [adMobAd loadRequest:request];
  isEnableAdMob = YES;
 }
}
//======================================================================
// Admob広告終了
//======================================================================
- (void) endAdMobAd {
 if (isEnableAdMob) {  
  NSLog(@"AdMob:endAdMobAd:isEnableAdmob=%d", isEnableAdMob);
  // AdMobアニメーション非表示
  [UIView beginAnimations:@"AdMobBannerMoveOffScreen" context:NULL];
  adMobAd.frame = CGRectMake(0.0,
           self.view.frame.size.height,
           GAD_SIZE_320x50.width,
           GAD_SIZE_320x50.height);
  [UIView commitAnimations];
  // Admobリリース
  [adMobAd removeFromSuperview];
  adMobAd.delegate = nil;
  [adMobAd release];
  isEnableAdMob = NO;
 }
}
//======================================================================
// Admob広告取得成功時
//======================================================================
- (void)adViewDidReceiveAd:(GADBannerView *)adMobView {
 NSLog(@"Admob:adViewDidReceiveAd");
 
 // AdMobアニメーション表示
 adMobAd.frame = CGRectMake(0.0,
          self.view.frame.size.height,
          adMobView.frame.size.width,
          adMobView.frame.size.height);
 [UIView beginAnimations:@"AdMobBannerMoveOnScreen" context:NULL];
 adMobAd.frame = CGRectMake(0.0,
          self.view.frame.size.height - adMobView.frame.size.height,
          adMobView.frame.size.width,
          adMobView.frame.size.height);
 [UIView commitAnimations];
}
//======================================================================
// Admob広告取得失敗時
//======================================================================
- (void)adView:(GADBannerView *)adMobView didFailToReceiveAdWithError:(GADRequestError *)error {
 NSLog(@"Admob:didFailToReceiveAdWithError:%@", [error localizedDescription]);
}

@end

2011年2月28日月曜日

借金返済!!

・・・いや、個人的なことじゃないですよ!

バスケです。バスケ!まぁ、バスケじゃそんな言い回しはないと言われそうですが、プロ野球間隔で言うところの「借金返済」です!(^^;

昨日の会長杯での勝利により、GT.BLEDSの通算成績が、

77戦38勝38敗1引分

となりました!いやー10年やってると77試合もしてるんですねー。

とは言え、次勝たないと即借金生活へ・・・必勝!!・・・祈願(^^;

2011年2月26日土曜日

SyntaxHighlighterをBlogでつかう

クリボウの Blogger Tips: コードをハイライトする「Blogger Syntax ...

これ参考に導入してみた。やり方はそのまんまなんだけど、MacのChromeでやるとうまくいかなかったので、メモ・・・

普通は↓の画面が出るんだけど、


バージョンによるかもしれんけど、MacのChromeだと・・・

こんな感じでバグって、一応Add to Bloggerボタンは押せるけど、コレで登録しても全然ハイライトが有効にならなくてチョットハマった・・・

一応Chromeのバージョンは・・・

でも、Objective-Cは対応してないんだね・・・

2011年2月25日金曜日

iAdをメインにしてAdmobをバックアップとして設置

とりあえず、かなり前にiAdの勉強がてら、リリースしたShot Clock Timer Freeだけど、iAdってとりあえず日本ではまだ始まってないし、スタートしてるアメリカとかでも表示率が100%ではない。なので、AdmobもしくはAdmobとのハイブリッドが理想型らしいけど、当時はAdmobの設置方法はちんぷんかんぷんだったので、ほったらかしてた。

最近ちょっとづつ分かってきたので、いろんなとこ調べながら、やってみました。

http://yayacocoa.blogspot.com/2010/11/iadadmob.html
http://xcodenoobies.blogspot.com/2011/01/how-to-integrate-iad-for-os32-and-admob.html

ここら辺りを参考に始めたけど、お世話になってる寺子屋サルできにて、よくわかるソースを発見!

iAdはOS4だけで動作するのでビルド設定に注意

コレを参考に、微妙に修正して組み込んでみました!

とりあえず、Admobの登録して、SDKをダウンロードして、

  • AdMob
  • TouchJSON

を組み込み。AdMobフォルダは


  • AdMobDelegateProtocol.h
  • AdMobView.h
  • libAdMob.a

だけでもいいみたいだけどよくわかんないんで全部ぶち込みました。そして、以下のフレームワークを追加。


  • AudioToolbox
  • CoreGraphics
  • MediaPlayer
  • MessageUI
  • QuartzCore
  • iAd

iAdはOS3.xをターゲットにするならiAdをweklinkにする必要あり。

で、Admobのサイトでパブリッシャーidをコピッてきて、

//========================================================
// publisher id
//========================================================
- (NSString *)publisherIdForAd:(AdMobView *)adView {
 return @"publisher id";
}

ここの「publisher id」に置き換え。で行けるはず。

あと、

//========================================================
// Admobテスト用設定 リリース時にはコメントアウト?
//========================================================
//*/
- (NSArray *)testDevices {
 return [NSArray arrayWithObjects:
   ADMOB_SIMULATOR_ID,      // Simulator
   @"Device identifier",    // Xオーガナイザで確認
   nil];
}
///*

ここの「Device identifier」にXcodeオーガナイザで確認できるDevice identifierを入れると、実機でもテスト広告が出る。ただし、Admobのサイトのアプリ設定で、テストモードを無効化してると、意味はない。

後は、コンソールをみながら、

iAd: Did load ad

でiAdのテスト広告が表示されて、


iAd: Did fail to receive ad

でAdmobの広告がでればOK!・・・かと思われる。
うまくいけば暫く待てばfailしてくれるが、もしかしたらずっとloadしてるとAdmobの確認ができないかもしれない・・・

ちなみにオリジナルからいじった所は、viewDidLoadのAdmobの部分で、起動時には一旦、hiddenをYESにして、moveBannerViewOffScreenの部分でNOにしたところです。
iAdの読み込みには少し時間がかかるみたいで、起動時にiAdもAdmobも両方取得成功したときに、広告表示が、Admob->iAdとばたついて表示されるのを防ぐためです。
ただ、一時も広告の非表示時間を減らしたくない場合は得策でない場合がありますね。
また、Admobメインで考えるなら、逆にしたほうがいいでしょう。

「...」はアプリそれぞれのコードが入っていることを表しています。

↓以下サンプルソース

*.h

...
#import <iAd/iAd.h>
#import "AdMobDelegateProtocol.h"
...
@interface viewController :UiViewController < ... , ADBannerViewDelegate, AdMobDelegate>{
...
AdMobView *adMobAd;
ADBannerView *bannerView;
...
}
...
- (void) moveBannerViewOnScreen;
- (void) moveBannerViewOffScreen;
...
@end


*.m
#import "viewController.h"
#import "AdMobView.h"
@implementation:viewController
...
//========================================================
// 起動時設定
//========================================================
- (void)viewDidLoad {
 ...
 //iAd(OS4.0以上)
 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {
  bannerView = [[ADBannerView alloc] init];
  bannerView.delegate = self;
  [self.view addSubview:bannerView];
  [self moveBannerViewOffScreen];
 }
 //Admob
 adMobAd = [AdMobView requestAdWithDelegate:self];
 [adMobAd retain];
 adMobAd.hidden = YES;
 ...
}
//========================================================
// メモリ解放
//========================================================
- (void)dealloc {
 ...
 //Admob
 [adMobAd release];
 //iAd
 bannerView.delegate = nil;
 [bannerView release];
 ...
}
...
...
...
...
#pragma mark iAd,Admob
//**********************************************************
// iAd⇔Admob切り替え
//**********************************************************
//========================================================
// iAd広告表示
//========================================================
- (void) moveBannerViewOnScreen {
 //Admob広告を隠す
 if (adMobAd != nil) {
  if (adMobAd.frame.origin.y == self.view.frame.size.height -48) {
   CGRect frame = self.view.frame;
   adMobAd.frame = CGRectMake(0, frame.size.height, frame.size.width, 48);
  }
 }
  //iAd広告を表示
 CGRect newBannerView = self.view.frame;
 newBannerView.origin.y = self.view.frame.size.height - bannerView.frame.size.height;
 [UIView beginAnimations:@"BannerViewIntro" context:NULL];
 bannerView.frame = newBannerView;
 [UIView commitAnimations];
}
//========================================================
// iAd広告非表示
//========================================================
- (void) moveBannerViewOffScreen {
 //iAd広告を隠す
 CGRect newBannerView = self.view.frame;
 newBannerView.origin.y = self.view.frame.size.height;
 bannerView.frame = newBannerView;
  //Admob広告を表示
  adMobAd.hidden = NO;
 if (adMobAd != nil) {
  if (adMobAd.frame.origin.y == self.view.frame.size.height) {
   CGRect frame = self.view.frame;
   [UIView beginAnimations:@"AdMobBanner" context:NULL];
   adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48);
   [UIView commitAnimations];
  }
 }
}
//**********************************************************
// iAd関連
//**********************************************************
//========================================================
// iAD広告取得成功時
//========================================================
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
 NSLog(@"iAd: Did load ad");
 //Admob広告非表示->iAd広告表示
 [self moveBannerViewOnScreen];
}
//========================================================
// iAD広告取得失敗時
//========================================================
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
 NSLog(@"iAd: Did fail to receive ad");
 //iAd広告非表示->Admob広告表示
 [self moveBannerViewOffScreen] ;
}
//**********************************************************
// Admob関連
//**********************************************************
//========================================================
// publisher id
//========================================================
- (NSString *)publisherIdForAd:(AdMobView *)adView {
  return @"publisher id";
}
//========================================================
// current view controller
//========================================================
- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView {
 return self;
}
//========================================================
// Admob広告取得成功時
//========================================================
- (void)didReceiveAd:(AdMobView *)adView {
 NSLog(@"Admob: Did receive ad");
 CGRect frame = self.view.frame;
 adMobAd.frame = CGRectMake(0, frame.size.height, frame.size.width, 48);
 [self.view addSubview:adMobAd];
 [UIView beginAnimations:@"AdMobBannerstart" context:NULL];
 adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48);
 [UIView commitAnimations];
}
//========================================================
// Admob広告取得失敗時
//========================================================
- (void)didFailToReceiveAd:(AdMobView *)adView {
 NSLog(@"Admob: Did fail receive ad");
 [adMobAd removeFromSuperview];
 [adMobAd release];
 adMobAd = nil;
}
//========================================================
// Admobテスト用設定 リリース時にはコメントアウト?
//========================================================
//*/
- (NSArray *)testDevices {
 return [NSArray arrayWithObjects:
 ADMOB_SIMULATOR_ID,           // Simulator
 //@"Device identifier",       // Xオーガナイザで確認
 nil];
 }
///*
...
...
...
...
@end

iMacかMacBookか・・・

いや、別に買わないですよ。。。でも、前のMacデビュー機のMacBook(early 2008)からもうすぐ3年。ボチボチと考えちゃうわけですよ。前のは入門機的に勝ったんで、そろそろね・・・

でもって、今日発表されましたよね!これ



うーん。素敵・・・・

ただ、iMacの新しいのももうすぐって噂もあるし、そうなると、デスクトップか・・・ノートか・・・

スペック的にはもちろんiMacとなるんでしょう。画面の大きさを始め、その他も・・・(現時点ではMacBook Proの方がスペック上かも知れんけど、次のは併せてくるでしょ?クァッドコアとか)

で、圧倒的に持ち出す事なんて少ないし、MacBookが余ってくるんだから、いざとなったら引っ張り出せばいい。って事でiMacなのかな・・・ただ、MacBook Proかっこいい・・・

iMacとAirで20弱か・・・イヤイヤ。

2011年2月22日火曜日

B-Ball Score Book iPadでのバグ修正版はもうすぐ

B-Ball Score Bookにて、iPadで試合結果を送信した後にフリーズするバグの報告をメールで貰った。ありがたい・・・

日曜日に申請だしたので、今週中には公開されるはず!

当現象がでてる方、ご迷惑をおかけしますが、もう少し我慢を・・・

2/25 追記
修正版が公開されました!!

2011年2月21日月曜日

サルできさんにて公認もらいました!

【サルでき公認アプリ】GT.BLEDS3作品 リリース!

独自の切り口で、iPhoneアプリの開発を応援してくれているサイトにて、私の作ったアプリを紹介してもらいました!少し恥ずかしいですが・・・

サルにもできるiPhoneアプリの作り方

過去の戦績更新

すいません。気づけば1年も放置してしまってました!m(_ _)m

先ほど更新しておきました。男子は次勝つと過去トータルで勝率5割復帰ですね!ぜひとも!!

過去の戦績

しかし、HP自体もぼちぼち模様替えしたいな〜。なんか陰気くさい雰囲気だし・・・

2010年12月6日月曜日

iPhoneアプリ第3弾など

今度はスコアボードアプリです!ハイッ!


デジ坊 -Digital Basketball Scoreboard


iPhone スクリーンショット 1
Dejibo -Digital Basketball Scoreboard- - GT.BLEDS

見ての通り、いわゆるデジタイマのパク・・・いや、リスペクトして作りました。
ゲームクロック、ショットクロック、スコア、ピリオド、チーム名表示、チームファウル、パーソナルファウルの管理に対応します。

とは言え、独りでやるのはほぼ不可能ですよね???
なので、一応、別のモードで、iPhoneを縦にしてそれぞれの専用モードも作りました。
iPhone スクリーンショット 3iPhone スクリーンショット 4

画像は、ショットクロックとファウルしか無いけど、次のバージョンでは、ゲームクロックとスコアの単機能表示も追加します。また、ゲームクロックと、ショットクロックについては、さらに、iPhoneを逆さまにすることで、ドデカセグ表示も実現、実際に体育館でなんとか見える大きさを実現しています。

ただ、これのフルスクリーン機能。
iPhone スクリーンショット 2
これは、正直iPhoneでは使いものにならないと思います。ですので、iPadの2倍表示を使うと割と使えます。ちなみに次の次のバージョンではiPadに正式対応し、2倍表示のボヤッと感を払拭したユニバーサルアプリにする予定です。

とはいえ、このフルスクリーン状態でどうやって操作するんだ?いちいち画面戻して操作なんてやってらんねェぜ!って思いますよね?
実はこのアプリの最大の売りはbluetooth通信機能にあります!

表示はiPadでフルスクリーン、操作はiPhoneで、そして、ショットクロック及びファウルは別途iPhoneでという夢の複数接続が可能です!

表示パネル->iPad(フルスクリーン)
操作盤(スコア&時計)->iPhone or iPad(操作盤表示)
ショットクロック->iPhone(ショットクロック単独表示)
ファウルカウント->iPhone(ファウルカウント単独表示)

もしかしてデジタイマ要らなくね?
まぁ、それだけの為にそれぞれ買ったら本物買うほうが安いけど(^^; 誰かが持ってるなら、アプリ代だけでデジタイマが完成。あとは、大音量外部スピーカとiPadスタンドがあれば!って感じです。上の組み合わせは極端だけど、普通にiPad2台か、iPad+iPhoneがあれば普通に使用可能です。






今度様子をビデオにでも撮ってYouTubeにでもあげようと思ってます。

出来ました!

2010年10月14日木曜日

iPhoneアプリ第2弾

って事で、懲りもせず、第2弾など・・・

B-Ball Score Book


まぁ、内容はリンク先の説明のとおりです。iPhoneからだと、「バスケ スコア」などと検索かけると出てきます。
記入済みのスコアブックの内容を誰かに伝える時に便利かなと思って作りました。
でも、今回は前作と違い色々な機能を詰めた(私のレベル的に)ので、比にならないほど苦労しました・・・

取り敢えず、スコアブック書く感覚で入力できて、閲覧できてって所を重視しました。
なので、意図的にあまり相関チェックなどはやってません。ユルい感じで入力してください。

2010年10月7日木曜日

Shot Clock Timer フリー版

こないだApp Storeで公開したアプリの広告付き無料版を出しました。

Shot Clock Timer Free


じつはこれ、今年の7月に開始したAppleの広告システムiAdを使用して作って、無料でも広告収入を得ようという魂胆だったのですが、大変な落とし穴がありました。
それは全世界で広告が表示されるわけではなく、まだサービスが開始されている国が、アメリカとイギリスだけだったという・・・それ以外の国ではどうなるかというと、広告スペース分ボタンが小さいだけで、有償版とかわりない・・・日本も例外ではなく。まぁ、いずれ表示されるようになるはずなのだが・・・(^^;

というわけで、もう出しちゃったもの引っ込めるわけにもいかないので、このままにしておいきます。無料なので、気軽にダウンロードして下さい。

ちなみに、このアプリ、今は単機能ですが、ゲームクロックも追加して、Bluetoothで複数台繋げば、結構便利かもしれない。

例えば1台はショットクロック制御、もう一台はゲームクロック、これらはオフィシャル席で制御。そして、コート反対側の得点板係が表示専用のものを一台もって得点板の残分をめくる。これら3台をBTで同期すれば可能なような・・・

将来バージョンで対応しようかな・・・技術が追いつけば・・・頓挫確率40%ぐらい。(^^;

2010年8月21日土曜日

iPhoneアプリ公開!

しばらく、ご無沙汰でしたが、表題の通りiPhoneアプリなんざ作ってみました。

こないだバスケの練習試合で24秒を普通のタイマーで測ってたんだけど、大変、大変!
ストップ->リセット->スタートの作業だけだけど、すぐにリセットされるので、これだけでも・・・

で、大会で使うような、2つのボタンの24秒計をシュミレートしたiPhoneアプリ位あるだろう。なんたって、iPhoneアプリは世界マーケットだし、バスケ人口も世界で2位か3位なはずだし・・・あ、あれ?ない!

まぁ、これぐらいの単純なアプリなら何とか組めそうだし、社会勉強がてらやってみようというのが始まりです。

まぁ、C言語も知らない素人なので、Objective-Cで作るiPhoneアプリは、単純なプログラムでも紆余曲折があったのは想像に難しくないと思いますが、何はともあれ公開です。

8月13日にアップルにアプリ申請していたんですが、今日やっと審査が通って公開となりました。

その名も、「Shot Clock Timer

 



http://itunes.apple.com/jp/app/shot-clock-timer/id386791620?mt=8#

iPhoneからだと、AppStoreで「バスケ 24」とかで検索かけると出てきます。

こんな単機能なソフトのクセに有料なのは
・社会勉強の意味合いで・・・
・ニッチな層を狙っている上、必要な人には有料でも購入していただけると踏んだため。
・私がさもしいだけ

のような理由があります。(^^;

まぁ、私にジュースおごる感覚でよろしくです。

2010年4月23日金曜日

i.softbank.jpとGmailの統合

i.softbank.jpのメールをGmailで管理しようという試みです。


今は、iPhoneも普通にMMSが使えるようになったので、余り取り上げられることが少なくなりましたが、このi.softbank.jpのメールは、PCメールでありながら、携帯メール扱いされる非常に重宝するものです。
普段はGmail使ってるけど、ありがちな迷惑メールフィルタ掛かっている携帯アドレス宛にメールを送る場合などに重宝します。まぁMMS使えばいいですけど、携帯でメールを打つのが苦手な人には迷惑メールフィルタを避ける目的のみで携帯メールを使うのも面倒なのです。それに履歴も残せますしね。
そこで、Gmailからi.softbank.jpのメールを送受信してみようということです。


では、早速Gmailの設定から・・・


[設定]->[アカウント]->[メールアドレスを追加]と選択して、


名前: あなたの名前(ご自由に!)
メールアドレス:xxx@i.softbank.jp


[次のステップ]->「i.softbank.jp SMTP サーバー経由で送信する」を選択


SMTP サーバー: smtp.softbank.jp
(smtp.i.softbank.jpではない!「i」は不要!)
ポート:465
ユーザー名:「xxx@i.softbank.jp」の「xxx」の部分
「セキュリティで保護された接続(SSL)を使ってメールを送信する」をチェック


[アカウントを追加]->xxx@i.softbank.jp宛に確認メールが来るのでメールに書かれている確認コードを入力->[確認]


これで、Gmailからxxx@i.softbank.jpを差出人として、ソフトバンクのメールサーバからメールを送信することが可能になった。メールを作成するときに、Fromフィールドをxxx.i.softbank.jpに変更すればOK。


問題は受信。このままだと、送信したメールに相手が返信すると、ソフトバンクのメールサーバで受信しておしまい。iPhoneから確認するしかない。(もしくはそれ用に設定したPCのメーラか・・・)Gmailには他サーバからの受信機能もあるが、POP3しか対応してない。逆にi.softbank.jpのメールサーバはIMAP4しか対応していない。


では、i.softbank.jp側で届いたメール転送すればいいのだがソフトバンクはこれを設定することができない。


残された手段は、定期的にPCのメーラを常時立ち上げておいて、i.softbank.jpのメールサーバからメールを定期的に受信し、ルール等で転送設定するしかない・・・でも少しスマートではない・・・


で、自宅Linuxサーバが前提になるけど、fetchmailでできないか考えてみた。
fetchmailをcronで回して、新着があったらGmailに転送すればいいかなと。


ちょっと、調べてみると最近のfetchmailはimap-idleに対応しているらしい!
じゃ、これでセッション張りっぱなしにすれば、新着メールがくると同時に転送可能ではないか!と思いきや、i.softbank.jpのIMAPはidleに対応していない・・・orz


意気消沈しながらさらに調べてると、fetchmailの更新履歴で、


・IMAPサーバが「IDLE」リクエストをサポートしていない場合でも、「NOOP」コマンドによって代替処理を行うようになった。
これは!!!
早速やってみた。


自宅のLinuxサーバ(ubuntu)にて、fetchmailを導入して設定。


$ sudo apt-get install fetchmail
$ vi ~/.fetchmailrc



set postmaster xxx@gmail.com
set nobouncemail

poll imap.softbank.jp
proto imap
timeout 30
username xxx
password ********
smtpname xxx@gmail.com
smtphost 127.0.0.1
idle
no mimedecode
keep
ssl



postmasterとsmtp nameは転送するGmailアドレスでOK。
username は「xxx@i.softbank.jp」の「xxx」の部分。


これを保存して、


$ chmod 600 ~/.fetchmailrc
$ fetchmail & 


とすれば、セッション張りっぱなし(擬似?)でi.softbank.jpにメールが届くと、即座に転送をかけてくれます。ログの処理とかはご自由に・・・完全に自分専用のサーバなんかだと、/etc/fetchmail.rc に上と同じ設定をして、デーモン起動させてもいいかも。
/etc/init.d/fetchmail (start|stop|restart)で制御可能ですし。
Gmailなので、転送先のアドレスを「xxx+isb@gmail.com」とかこのfetchmail経由で転送したことを判別できるようにしておけば、Gmailのフィルタで、


deliveredto:(xxx+isb@gmail.com) OR from:(xxx@i.softbank.jp)


こんな条件でひっかけて、ラベルを付けておけば分かりやすい。


あと、このままだと、万一iPhoneやPCのメーラなどから自分が送信したメールはGmailに転送されないので、iPhoneとかPCメーラで送信時には自信のアドレスをBCC送信する設定にしておくと良い。
これで完璧!なはず・・・


唯一の難点は絵文字が化けて「〓」になることぐらいであろうか・・・デコメ絵文字はOK。どうしても見たけりゃ、iPhoneでi.softbank.jpのサーバを覗きに行けば見れます。



2010年4月11日日曜日

じつは派遣より悲惨!?“ブラック化”する外食・小売チェーンの正社員たち |格差社会の中心で友愛を叫ぶ|ダイヤモンド・オンライン

じつは派遣より悲惨!?“ブラック化”する外食・小売チェーンの正社員たち |格差社会の中心で友愛を叫ぶ|ダイヤモンド・オンライン

・・・すげー、15年前の俺の状態そのままだ!

諸悪の根源は“正社員の配置の薄さ”にあるようだ。


1店舗あたりの従業員はほとんどがパート、アルバイトで、正社員は、いてもせいぜい2人。だが、慢性的な人手不足のため、シフトの穴埋めは社員がかぶっているのが現実という。


まさにその通り!15年以上前から何も変わってないんだな〜。


「店長の中には、自分の出退記録などを改ざんして、休んでもいないのに休んだことにする人が少なくないんです。


はい、日常茶飯事でしたね〜。


『休みが取れないのは自分に能力がない証拠だから』とか言って。


これ、平気で上司が言ってきます。休み取りたきゃ、パート・バイト教育すればいい!みたいな空気が当たり前でした・・・(^^;


結局、月の労働時間が400時間を超えてしまうこともあります」


あるある!残業200時間超とかざらでしたね〜。


店の駐車場に停めた車で寝ることもしばしばだ。


よくしてたよ!店の駐車場で寝てて、遅刻したこともあったっけ?(^^;

「正社員でも未来に夢が持てない」


私も、これがやめた一番の原因ですね。

まぁ、本文にもあるように40超えるとキツイと思いますけど、ある意味若いうちにこう言うブラック体験はしておくことは悪い事だけではなく、将来的にはプラスに成る気がする。
私も、今の仕事で少々キツイことがあっても、この時の経験があるから、割と楽な気分で乗り切れる事が多いですし。

2010年4月3日土曜日

家族旅行

4月1日と2日で淡路島に毎年春恒例の家族小旅行に行って来ました。

が、ご存知の通りあいにくの雨でした。土砂降りにはならなかったので、騙し騙しなんとか凌ぐ事が出来たって感じです。

行きも帰りも海は子供受けの良いタコフェリーを使いました!



久々に乗りましたけど結構気持ち良かったです。帰りは明石海峡大橋のライトアップが綺麗ですし!

そして、一日目はおのころアイランド。



正直、ナイトスクープ的パラダイスの2歩手前な感じです。(^^;
時間持ちは悪いしほとんど午前中で制覇しちゃったよ。チビ達もそれなりには楽しんでたみたいだけどビミョーな感じ。

なので早めにホテル行ってゆっくりしちゃいました。





2日目はイングランドの丘へ!



こっちのが過疎ってるかなと思ってたんですけど、割とこっちのが時間つぶしも出来て、動物と触れあれたり子供ウケも良かったです。

さて、来年はどこ行こうかな?

2010年3月6日土曜日

Google日本語入力の入力モードの切り替え VMWare Fuson編

以前書いたエントリー


Google 日本語入力で変換キーをIMEオンに、無変換キーをIMEオフに割り当てる方法


これを、macのVMWare Fusionでやってみようとしたら、やっぱりちょっとちがったのでメモ・・・

同じように、IMEのキー設定をエクスポートして編集するんだけど、

Conversion Eisu ToggleAlphanumericMode
Precomposition Eisu ToggleAlphanumericMode
Composition Eisu ToggleAlphanumericMode

を削除。

DirectInput ON IMEOn
↓変更
DirectInput Kana IMEOn

Precomposition OFF IMEOff
↓変更
Precomposition Eisu IMEOff

これで、macと同じ動きになった!
とりあえず、macとwinで同じ挙動なのはストレスが少なくていい!

これで、辞書がクラウドで同期すれば文句ないのにな・・・