2012-11-21

iPhoneアプリ[Game Center Leaderboards]小数(float型)の送信方法

掛算Questの次のアップデートで、Game Centerを使ったランキング表示機能を組み込みます。

Leaderboardsを使うのですが、小数(float型)のスコアを送信した時に、数字の桁がずれたり完全におかしな数字に変換されたりでちょっと苦労したので、書き留めておきます。

なぜか日本語の情報が無かって苦労したのですが、英語のサイトを調べて何とか解決することができました。

Leaderboardsに送信するには、int64_t型というものを使わなければならないようで、それに変換してから送信する必要があります。

そもそも私は、int64_t型なんて言葉を初めて聞きました。

具体的な変換コードはこんな感じになります。

GKScore *scoreReporter = [[GKScore alloc] initWithCategory:@"[Leaderboard ID]"];
    int64_t myScore = (int64_t)(totalPoint * 100.0f);
    scoreReporter.value = myScore;
    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
        if (error != nil) {
            // エラーの処理
            NSLog(@"error %@", error);
        }
    }];

当然、変数とLeaderboard IDは読み替えて欲しいのですが、このコードで言うとtotalPointという変数がfloat型で計算したスコアを入れてあります。

float型の場合は、100倍してから変換する必要があるようです。

int64_t型っていうのを知った事と、初めてGame Centerの機能を実装したことで、少し成長しました。

2012-11-05

Xcode4.5.1(iOS6)でAdMobを実装するときのエラー対処法

iPhoneにAdMobを組み込む時に、この公式ページを見てやるとエラーが出る。

公式サイトには全く書いていない事をいくつか追加してやらないと解決することができません。ほんとに不親切極まりない。もうちょっと更新して欲しいと思う。

これをやれば解決できたというのをとりあえず、書いておきたいと思います。いろいろ関係ないこともやってしまったこともあって、必要ない事も含まれているかもしれませんが参考にして頂ければうれしいです。

まず、追加するフレームワークとして挙げられているのが、この4つ。

  • AudioToolbox
  • MessageUI
  • SystemConfiguration
  • CoreGraphics

この時点で既に足りていません。以下の2つを追加しました。

  • StoreKit.framework
  • AdSupport.framework

そして、Other Linker Flagsに「-ObjC」を追加しなければなりません。これを追加しておかないと公式サイトのサンプルコードに書いてある最後の広告を読み込む行のところでアプリがクラッシュします。

[bannerView_ loadRequest:[GADRequest request]];

「-ObjC」の追加は、PROJECT→TARGETS→Build Settingsタブ→ All→Linking→Othe Linker Flags の部分です。

あとBuild Settingsのarmv7sを削除しました。

これで僕の場合は、無事にAdMobが表示されました。

自分なりに調べて何とか解決できた事なので、何をしているのかなどは理解できていませんので、間違えている部分があるかもしれません。

もし、お気づきの点があればコメント下さい。

2012-11-04

iPhoneアプリ制作で初心者がつまずきやすい画面の切り替えを分かりやすく解説

iPhoneアプリを作り始めた頃、最も分かりにくかったのが、画面の切り替え方法です。

分かってしまえばすごく簡単なのですが、多くの解説本には掲載されていません。

画面の切り替えなんて最もよく使う機能の1つなんだし、そのやり方を実現できる一番基礎的で簡単な方法は絶対に初心者本には掲載しなければいけないと個人的には思います。

もし、同じような事で悩んでいる人がいれば、この記事を参考にして欲しいと思います。

まず、画面の切り替えは3行くらいでできます。サンプルコードはこれ。


aboutUsViewController * aboutUsViewController = [[aboutUsViewController alloc] init];
aboutUsViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:aboutUsViewController animated:YES completion:nil];

たったこれだけなんですよね。

これだけとりあえず書いといてくれればいいのに、複雑な画面遷移のサンプルコードしか載せてない本がほとんど。まずは、シンプルな最低限の基本的な事だけを教えるっていうのは教育の基本中の基本なんですけどね。

1行目で移動先のクラスのインスタンスを生成して、2行目で画面が切り替わる時のアニメーションを設定して、3行目で移動させる。

これだけです。

この3行をRoundRectボタンなんかのタップ時のアクションメソッドに記述すればいいだけ。

ボタンをタップすれば、下の画像の赤く囲ってあるトップページから青く囲ってある会社情報が書いてあるビューに切り替わります。(aboutUsViewControllerというのはクラス名ですので各自遷移先の名前に変更)

ボタンの設置とアクションの設定はインターフェースビルダーで簡単にできますが、インターフェースビルダーを使わない場合のサンプルコードを掲載しておきます。


// タップすると会社情報ページに移動するボタン
UIImage *aboutUsImage = [UIImage imageNamed:@"aboutUs.png"];
UIButton *aboutUsBtn = [UIButton buttonWithType:UIButtonTypeCustom];
aboutUsBtn.frame = CGRectMake(118, 437, 190, 35);
[aboutUsBtn setImage:aboutUsImage forState:UIControlStateNormal];
[aboutUsBtn addTarget:self
                 action:@selector(tapAboutUs:)
       forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:aboutUsBtn];
    
(省略)
    
- (IBAction)tapAboutUs:(id)sender {
    aboutUsViewController *viewController = [[aboutUsViewController alloc] init];
    viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:viewController animated:YES completion:nil];
}

画面遷移さえできれば、僕みたいなちょっとプログラミングをかじっている程度の人間でも、ちょっとしたアプリなら簡単に作れるようになります。

2012-10-22

Xcode4.51 iPhoneアプリ申請時のエラー

Xcode4.51で新規にアプリを作って公開しようとしたら、最後の段階で2つのエラーが発生した。

  1. iPhone/iPod Touch: application executable is missing a required architecture. At least one of the following architecture(s) must be present: armv7
  2. iPhone/iPod Touch: Info.plist: Unable to verify icon dimensions, no icon found. You must define cfbundleicons cfbundleiconfiles cfbundleiconfile or provide a default icon.png that is 57×57

1つ目のエラーは、Build Settings → Architectures にarmv6を追加することで治った。

2つ目のエラーは、すっごい初歩的な事で、icon.pngの「アイ」が小文字になってた。アイコンのファイル名を小文字のiから大文字のIに変更。

参照:アプリ申請時のアイコンエラー

インターネットで調べて何とか解決できた。ほんとにネットって素晴らしい。人の役に立つかどうか分からないけど、できるだけ自分も情報を公開していこうと思う。

ちょっとした注意としては、設定を修正したあとそのままVaridateをクリックするのではなく、Archiveし直すこと。これをやってなかったのでいくら修正してもエラーが解決しないということでちょっと時間を無駄にしてしまった。

アプリ申請の流れとしては、このページを参考にさせてもらいました。

2012-10-13

iPhoneアプリで世界の市場を狙う。

孫さんがまた派手に行動を起こそうとしている。

アメリカの携帯電話会社3位のスプリント・ネクステルを1.5兆円で買収する交渉をしているらしい。

いろいろと問題点もあると思うけど、一つだけはっきりしている事は、これから少子高齢化が加速していく日本では、国内だけを相手にしていたのでは成長は見込めないということ。

そして、海外に目を向ける事で、考えられないくらい大きな成長を見込めるということ。

今やってるようなアフィリエイトとかアドセンスでは、グローバル展開はかなり難しい。

各地域によって法律とか文化などが根本的にことなるので、求めている情報がかなり異なるだろうし、他言語に対応させるためには膨大なコストがかかる。

そうなると、やっぱり魅力的になってくるのがスマートフォンアプリの世界。

特に、言語の問題があまり発生しないゲームとかユーティリティ系のアプリなら簡単に多言語化してグローバル展開できる。

爆発的な利益を得られるアプリは数少ないから、開発を外注に出しているようではやっていけないけど、ふと思いついたアイデアを1週間くらいですぐに形にできるだけの技術力があれば、小さな会社や個人なら十分に勝負できる。

ということで、やっぱりアプリ開発は手を抜けないなぁと思う。

ウェブの世界でアフィリエイトとかアドセンスで稼ごうと思うと、やっぱりSEOは無視できない。グーグルのこれからの技術の進化を考えるとどう考えても継続して成長を続けることは難しいだろう。

日本人はこれから本当に厳しい時代を迎えることになる。

2012-10-03

Emacs 自動で作られる~バックアップファイルを作らない設定

Emacsでは、保存すると自動的に~が付いたバックアップファイルが作られる。

ウェブで公開する時なんかに、このバックアップファイルをきちんと削除しておかないと、Apacheの設定によってはアクセスされるとスクリプトが起動せずコードが丸見えになってしまう可能性がある。

これは極めて危険である。

自動でバックアップデータを作ってくれるのは便利な時もあるのだけど、基本的な面倒な事が多いので、自動バックアップ機能をOFFにしておきたい。

設定は簡単。

いつものようにCtrl+x fで.emacsファイルを開く。

Find file: ~/.emacs

そして、以下の一行を追加。


(setq make-backup-files nil)

Ctrl+x sで保存。

これで、バックアップデータが自動的に作られなくなります。

2012-09-20

ソフトバンクのiPhone5もデザリンク可能

昨日の3時からのソフトバンクの緊急会見は凄かった。

やっぱり、孫さん半端ないわ。後出しジャンケン、何でも有りのソフトバンク。

実を言うとiPhone5のデザインは、イマイチで、ダサいとか言ってたけど、初日に予約完了してます。

auはデザリングに対応してて、ソフトバンクは対応してないという事を予約の時点で知ってて、一瞬auに乗り換えようかなんて思ったけど、あの孫さんが黙ってるわけ無いとおもってたので、結局はソフトバンクで予約した。

昨日の発表で、デザリング(正確にはテザリング)、LTE、料金など、主要な比較項目でほぼ全てでソフトバンクの方が魅力的になったんじゃない。

孫さんの能力の素晴らしさと、一般消費者が最も接するであろう現場のスタッフとのギャップがあり過ぎて、現場の販売員にちょっとだけムカっとするのはいつもの恒例行事みたいなもの。

auがLTEで有利みたいな事が巷で騒がれてたけど、なんかみんな孫正義を舐め過ぎ。あの人は知れば知るほど凄まじいよ。

そんな孫社長が現在人類が手に入れられる最高の製品と絶賛してたiPhone5もあと少しで発売。

何だかんだ言って、これだけ心がワクワクするモノって、アップルの製品くらいだ。

欲しかった新しい車の納車の日でも、これだけ興奮しない。

2012-09-17

Adwordsでお金を使うと順位が上がる。

最近、ビッグキーワードで順位変動が激しいけど、感覚として公式サイト、本家のサイト、Adwordsに広告を出してるサイトが有利になっている気がする。

Googleは、Adwordsでいくらお金を使っても、順位には関係無いと言い切っているけど、そんなものは信用に値しない。

Adwordsに、それなりの金額で継続的に広告を出せるという事は、それ以上の利益が出てるという事である。

利益が出せるサイト、コンバージョンが取れるサイトというのは、ユーザーにとって何らかの価値を提供している可能性が高い。

Adwordsは、アフィリエイトバナーだけが貼ってあるようなサイトへの広告出稿を認めていないので、その確率はYahooより高い。

とすれば、Adwordsにたくさんお金を使っているから、上位に出すというロジックじゃなくて、別のロジックが結果として、そうなっているという事もあり得る。

例えば、前述したように、Adwordsに継続的にまとまった金額を使っているという事は、それ以上の利益が出ているサイトである。

利益が出ているという事は、コンバージョンが取れているという事である。

コンバージョンが取れるという事は、ユーザーにとって価値のあるコンテンツが含まれているという事である。

したがって、ポイントを加算して上位に表示する。

この論理の前提部分を端折って簡潔にすれば、「ユーザーにとって価値のあるコンテンツが含まれているから上位に表示する」となる。

これはまさにGoogleがよく言っている事です。

要するに、物は言いようで、どんな事でもあり得るという事ですよ。論理なんて、いくらでも捻じ曲げる事ができる。

個人的には、Adwordsのデータは何らかの形で検索アルゴリズムに使われている思っています。

これからのブラックハットのSEOは、徹底した慎重さと緻密さが必要になるでしょう。

三島由紀夫は子供の時から天才だった。

つい最近まで、所謂小説という物に全く興味が無かったが、セールスコピーを書くために、いろんな小説を読むようになった。

ユーザーがのめり込むような、感情に訴えかける表現をうまく使えれば、確実にコンバージョン率を上げる事ができる。

世間で一流と言われている作家たちは、その情景が自然と目の前に浮かび上がってくるように、やっぱり上手い事書く表現するよね。テキスト情報だけで。

村上春樹の1Q84を読んで、結構楽しめたので、世界の終わりとハードボイルドワンダーランドも読んだ。

あの時代に、よくあの世界観を創り上げたよね。ほんとに面白い。画像とか動画が溢れ返っているこの時代に、文字情報だけで、人を楽しませる事ができるって、素晴らしい能力だ。

ただ、凄味というか何かはよく分からなけど、三島由紀夫には及ばないなと感じた。

そもそも、比較の対象では、無いのかもしれないけど。

三島由紀夫は、多分天才なのだ。子供の時に書いた文章からして、レベル高いし。

11歳の時に書いたと言われている「我が国旗」という作文がこれ。

徳川時代の末、波静かなる瀬戸内海、
或は江戸の隅田川など、あらゆる船の帆には白地に朱の円がゑがかれて居た。
朝日を背にすれば、いよよ美しく、夕日に照りはえ尊く見えた。それは鹿児島の大大名、天下に聞えた島津斉彬が外国の国旗と間違へぬ様にと案出したもので、是が我が国旗、日の丸の始まりである。
模様は至極簡単であるが、非常な威厳と尊さがひらめいて居る。之ぞ日出づる国の国旗にふさはしいではないか。
それから時代は変り、将軍は大政奉くわんして、明治の御代となつた。
明治三年、天皇は、この旗を国旗とお定めになつた。そして人々は、これを日の丸と呼んで居る。
からりと晴れた大空に、高くのぼつた太陽。それが日の丸である。

凄すぎる…。それしか言えないわ。

辞書は、調べる物では無く読む物だと言ってたらしい。分からない時に調べるというような使い方では話にならないそうです。

日本三景の一つ。天橋立の美しい松並木。

子供の頃、夏休みの間に天橋立海水浴場に、連れて行ってもらうのが家族の恒例行事になっていた。

自分の子供が生まれて、今度は、自分が親として、子供を連れて天橋立に行ってきた。

自分が子供だった時には、天橋立をそれほど美しいと感じる事ができなかったので、何故日本三景の一つに選ばれているのか分からなかった。

でも、今回の旅行では、天橋立の美しさを感じることができた。特に、対岸まで果てしなく続く松並木の道がうっとりする程美しかった。

30歳を過ぎて、ようやく神社仏閣の美しさを感じることが出来るようになって、松を大好きになっていたので、尚更美を感じる事ができたのだと思う。

伊勢神宮内宮の参道は、砂道、松、青空、太陽、そして日の丸の絶妙なバランスで、言葉が出ないほど美しい。

日本人だからこそ、感じることが出来る美なのかもしれないけど、順序として祖国の文化、伝統美を愛することは大切なのだ。大学で謂う修身、斉家、治国、平天下。

同じ物を見ているのに、その時々によって感じ方が全く違うということで、人間っていうのは、自分の内部の意識の持ち方で、あらゆることを変化させることができるんだという事を再認識した。

子供も楽しそうに遊んでたし、いい想い出になりました。

何がどうなるか全く分からない時代になってきたし、自分がいつ死んでもいいように覚悟を決めて、今できることを思いっきりやって、毎日を生きないと。


 

2012-08-30

78対22の法則をアフィリエイトにあてはめる

藤田田さんの名著である「ユダヤの商法」を深く理解するために、自分のやっているアフィリエイト、アドセンスビジネスに応用するとどうなるかを考えてみる事にした。

自分なりの考えを書いて行こうと思う。「ユダヤの商法的アフィリエイト戦略シリーズ」と名付けて1つ1つ書いていきたい。

これはパレートの法則とも呼ばれているものです。全体の78の部分は、22の部分から生み出されているという法則です。

ユダヤの商法でも、1番始めに取り上げられている事は、それだけ重要だということでしょう。

ユダヤの商法の「2金持ちから儲けさせてもらう」に書いてあるのは、年収1千万円以上ある2割の人を相手にする商売をしろということです。

世界の2割の人が世界全体の富の8割を持っているのであるから、その2割の金持ちを狙えということ。

78対22の法則をアフィリエイトに当てはめてみるとこのようなものが思いつきます。

  • 2割のサイトが売上全体の8割を占める
  • リソースの割当:8割をSEO、2割をサイト作成
  • 2割の稼げるジャンル(金融、美容等)に8割の力を入れる
  • 自分の時間の8割をスタッフのマネージメント、2割を自らの作業
  • 利益の8割は再投資、2割はプール
  • サイトの8割は、クリック単価の高い2割のジャンルにする
  • 内部SEO2割、外部SEO8割
  • サテライト:8割が無料ブログ、2割が中古独自ドメイン
  • 2割の絞り込んだサイトの調査に8割の力を入れる

自分の持っているリソースの大部分を、最も効果の出る2割の部分に集中的に投資する。どれが最も効果の出る2割の部分なのかということを常に考えることが大事ですね。

アフィリエイト・アドセンスビジネスに必要な作業というのは、たくさんありますが、常に78対22の法則を意識しながら作業しましょう。

2012-08-04

Packaging operation failed : エラーの対処法(iPhoneアプリ開発)

Packaging operation failed

iPhoneアプリを公開する最後の手順で、「Packaging operation failed」なんてエラーが出た。

もうちょっとで、自分が苦労して作ったアプリがApp Storeに並ぶっていうところまできたのに。

とりあえず、検索してみると、ファイルの先頭にドットがついているような画像ファイルが含まれているとこのエラーになるということが書いてあるのが多かった。

やれることは全部やらないといけないので、ターミナルを立ち上げて、隠しファイルも表示させるコマンドを入力。

コマンド:ls -a

でも、ドットで始まるファイルなんて含まれてない。

他に解決方法が分からなくて、かなり調べるのに時間がかかりました。

結局、どこで調べた情報なのか忘れたのですが、以下の方法で解決しました。

「Build Settings」→「Code Signing」→「Code Signing Identity」→「Release」のAny iOS SDKの部分を正しいものに変更しました。

以下の画像の青い線で囲んであるところ。

Packaging operation failedのエラーが出た時は、一度試してみて下さい。

Packaging operation failedのエラーの場合、原因が表示されないので、マジで困ります。

2012-07-23

Mac OS Xでフルサイズ画面を解除する方法

iPhoneアプリの開発のためにXcodeを触っていたら、何か拍子にオーガナイザーの画面をフルスクリーンにしちゃいました。

元に戻す方法が分からないので、とりあえずXcodeを強制終了して、再度立ち上げたけど、またフル画面になってしまう。

戻し方が真剣に分からなくて、マジで困ってたので調べてみると、マウスカーソルを画面の最上部に持って行って、1〜2秒静止させてやると、メニューとかフル画面の解除ボタンが上から出現しました。

知ってると何の問題もないし便利なんだけど、知らないと画面の上部で1〜2秒静止するなんてことをしないから、気付きません。

とりあえず、解決したし、これからも何度かは遭遇しそうなトラブルなので、今の段階で知っておいて良かった。

2012-07-21

[Xcode] Returnをタップした時にキーボードを消す処理

Text Fieldなんかを縦にたくさん並べた場合、キーボードが出てきて、画面の下の方が隠れてしまうことがあります。

そんな時、入力後にリターンをクリックすることで、キーボードを消す処理が必要になります。

1、〜.mファイルのviewDidLoadに以下のような行を追加する。

テキストフィールドのアウトレット名.delegate = self;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Processing clear the keyboard when the tap of the Return.
    requestMoney.delegate = self;
}

requestMoneyというのは、テキストフィールドのアウトレット名です。

2、〜.hファイルに<UITextFieldDelegate>を追加する。

@interface ~Controler : UIViewController <UITextFieldDelegate>

3、最後に、〜.mファイルに以下のメソッドを追加。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}

これで、Returnキーをタップした時にキーボードが消せます。

キーボードが隠れないように、上にスクロールできる処理をするという方法もあるみたいですけど、こっちの方が簡単だったので、とりあえずこっちの方法で処理。

とにかく、今は、そこそこ動くアプリをたくさん作ってリリースすることが目的。その後に、ちょっとずつ掘り下げて行こうと思う。

2012-07-05

Only tempfile.TemporaryFile is available for use

Google App EngineでDjangoを使っていると以下のエラーが出た。

Only tempfile.TemporaryFile is available for use

画像をアップロードする時に出たんだけど、何のことかよくわからなかった。

検索しても日本語情報がほとんど出てこなかったので、仕方なしに頑張って英語のサイトを読んだ。

分かったことは、おそらく画像のサイズがオーバーしているということ。

settings.pyに以下の2行を追加するとうまく行った。


FILE_UPLOAD_HANDLERS = ('django.core.files.uploadhandler.MemoryFileUploadHandler',) 
FILE_UPLOAD_MAX_MEMORY_SIZE = 3145728 # 3MBまでOK

Google App Engineは料金体系も変わったし、データストアとかいろいろめんどくさい事が多いけど、無視できない存在なので、少しは関わっていかないといけないと思う。

最近、独自ドメインでSSL通信に対応したことも、かなり大きな魅力だと思う。

Google App Engineを極めると、何か仕事を受注できるかもしれないし。

Google App EngineでDjangoを使っていて、画像をアップロードする機能を付けている人は、必ず上記の2行を追加しておきましょう。

僕も、自分で何度もテストしている時は気付かなかったんだけど、別の人にやってもらって気付きました。

ちなみに、iPhoneで撮影した画像は2.7MBとかあることが多いので、3MBの設定にしてみました。

最初は、2.5MBまでにしてたけど、iPhoneで撮影した画像の中に時々エラーが出るのがあったので、3MBが無難かと。

アップロードした後、小さくリサイズして保存して、容量を節約することも大事。

2012-05-25

パソコン作業での目の疲れを軽減できるメガネ

私のようなWebビジネスをしている人間に限らず、事務職や現場で作業する人まで、あらゆる人が仕事でパソコンを使う時代です。

パソコンの画面と向き合って作業する時間が、日に日に増えていると思います。それによって得られるメリットは計り知れないと思いますけど、生じる弊害というかデメリットもかなり多いとつくずく実感しています。

まず、椅子に座り続けるので、痔との戦いになります。

これは、丸いドーナツ型の座布団を活用することである程度は防止できます。

次に、腰痛と肩こり

同じ姿勢で作業をし続けることになるので、肩もこるし、腰の負担も大きくなります。

これは、かなり以前から認識していたことなので、対策も早く取り入れました。

エルゴヒューマンというメーカーが出している人間工学に基づいて設計された椅子を買いました。

お値段はかなり高いのですけど、なかなかの優れもので、可動部分が多いので、完全に自分に最適な姿勢を作ることができます。そして、メッシュを採用していることです。

これが夏なんかに特に役立って、ムレズに風通しがよくて涼しく快適なんですよ。

これ、エルゴヒューマンの商品説明でもそれほど強調されてないですけど、かなり大事なポイントです。

そして、パソコン作業の究極の弊害が目の疲れ

これは、マジでつらい。

パソコンの画面の明るさ・輝度を調節することである程度はましになりますけど、僕みたいな27インチディスプレイなんかを使っている人間にとっては、やっぱり深刻な問題です。

ディスプレイが大きいと同時に表示できるアプリケーションが増えるし確実に作業効率が上がります。

Windows時代は、トリプルモニタにしてましたけど、新型MacBook Proをメインマシンにしてからは、Thunder Bolt Display 27インチを使ってます。

シンプルでほんとにクールなディスプレイ。

惚れ惚れしちゃって、仕事の効率も上がりますよ。

ついこの前、Webデザインの仕事をしている友達が、ツイッターでパソコンでのディスプレイから出るブルーライトをカットして目の疲れが軽減できるメガネを買ったみたいなことをぶつやいてたのよ。

JINSってとこで買ったとのこと。ブルーライト?目の疲れを軽減!当然ピンときて調査開始。

そしたら、JINSっていうメーカーがパソコンのディスプレイから出る目の疲れの原因になるブルーライトをカットできるメガネを発売していることを発見。いつもチェックしているIT系のニュースサイトのIT Mediaか何かでも取り上げられていたので、IT業界ではちょっとした話題になってました。

というわけで、その日のうちに大丸に買いに行きましたよ。

フレームの色が机の色とかぶってて見にくいと思うけど、デザインがなかなかイケてる。

かけてると、少し色がついているという感じがしますが、特に問題はなし。目の疲れはどうかというと、確実に楽になりました。ウソと思うかもしれませんど、ほんとに効果ありますよ。

明らかに目に入ってくる光の量が減っていることを実感できるし、メガネを外した時に目を保護してくれているということが実感できますね。

僕は、子供の頃から偏頭痛持ちで、ゲームをやり過ぎたりパソコンを触りすぎたりすると頭痛になるんですよ。何となく、画面を見すぎると頭痛の原因になるということが分かってたんですけど、この眼鏡を付けてからはちょっと刺激が軽減されて頭痛の頻度も下がった感じがします。

仕事でパソコンの画面を見る時だけじゃなくて、ゲームをする時にも重宝しています。PS3の信長の野望「天道」にどっぷりはまってて、それをやる時にもJINSのサングラスをつけることで、目の疲れがかなりましになりました。

iPad、Kindle、iPhone、電子書籍、電子カルテなど、これからどんどん電子化されてディスプレイで見ることが増えていくでしょうから、このJINS PCみたいな商品は私たち人間にとって必須のツールとなるような気がします。

2012-05-18

WordPressのインストールが簡単なレンタルサーバー

世界で圧倒的な人気を誇るオープンソースのブログソフトウェアであるWordPressですが、インストールで手間取るという人が多いです。

一昔前までは、日本では圧倒的にムーバブルタイプが多かったんですけど、日本でもWordPressが完全に逆転した感じを受けています。

レンタルサーバーの選び方なんていう、レンタルサーバーを借りたことが無い人に向けた、レンタルサーバーを選ぶ時の比較のポイントを紹介しているサイトを運営しています。

その中でも、WordPressがインストールしやすいレンタルサーバーというコーナーがあって、どこのレンタルサーバーをおすすめするか考えていて、まだ記事を書いていないのですが、昨日書く内容を決定しました。

WordPressが簡単に使えるレンタルサーバーは、ミニバードってレンタルサーバーです。

僕は、今まで聞いたこともなかったし、使ったこともなかったんだけど、実際に今使ってみてインストールが超ラクチンでした。

何が楽ちんかと言うと、自動インストール機能があるのです。WordPressの自動インストール機能が付いているレンタルサーバーは他にもいくつかあるのですが、MySQLのデータベースの設定も自動でやってくれるのです。

また、ブログ名やID、パスワードなどもインストール時に設定できるので、まさにワンクリックするだけでWordPressがインストールできちゃいます。

値段も安いし、WordPressとかMovableTypeとかのブログを使うならミニバードはおすすめです。

ただ、1点だけ僕自身もつまづいたところがあります。

WordPressをインストールした後、管理画面にアクセスすると何の問題もないのですが、実際のブログを見るとファイルがアップロードされていませんと表示されてしまい、作成したブログが見られません。

これは、簡単な事で、そのエラーページがindex.htmlで、それとWordPressのindex.phpがかぶっちゃってるのです。index.htmlというエラーページの方を優先的に表示してしまっているので、index.htmlの方を削除して、index.phpだけにすれば解決しました。

ミニバードのWordPressインストールの際にはこの1点だけ引っかかるかもしれませんの参考に。ミニバード側で、そこまでやってくれたら言うことないのにね。

あと一歩の詰めが甘かったのかな。

2012-04-14

DreamHostでDjangoを使う方法

海外の最強サーバーDreamHostでDjangoを使う方法が分かったので、書き留めておきます。

基本的な手順はここに書いてあります。

http://wiki.dreamhost.com/Django

ちょっとややこしいのが、Step2の2だと思います。/publicというディレクトリを用意しなければなりません。

「Manage Domain」→「Users, Files, and Paths」→「Web directory:」の項目を「/home/username/aaabbbccc.com/public」のようにします。aaabbbcccの部分を各自のドメインに設定します。

最後の段階のStep4でも引っかかると思います。以下のようにするように書いてあります。


wget http://wiki.dreamhost.com/django-setup.py
python django-setup.py

django-setup.pyというのをダウンロードして、そのファイルを起動するのですが、ダウンロードして起動する場所がちょっと問題で、さきほど作成した/publicディレクトリの上でダウンロードして起動する必要があります。lsコマンドでpublicディレクトリが表示される場所です。

そして、最後の難関があります。django-setup.pyをうまく起動することができれば、出てくるとおりに設定項目を記入していけばいいのですが、最後に「Creating project framework…  oops, django-admin failed to run!」というエラーが出ます。

これは、django-setup.pyファイルの中の126行目が原因です。ということで以下のように修正して下さい。拡張子が抜けているので、「.py」を2カ所追加するだけです。

修正前:if os.spawnl(os.P_WAIT, "/usr/bin/django-admin", "django-admin", "startproject", projname) != 0:

修正後:if os.spawnl(os.P_WAIT, "/usr/bin/django-admin.py", "django-admin.py", "startproject", projname) != 0:

修正した後にもう一度django-setup.pyを起動すればうまくいくと思います。

DreamHostは、マジですごい。最強レンタルサーバーだ。

2012-03-11

Pythonで自動的にPOST送信する方法

SEOに取り組む場合、様々な手法がありますが、私が非常に有効だと考えている手法の1つが相互リンクです。

その相互リンク作業をプログラムで、できるだけ自動化したいと思って、プログラムを作成しています。

そのために必要な処理の一つに、問合せフォームなどでPOST送信することがあります。

GETを使っていれば簡単なのですが、POST送信の場合、どうすればいいのか分からなくて調べてみるとurllibを使えばできるということが分かりました。

以下のサンプルは、このページの登録フォームに自動でPOST送信できるものです。

ちなみにこれは弊社のサイトです。

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import urllib

def main():
    # POST URL
    url = 'http://www.shikaku-king.com/mailmagazine/meigen_confirm.py'
    # POSTデータの格納
    postData = {
        'name':'資格太郎',
        'year':'2012',
        'month':'10',
        'date':'15',
        'mail1':'shikaku@king.com',
        'mail2':'shikaku@king.com'
    }
    # URLエンコード
    params = urllib.urlencode(postData)
    # リクエストして出力
    print urllib.urlopen(url, params).read()

if __name__ == '__main__':
    main()

マジでPython超便利。これをうまく応用すれば自動相互リンク獲得プログラムができそう。

2012-03-05

Djangoで404を返してrobots.txtをうまく制御する方法

グーグルなどの検索エンジンの検索結果に自分のサイトを表示させたくない場合、robots.txtを設置してインデックスさせないようにします。

Djangoで作ったサイトの場合、このrobots.txtをうまく処理しないと、サイト内のページがうまくインデックスされない可能性があります。

検索結果に表示させたくない場合には、特にrobots.txtを設置する必要はありません。グーグルはrobots.txtが存在しないと(404)検索結果に表示してよいものとして、ページをインデックスします。

フレームワークなどを使わない通常のサイトの場合、robots.txtなんて知らなくて放置していたとすれば、404を返しますので、グーグルはインデックスを開始します。

しかし、Djangoを使ってサイトを運営している場合、robots.txtの処理をしないとurlのパターンにマッチしませんので、500エラーを返します。

グーグルは、404エラーの場合には、うまく処理してくれるのですが、500エラーの場合、処理がうまくいかない場合があり、サイト内のページが全くインデックスされない状態になる事があります。

私のサイトは実際にインデックスされませんでした。

ということで、Djangoでサイトを作った場合には、robots.txtの処理をきちんとしましょう。具体的には、robots.txtにマッチするようにして404を返すようにすればいいだけです。

urls.pyに以下のようき記述します。

    (r'^robots.txt$', robots), # robotsの部分の名前は何でもOK.

そして、以下のような関数を記述して404を返します。

from django.http import HttpResponseNotFound
def robots(request):
    return HttpResponseNotFound('<html><head><title>404</title></head><body><h1>Page not found</h1></body></html>')


wgetで確認すると、404が返されているのが確認できます。



以上でうまくインデックスされるようになります。私の場合翌日にはインデックスされ始めました。

SEOに取り組んでいる人は絶対にしなければならない事だと思います。

2012-03-03

クロスサイトスクリプティング攻撃の実験

セキュリティの勉強を始めたので、クロスサイトスクリプティング(XSS)攻撃を実際に自分のローカル環境でやってみた。

ChromeとSafariでやってみたけど、なぜかうまくいかない。ソースを見るときちんとスクリプトコードが正しく表示されているので間違いなくできているはずなんだけど、スクリプトが実行されない。

もしかしてと思って、ウィンドウズの電源を入れてIEでやってみた。すると、攻撃成功。もしかすると、ChromeとSafariには単純なXSSを回避する仕組みが組み込まれているのかもしれない。

ついでに、Fire Foxでやってみると攻撃成功。

ググってみてもはっきりとした情報が出てこなかっし確証はないけど、ChromeとSafariには、クロスサイトスクリプティングを回避する仕組みがデフォルトで備わっているんだと思う。

ちなみに、参考にしている本は「PHPサイバーテロの技法―攻撃と防御の実際」です。


PHPってタイトルがついてるけど、別にPHPにそれほど関係なくセキュリティや実際のクラッキング手法について学ぶことができます。

自分はサンプルコードの必要な部分だけPythonで書き換えていろいろやってるけど、全く問題ありません。

ハッカー(クラッカー)に興味がある人で、ちょっとしたスクリプトが書ける人におすすめです。

2012-03-01

レンタルサーバーの選び方

ウェブサイトを作る時に、今まではHTMLとCSSなどの静的ファイルばかりのサイトしか作ってなかったから、レンタルサーバー選びにそれほど困ることはなかった。

でも、2〜3年前からPerlの勉強を初め、CとObjective-Cも少しかじり、今ではPythonを使うようになった。

フレームワークのDjangoも使うようになって、専用サーバーが必要になったので、レンタルサーバーをいろいろ調べる必要性が出てきた。

同じようにレンタルサーバー選びに困っている人がけっこういるのではと思って、自分の知識を元にレンタルサーバーの選び方っていうサイトを作ってみた。

共用サーバーとVPSサーバーの違いとかあやふやだった部分が調べているうちにクリアになってきたので、人に教えようとする事は自分の成長にとって極めて効果的だと改めて実感しました。

今回のサイトは、できるだけ分かりやすく役に立つサイトに育てていきたいと思います。

MacBook Pro で64bitか32bitのどちらで動いているのかを確認

Mac OS X LionにMySQLをインストールしようと思ったら、いろんなバージョンがありすぎてどれをダウンロードしていいのか分からなかった。

そもそも、自分のMacBook Proが64bitなのか32bitなのかも分からない。ということで調べてみると、調べ方が分かった。

ターミナルで以下のコマンドを入力。

uname -a

表示された情報に64という数字があれば64bitだということ。

それが分かれば、DMG Archiveって書いてあるやつをダウンロードすればOK.

2012-02-10

Djangoのadmin画面でスタイルシート(CSS)が適用されない場合の解決法

Djangoのadminサイトのスタイルシート(CSS)が適用されない場合があります。

HTMLソースを見てみるとこんな2行を発見。

でも、mediaなんてディレクトリがそもそもない。

ということで、自分が運用しているサイトに合わせてシンボリックリンクを設定すればいい。

さくらの専用サーバー、Cent OSだとこんな感じです。

ln -s /usr/lib/python2.4/site-packages/django/contrib/admin/media /var/www/html/media

複数のサイトを運用しているような場合には、少しパス名が異なるかもしれませんけど、そこは自分の環境に合わせてみて下さい。

2012-01-02

影響力の武器 ロバート•B•チャルディーニ

新年2日目の今日は「影響力の武器」を読んでます。

人が行動を起こす要因を心理の奥にまで掘り下げて解説しています。

シュガーマンのセールスコピーを書くためのテクニックを解説している本「全米NO.1のセールス・ライターが教える 10倍売る人の文章術」をもっともっと分かりやすく詳細に書いた感じの本です。

この本凄くいい。

何かモノやサービスを売る仕事をしている人にとっては絶対に役立ちます。

去年の夏くらいから、セールス技術を上げるためにNLPなどの心理学的なことの勉強も始めたけど、だんだんいろんな事が繋がってきた感覚を感じています。

今年は大幅な売上増を達成できる予感がしています。

まだ読んでる途中だけど、明日までには何とか最後まで目を通してしまいたい。

そして、直ちに取り入れられる事は実践します。

また、最後まで読み終わったら、詳しい感想でも書きます。

数年前に世界中でベストセラーになったロバートキヨサキ氏の「金持ち父さん、貧乏父さん」を読んで衝撃を受けました。

自分で会社を作ってビジネスを始めてから、その中に書いてあった「セールス技術を何としてでも身につける事が大切」という部分がようやく理解できました。

いくら高邁な理念を掲げても、人に何かを買ってもらわなければ、直ちにゲームオーバーなんですよね。

自分で金を出して、全て自分の責任でやらなければならない私のような小さな会社の社長は、とにかく本気で何としてでも利益を出さなければならないと心底思うわけです。

商売をするためには、大なり小なり絶対に販売スキルを身につける事は大切です。