板橋Twitter前夜祭 5/17

さて、http://itatr.com/ ですが、援護射撃を受けて徐々に形になってきました。

この手の企画モノ、立ち上げるのは始めてなんですが、やっぱり「集客」が難しいです。

こくちーず
http://kokucheese.com/event/index/2486/

での前振り

@ITのイベントカレンダー

http://www.atmarkit.co.jp/event/calendar/detail.php?event_id=96642&genre_id=19

に載せていますが「全然ダメぽ」という奴ですね。googleやYahoo!のSEO対策的にはいいのですが、こ上記の2か所から来るアクセスは全くと言っていいほどありません。

先日の作戦会議でも話しましたが、圧倒的に http://twitter.com からのアクセスが多いです。

あとは、

(塚越さんがメンバ)
http://www.edita.jp/skad/one/skad5743148.html

(水口さんにお願い)
http://ameblo.jp/roppongi-midtown/entry-10528190667.html

からのアクセスのほうが多いのです。

つまりは、マッチングではないかと?そう、露出も大切なんですが、顧客が予想されるところに行かないと駄目ってわけですね。痛感します。

なわけで、

  • お客にしたい人がいる場所を選んで宣伝/告知
  • 興味を持って貰って来客
  • そして、買って頂く(この場合は参加して頂く)

という、対面商売では当然のことが、ネットでも起こり得るわけです。ただし、拡散の速度は、ネットのほうがリアルな口コミよりも早いかな、と。Twitterでリツイートされる、だれが興味を持ってクリック、というパターンが多いのかな、と思います。

という訳で、暫く晒しておきますw。

板橋 ツイッター 前夜祭

http://itatr.com/

興味がある方はぜひ。

20100511_05

カテゴリー: 仕事, 起業塾 | 2件のコメント

漫画onWebクローン作成(準備3)

「製造:流通:販売の比率が1:10:100」であることを思い出して、販売/宣伝をもう少し考察していきます。

漫画onWebのように独立した電子書籍(eBook, eComic, eManga)の場合には、どのように宣伝するのかが問題になってきます。いわゆる、購買母数ですね。先のAIDMAモデルに従えば、

  • 購入予定者の母数を多く取る(宣伝効果 Attention)
  • 購入予定者に興味を持ってもらう(Interest)
  • その後に、欲求の喚起(購買意欲)と、買うという行動。
  • そして、リピータの確保

という流れです。漫画や小説の場合は、「この著者の作品だから」というファン層の購入が多く、この場合は定期的なアナウンス(メールマガジンや自主的にWEBサイトへの訪問)により購入へと繋げることもできますが、一定以上の購入数が欲しい場合は、「認知=宣伝」が不可欠です。

さて、この認知をどうさせるのか、そもそも「知らない」とその本が買えないわけで、ひっそりいい作品を書いて机の引き出しにしまっておいても、「売れる本」は作れません(カフカやゴッホのような路線もあるけど、それはまた別な話なので)。

いま、漫画や小説に関して、WEB取られている戦略は、

  • 書評などの紹介ブログ、口コミ
  • 電子書籍のサイトでの宣伝
  • Amazonのアフリエイト
  • GoogleのAdSence

です。紹介ブログ、口コミは制御できないので、ここではパスしておきます(実は、アフリエイト、AdSenceに関わってきますが)。

Amazon のアフリエイトは非常に強力ですし、本の紹介の場合には表紙画像が使えることから、皆さん重宝しています。一時期は「本の表紙は出版社に権限があるので、一般サイトでは公開してはいけない」ということもありましたが、Amazonさんが各出版社に交渉したおかげで、現在、表紙の画像をブログなりに載せることが可能になっています。このため、表紙の画像をブログなどに載せることは、違法であるかどうかは、うやむやになっていますが、ここでは問題にしません。ああ、肖像権は一部で問題になっているようですね。

Amazonさんは、表紙を掲載できるという労力の代わりに、Amazon経由で本を買ってくれるというシステムを作り出しました。かつ、アフリエイトという形で、購入費用の一部を掲載者に渡すことで、さらに広めることに成功しました。

同様に、GoogleさんのAdSenceもそうです。Googleさんのほうは、Amazonさんとは違い、掲載するターゲットを絞るのではなく、検索システムにマッチしたものを表示させます。これは、技術としてGoogleさんが持っているから出発できたシステムでもあり、逆に言えば、Amazon方式はGoogleさんは取れなかったためです。

そんな訳で、現在アフリエイトと言えば、

  • 紹介本を絞った、Amazon のアフリエイト
  • 検索にマッチさせた、Googleのアフリエイト

の2つが主流です。

もうひとつ、最近のAmazonさんの宣伝に、「この本をかった人は~」と他の本を紹介する仕組みがあります。これも Google さんは取れない戦略で(Google さんの場合は、検索したかどうかというデータでマッチングをさせる戦略があります)、顧客情報を大量に抱えている Amazon さんだからできる芸当です。

これを、ブログパーツ化させた、

  • 複数の本を並べるアフリエイトも

もあります。

さて、この現状を踏まえた上で、電子書籍が弱いところは、

  • Amazon のアフリエイトに載らない。
  • Google の検索にマッチさせにくい(作者名、作品名が知られていない)

という問題があります。同時に、

  • 「この本を買った人は~」の類似戦略も取れない

という問題も加えられます。そう、四国の独立リーグのようなものです。プロ野球はTV中継されるけど、独立リーグはラジオ中継どまり(?)、知らなければ観戦することもできませんよね?

じゃあ、八方ふさがりか?と言えば、そんなことはありません!

先の、アイドマの法則から「リピータの確保」に勝機/商機があります。

漫画同人誌、BL、エロなどのリピータは結構な率です。ツイッターでも多いですが、ブログを書いている人も多いです。また、漫画の熱心なファンは多いし、特定の漫画家なら何んでも買うっていう人もいます(ここにいますw)。そういう人たちは「リピータ」なんです。なので、利用/協力しましょう。

# 「利用」というと大衆的なんだが、「協力」というと身内だよね、こっちのほうが好き。

と、ここまでが前置き。

~~

やっと宣伝の「戦術」な話に入りますが、ざっと方針を列記すると、

  • 現状の読者/FANを大切にする(リピータ客として確保)
  • リピータ客の、口コミ効果を利用する(Attention, Interest)
  • 購買は、独立サイト(漫画onWeb、同人誌サイトなど)で買ってもらう。

という流れを作ります。口コミ効果のほうは、読者自身がブログを書いたり、Twitterで熱心に宣伝するので、そんままでもOK。なんですが、もう少しITシステムを活用します。そう、Amazon、Googleの方法を真似ます。ええ、そうです、日本の物真似ぢからって奴ですねw。

  • Amazon の商品紹介のようなブログパーツを独自に作成する。
    → 購入先は、各独立サイトにする。
    → 商品画像、購入システムは、出来る限り Amazon に似せて使いやすいように。
    → プロ、アマチュアを問わず、電子出版絡みであれば何でも入れる。小説も可能。
  • Google AdSenceを真似て、ブログの中身を読み込む。
    → マッチング情報から、お薦めの数冊をデータベースから抽出。
    → 購入経路は、Amazon ブログパーツと同じ道筋に。
    → AdSence のほうは、成人漫画を別枠にする(区別させる)

という形で、WEBサイトで書籍を紹介している独立サイトを横断させます。

そして、ここでできたブログパーツを、

  • ブログのパーツとして貼る。
  • 本を紹介したいときは、Amazon のように貼りつける。

ようにします。一見すると、Amazon、Google と全く変わらないのですが、中身は独立サイトへ、というやつですね。パーツを埋め込むときのインターフェースさえ、同じようにしておけば、各ブログのプラグインを作成するのも簡単でしょう。

Amazon アフリエイトのように、ブログ掲載の方には収入がありませんが(先行きは入れたいけど)、最初は、

  • 自分の好きな漫画家だからとか、
  • 自分が参加している同人誌だから、
  • 友達が参加している同人誌だから、
  • 応援したい作家がいるから、

という感覚で貼ってくれると思うんですが、どうでしょうか?

カテゴリー: 開発, 起業塾 | 2件のコメント

漫画onWebクローン作成(準備2)

話が前後してしまいますが、ちょっと残しておきたかったので。

佐藤秀峰さんの「漫画貧乏」
http://mangaonweb.com/creatorOCComicDetail.do?no=50&cn=1

があります。原稿料のところは非常にうなづける話で、出版社主導/都合だったりします。コンピュータ関係の本は、本の値段が高い(3000円とか)なので最初の印税(保障部数から貰える原稿料相当のもの)は高いのですが、それでも割に合わないことが多々あります。ですが、漫画の場合は、本の値段も安いし、雑誌掲載のみの場合もあるので、原稿料/印税だけでは非常に難しい。だけど、漫画の原稿を書くの非常に時間が掛かるので、それ以外の副業となると難しいところです(最終的にはイラスト書きもあるのでしょうが、新人の頃は難しいでしょうねぇ)。また、コンピュータ関係は基本は1人で書きますが(共著という場合もあるけど)、漫画の場合はアシスタントを含めて数名で書きます。かつ、取材、トーン代金などの経費もあるでしょう。そう考えると、最初の原稿料(1枚なんぼという値段、具体的な値段は、貧乏漫画を参照してください)をアシスタントを含めて数名で分けると、そうとう「貧乏」です。

会社員で入れば、数十万の給与が毎月手に入る。けれども漫画を書く、漫画家を続けるという選択をする。私も会社勤めをやめて、フリーでやっていく(あるいは起業する)。起業の後押しをしてくださる方、編集者の方には非常に申しわけないのですが、それだけでは支えられません。やっていけません。なんらかの内燃機関を持っていないと、漫画家や起業やフリーランスはやっていけません。特に、漫画家、小説家、イラストレータ、アニメータのように直接「儲け」に繋がらない仕事を選択している方は特にそうです(プログラマってのも入れたいんだけど、これは自画自賛になるのでパスしておく)。

~~

という訳で、漫画家願望崩れ&ITのシステム屋さんとしてはですね、インフラ整備からお手伝いしましょうか、ってな具合です。

~~

少し計画(妄想レベル)を書いておくとですね。
# なぜ、ばらすかというと、ビジネス特許の取得防止(あらかじめ公開しておく)、賛同者の募集、あと自分のやる気のためです。

電子書籍(ebook)界隈では、紙の本/電子の本ということで、

  • 読む媒体としての、本、Kindle、iPad、Sony Reader
  • 流通会社として、出版社、取次業者、本屋、Amazon、Apple

が話題になっていますが、1次作成者(漫画家、小説家、ライターなど)は、これらの問題はどうでもいいんです。現在の原稿料では喰ってけない、ってのが大問題です。出版社、流通会社からすれば、宣伝、マーケティング、インフラの整備(印刷会社、取次、宅急便など)を含めて仕事をするので、原価(原稿料)を抑えたいのは当然。逆に、原稿料/印税で喰っていく1次作成者は、これを上げたいのが当然。

なので、方法としては、

  • 流通の中抜きをする(サプライチェーンの改善)
  • 編集者を味方につける(代行取材、原作者、校正、DTPも含む)
  • 広告/営業手段の確保、読者の確保

という戦略を取ります。1次作成者が「大金持ちになりたい」と思うのであれば大手出版社の流通に乗せないと無理でしょうが、「今よりは豊かになりたい。創作を続けていきたい」と思うのであれば、原稿料/印税相当のものを上げるほうがベターでしょう。

また、出版社から独立する場合であっても、徐々に移行していきますので「過渡期」があります。この「過渡期」においては、AmazonやAppleの戦術に乗っていきます。

 

漫画などの著作を流通させる場合、これからは3つの方法が取れます。

  • 現在の出版社を通して、本あるいは電子ブックとして出す方法
  • 出版社を通さずに、個人あるいは集団で Amazon、Apple 経由で売る方法
  • インターネットというインフラを通して、Web経由(漫画onWeb)、PDFで配る方法

読者からの課金は、

  • 出版社の場合は、本の代金から原稿料/印税として徴収
  • Amazon、Apple の場合は、流通会社経由で徴収
  • 独自インフラの場合は、自前で徴収

ということになります。当然、独自インフラが一番中抜きの率が低くなります。そういう訳で、徐々に独自インフラに移行させます。

漫画onWeb の場合(あるいは類似パターンが出てくるでしょう)、出版社の宣伝より非常に狭い範囲に限られます。新人の売り出しもそうですが、新連載のアッピールは出版社が持つ広告を使ったほうが広まるでしょう。一方で、AmazonやAppleは、本の宣伝はしません。AmazonやApple が特になる本の宣伝はするでしょうが(無料にするなり、著者をサポートするなり)、流通の考え方は、出版社と同じです。中抜きが Amazon、Apple に置き変わっただけです。

ならば、

  • 広告媒体としては、出版社を利用する。あるいは、出版社に代替するものを求める。
  • 流通としては、Amazon、Apple を利用する。徐々に独自インフラへ移行する。

という方法がベターです。

漫画に関して言えば、雑誌自体の広告、コンビニへの毎週の配本、電車のつり広告、TVへの広告などがありますが、おそらく、

  • 既存読者へのアピール(リピータの確保)
  • 新規読者の確保(新規顧客の開拓)

を考えた場合、メールマガジン、メーリングリスト、雑誌形式のWEBサイトへの宣伝、宣伝用のTwitterの利用(宣伝に関しては、独自のTwitterクライアントが必要でしょう)などのほうが効果的でしょう。もともと雑誌の性質上、漫画雑誌の読者層(ターゲット)は絞られているわけですから、幅広い年齢層、多人数に広告を出すよりも、適切な読者層にアタックしたほうが効果的です。

そんな訳で、今考えてていることを列記すると、

  • 漫画onWebのような、オンラインブックのサイトを複数立ち上げ
    → 当面は、漫画onWeb主導でもいいと思う。
    → ただし、今の状態では、佐藤氏がパンクする。
    → ひとつでもいいけど、おそらくサーバーもパンクする。
  • 電子決済は、ひとつにまとめる。
    → クレジットカード会社との契約を一本化
    → 漫画onWebで使われている、1話20円台を踏襲する?
    → 前払いのポイント制が良い。
  • リーダーを複数化
    → 漫画の場合は、スキャンが基本なので、HUB形式、ePub形式、PDF形式を置く。
    → Kindle は Amazon、iPhoneとiPad は Apple の流通経路を当面使う。
    → ePub 形式にすれば、Amazon、Apple を通さない配布も可能。
    → PC版は、Flash、Silverlight、HTML5 など。
    → 不正コピー防止の仕組みは、独自インフラでは必須
    → ダウンロード販売よりも、ブラウザにて閲覧が主体。
    → ダウンロードする場合は、専用リーダ(公開キー付き)を利用する
  • 雑誌形式の企画
    → 新人の発掘(漫画界を支えるため)のため、雑誌形式の配布も用意する。
    → 既存の漫画雑誌と同様に、新旧入り混じって売る。
    → 新人、ベテランの原稿料は同じにする?(新人が暮らせるようにする)。
    → 編集者の参加は必須と思われる。
  • 宣伝/広告インフラ
    → 電子媒体(インターネット、メールマガジンなど)を主に考える。
    → WEBサイトを持つ企業へのアピール、電子雑誌への広告費を徴収。
    → 宣伝用ブログパーツの配布
    → 漫画/小説サイトへの、広告を募集。

ここまでくれば、

  • 出版社の原稿料/印税率に悩まずに済む。
  • Kindle や iPad などの、特定媒体に依存せずに済む。
  • Amazon や Kindle の新流通に縛られずに済む。
  • goolge の検索広告に頼らずに済む。
  • 余計な仲介業者が入らずに済む(自費出版とかね)。

でしょう。印刷された本のほうは、また別途流通を考える必要があるでしょうが。

 

いちおう、このアイデアの元となった方々をリンクしておきます。ブログやTwitterを参照されると、経緯がわかるかなと。

最初のTwitterで拾ったのが↓でした
ウェブコミックの「イマココ」/「漫画onWeb」収支状況の報告と考察

佐藤秀峰さん/漫画 on Web 
http://mangaonweb.com/creatorTop.do?cn=1

一色登希彦さん/アトリエモーティヴ オフィシャルウェブサイト ブログ
http://toki55.blog10.fc2.com/

須賀原洋行さん/漫画家Sのブログ
http://uaa-nikki.cocolog-nifty.com/

カテゴリー: 開発, 雑談 | 4件のコメント

物欲 web (妄想)

以前、買ったもの自慢だったか、節約 web だったかのページがあって、家計簿を付けて自分の無駄にしあたお金(かな?)を自慢(かな?)するページがありました。ITバブルもはじけて、インターネットも普通に使われるようになり、PCよりも携帯でネットを見る時代になってきた訳ですが。。。

って、前置きは実は関係ないなぁ。

端的に言うと、消費行為って、大量消費をすすめる産業構造のたまものであって、それが続くなくなってきたのが今という時代。ならば、「物欲」という欲求をどのように満足させるか?が、現実のお金を大切にする(っていうか、そもそも使うお金がない)という行為に至る。ええと、消費行為って、宣伝/マーケティングの手法に則ると、いくつかの段階があって、最終的に「購入する」っていうの至らせるのが、マーケティング側の手法。ならば、最終的には「購入しない」っていう方法でも満足できれば、消費者(あるはい非消費者)としては十分なわけです。ああ、インフレを推し進めるとは別な話で、どうも最近話題になっている「モノを買わなくなった若者たち」の各記事に、疑問を呈するってな感じ。

 

さて、モノを売る側としては「購入させる」に至らせるところで、消費者の欲求レベルを少しずつ上げていくのですが、消費者側からすれば要求レベルが少しずつあがって、最後に「やっぱ買わなくていいか」とか「選んだだけで満足」とか、モノを買わなくても満足できればそれでいいわけです。

そう、バーチャル焼き肉みたいなのがそうで、焼き肉を焼いている行為を楽しみたい場合は、お金を出して焼き肉を買わなくてもいいわけで。口に入る瞬間の楽しみ(あるいは食欲を満足させる)を省いても「満足」できれば、それでもいいのかと。面白味ってのもあるけど。

って、なかなか本題になりませんが。いや、消費行動までの段階のフローを書いた図が見つからなくて。

あった!

AIDMAの法則(アイドマの法則/AIDMAモデル)
http://www.medi-graph.com/contents/essay/manual/004.html

な感じで、いくつかの段階があります。

これで、モノを売る側としては、Action(行動)がイコール消費になるので、お金を得る(お金を払う)という現実です。AIDASモデルの Satisfaction(満足)は、クレームを付けられない/リピータを確保するという行為なので別ものです。最近のブログ/Twitterへの紹介記事はこれにあたりますね(アフリエイトは別です)。買ってから「これいいよ」って紹介するブログです。昔ならば地域販売して、とある家庭でデモをするみたいなのがこれです。今でも料理関係はやってますね。

というわけで、こういうマーケティングの戦略=「モノを大量に買ってくれ」の要求を回避するためには、賢い消費者(あるいは非消費者)は最後の「Action(行動)」を避ければよいわけです。

そう、マーケティング側の示す「Action(行動)」を避けて、自分たちの行動にスライドさせればよい訳です。「Desire(欲求)」を抑えるのは難しい。物欲を抑えるのは難しいので、その次の「Action(行動)」をお金の掛からないものへとスライドさせれば、必需品程度のお金だけも「満足」が得られる、という訳ですね。

 

、、、という理論を考えてみた訳ですよ。果たして正しいかどうかは別として、

  • モノを買いたいという衝動(消費行為、ストレスの発散も含む)
  • モノを買った後の行為(他人への自慢、自己満足も含む)

の中で、モノを買いたい→買った後の行為、が繋がらないものを省けば良い、という訳。俗に、買っただけで読まない本、買っただけで使わないiPodなんてあるでしょう?(私、iPodを買ったけど使わない…)

 

ええと、即考えられるのは、

  • 買った気分にさせる物欲サイト

なんですが、これはアメピグみたいな部屋を持って内装を作るってやつですね。実際に家具を買うよりはずっと安い。着せ替え人形タイプです。ただし、戦略としてでしょうけど、結構この「仮想」も高いのが難点。あと、廃れてしまったセカンドライフもそうですね。仮想空間の中で遊ぶやつ。企業も参入しましたが、結局のところPCの前に座っている時間ってのは、1日24時間しかないわけですから限られているんですよ。現実のほうがもっと面白い。

なので、先の理論をひっぱってきて、行動をスライドさせる、

  • 「Desire(欲求)」を羅列して充足してしまう物欲サイト

を考えました。いわゆるAmazonの「ほしい物リストに追加する」ってやつです。ええ、そうなんんです、既に機能としては実現されているんですよね。

さて、「ほしい物リストに追加する」ってのは、Amazonさんとしては「買う」というActionに結び付けたいわけですが、消費者としては何もかもが買いたいわけではない。Amazonさんとしては、必死に「こんなのもありますよ!」と宣伝してくれますが、いえいえ全てが欲しいわけではないのです。ああ、電化製品を買うときには「見てるだけ」っている時間が欲しいものです。

というわけで、この物欲Webには「ショッピングカートにいれる」ボタンがありません。そこでは買えません。あればいいなぁ、ってのを書き集めるだけです。

  • Amazon を見ていて、欲しい物みつかる(欲求)
  • 物欲 Web に入れる(行動)
  • 忘れる

っていうサイクルを繰り返し、節制をします。他にも

  • 店に行って、ああ、あれがあればいいのにと思う(欲求)
  • 物欲 Web を見る(行動)
  • 前にも入れたんだっけ、じゃあ、まあいいか。

というサイクルもあります。

「物欲 Web」というよりも「禁欲 Web」に近いのですが(笑)、私の「ほしいものリスト」の使い方はそれに近くなっています。とりあえず、ほうり込んでおけ、っていう感じ。似たように使っている人も多いでしょう?

基本機能としては、Amazon、楽天、Yahoo!オークションなどから、物欲 Web に放り込みます。bookmarlet を使うといいんでしょなぁ、IEの専用ツールバーを作ってもいいし。

あとは基本的な機能としては、

  • 写真を並べ替えして、
    → 満足する。
  • 買っちゃたものの値段を合計して出す、
    → ああ、無駄遣いしちゃったと反省。
  • どうしても必要ならば、サイトに行って買う。
    → カートに入れる機能はなし。でもいいかな。
  • Amazon みたいに、「これを欲しがっている人は、これも欲しがっています」を出す。
    → 訳分からんし。買えない人同士でコミュニケーション?
  • Amazon の評みたいに、買っていない人のコメント欄
    → 無責任発言満載、みたいな?

ああ、ここまで書いて、マジで面白そうな気がしていた!

どうしようか?作るか?マジで欲しいぞ!

 

いや、こういうときこそ、物欲Web に入れておけばいいんじゃないか!

カテゴリー: 雑談 | 2件のコメント

漫画 on Webクローン作成(準備)

漫画 on Webのビューアに触発されて、Silverlight で作ってみよう、と思い立ちました。

Silverlight 3 のインストールが必要ですが、こんな感じ。
http://moonmile.net/sl/SampleMekuri/

ページの左半分をクリックすると前へ、右半分をクリックすると元に戻ります。

ソースの方は後で公開しますが、制作ポイントを話すと、

  1. Grid に囲まれた Image を 2枚用意する。
  2. マウスクリック時に、1枚目の Image をアニメーション。
  3. 2枚のImageをページに合うように差し替え

なことをしているだけです。
ページ自身は、見て分かるとおり画面のキャプチャで、サーバーに PNG 画像として置いてあり、適宜読み込んでいます。なので、1回目はちょっと重たい。2回目以降は、キャッシュが効いているので、スムースに読み込めます。

# このあたり、リソースからもできるはずなんだが、ひとまずサーバーから読み込み方式で実装

20100505_01

制作手順としては、

  1. めくり画像を用意
  2. 最初に、WPFアプリケーションでWindows上で実装。
  3. Expression Blend のタイムラインを使って、切り替えアニメを作成。
  4. 1枚目から2枚目の切り替えを実装。
  5. 複数のページを切り替える方式に変更。
  6. マウスの右ボタン/左ボタンで、進む/戻るを実装。
  7. Silverlight アプリケーションを作成。
  8. XAML コードの移し替え
  9. C# のコードを移し替え
    WPF と Silverlight で要素の扱いが若干違うので修正。
  10. Silverlight だと、マウスの左クリックしかないので、ページの右/左に変更。
  11. リソース読み込みから、サーバーのURI指定に変更。
  12. FTPでサーバーにアップして実験

な感じですね。

漫画の場合は、スキャナで読み込むので画像の切り替えだけで済みます。漫画の著作権なんかは、サーバーに画像データを置くので、通信時にしか使えないので大丈夫そう(トリッキーなことをすれば、抜けるかもしれませんが)。

iPhoneアプリと同じように、WPFアプリを作成してしまってPC上のローカル環境で動かすのも可能です。この場合は、WPFアプリ自身にDRMを確認するコードを入れるか、パスワード配布という方式が取れます。公開キー方式でも良いでしょう。

文章の場合には、(アイデアレベルですが)ブラウザ(WebBrowserコントロール)を内蔵させてしまうという手があります。ページ捲りをしたいので、ブラウザを2枚用意して、WPFの機能でめくるようにアニメーションさせます。

なところまで考えて作成。ここまで3時間弱ぐらい。

カテゴリー: 開発 | 漫画 on Webクローン作成(準備) はコメントを受け付けていません

ePubコンバータ作成(準備)

電子書籍を開始する前に、システム屋さんとしてはePubを勉強しておこう、ということで、いくつか調査中。

  • テキストからePubを作成する。
  • 画像からePubを作成する。

著作権、不法コピー(海賊版)を防ぐためにはDRM(Digital Rights Management)が必要なんだが、プラットフォーム依存(Kindle、iPhone、iPad、Sony、Adobeなど)なところもあり、流通依存(Amazon、Appleなど、漫画onWeb)なところもある。将来的には課金を考えないといけないのだが、ひとまずシステム屋としてはインフラ主導で考えてみよう。

フリーで作成、流通、PCやiPadなどで閲覧、を想定してフリーなものを探してみると、

iPadビジネスを先取り!EPUB関連フリーソフト5選http://builder.japan.zdnet.com/sp/opensource-for-developer2010/story/0,3800103086,20408786,00.htm

で、フリーのビューア&作成ツールが選べる。ひとまず手軽だろうと思われる Adobe Digital Editions をダウンロードして導入してみる。ページ送り1枚なので見開きとはいかないが、横書きならばこれで十分だろう。

20100504_04

さて、フリーなコンテンツからePubというと、青空文庫からコンバートできるのがいいので、Text2ePub 0.8(β)を試してみる。青空文庫から直接ダウンロードできたりして、版権が切れた本を読むのにいいんだが、、、ああ、何故か私の環境では動かない(悔しい)。

青空文庫 (XHTML) -> ePub変換 なところで、ePubに変換できるらしいんだが、ああ、Bookmarlet が動かん。

ん~、どうしたもんか、と悩んだところ、そうか、試しに epub を zip に変換して中身を覗いてみればいいのだ、ってことで zip を解凍してみる。なるほど、見たことがあるファイルっぽいね、単なるXHTMLファイルが並んでる。

というわけで、いくつか手作業で修正してみて、zip 圧縮、拡張子を「epub」に変えて、先の adobe digital Editions で読むと、うん読めます。この位ならば、perl スクリプトを組むだけでも十分ですね。

 

という訳で基本に返って、仕様っぽいものを読んでみる。

日本語Epubブックサンプル
http://www.kobu.com/docs/epub/index.htm

.epub eBooks Tutorial
http://www.jedisaber.com/eBooks/tutorial.asp

ここのチュートリアルは英語しか通さないので、日本語を通すようにします。その手順をざっと書いていきますね。

  1. チュートリアルから、sample.epub をダウンロード
  2. sample.zip にして展開する。
  3. OEBPS/chap01.xhtml を開いて、
    先頭の encoding を “iso-8859-1″ から “UTF-8” に変更
    <meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8″ /> を追加
    body の何処かに日本語を書いておく。
    そして、UTF-8 で保存
  4. OEBPS/stylesheet.css を開いて

    @font-face {
      font-family: “ipampmona”;
      src: url(font/ipamp-mona.ttf);
    }
    body {
      font-family: “ipampmona”;

    な感じで追加。これは、日本語のフォントを埋め込むためで、ipamp-mona.tff は IPA でダウンロードするか、先の「青空文庫 (XHTML) -> ePub変換」から、サンプルをダウンロードして、展開した後、font/ipamp-mona.ttf を引っこ抜きます。

  5. なわけで、フォントは、
    OEBPS/font/ipamp-mona.ttf
    にコピーしておく。
  6. これを zip で圧縮します。
    圧縮するときは、sample のフォルダを圧縮するのではなく(これでしばらく悩んだ)、
    META-INF
    OEBPS
    mimetype
    を選択した状態で圧縮します。

    20100504_05

  7. 拡張子を zip から epub に変換します。
  8. Adobe のビューアにドロップします。

な感じで、epubをPCで見ることができます。

 

内容のコンテンツは、拡張子が xhtml になっていますが、これだと IE とかのブラウザで確認しづらいので、html にすることができます。拡張子を変更した場合は、content.opf ファイルを書き換えます。

manifest/item のところで、IDとファイル名(href)が指定してあるので、これをちまちま修正。

<item id=”chapter01″ href=”chap01.html” media-type=”application/xhtml+xml” />
<item id=”chapter02″ href=”chap02.html” media-type=”application/xhtml+xml” />

な感じで書きかえるとブラウザで確認しつつ、html を修正ってことができます。

 

というわけで、ビューアが縦書きをサポートしてくれれば、自前のスクリプトでepubファイルを作って小説を読むってことができます。

同様に、画像の埋め込みも非常に簡単なので、同人誌をepubにして配布ってのも十分可能です(無料配布ってのがアレだけど)。宣伝用にはいいんじゃないでしょうか。

後は、epub のファイルを作っていて思いついたんですが、Adobleのビューアでは印刷ができるので、PDFの変わりになります。適度にHTMLを使ってページを作成した後に、ツールを使って epub へコンバート、そのまま印刷。配布資料を作成する場合は、HTMLとepubが一度にできるので楽そうです。

カテゴリー: 開発 | 4件のコメント

投稿専用Twitterクライアントを作る(2)

前回の反省を踏まえて、bit.ly は真面目にテストしつつやる。プログラマ根性というところ。

さて、bit.ly の API を使えることを知っていはいたものの、

APIドキュメントを見るのもしんどいし
http://code.google.com/p/bitly-api/

そんな訳で、検索して探すと、

bit.ly (短縮URL) API呼び出し (その1)
http://d.hatena.ne.jp/m-kawato/20090603/1244041369

があるので参照する。

  1. bit.ly で api key を取得する。
  2. .NETのWebClientを使うことに決定。
  3. クエリ呼び出しが楽なので、OpenReadメソッドを使う。
  4. テスト用のプロジェクトを作って、長いURLを渡して結果を返すところまで完成。
  5. デフォルトではJSONで返ってくるので、formatをxmlで指定。
  6. ストリームを XmlTextReader → XmlDocument に変換。
  7. 「shortUrl」を探して変換テスト
string transBitUrl(string longurl)
{
    string query = "";
    string shorturl = "";

    WebClient web = new WebClient();

    query = "http://api.bit.ly/shorten?format=xml&"
          + "version=2.0.1&longUrl=" + longurl
          + "&login=" + bitLogin + "&apiKey=" + bitApiKey;

    Debug.Print(query);

    Stream st = web.OpenRead(query);
    XmlTextReader xr = new XmlTextReader(st);
    XmlDocument doc = new XmlDocument();
    doc.Load(xr);
    var lst = doc.GetElementsByTagName("shortUrl");
    if (lst != null && lst.Count > 0)
    {
        XmlElement el = lst[0] as XmlElement;
        shorturl = el.InnerText;
    }
    st.Close();

    return shorturl;
}

これがテストできたので、今度は文章中のURLを変換させる。

  1. IndexOfメソッドで変換しようと思ったが、面倒そう。
  2. 正規表現の Regex クラスを使うことに決定。
  3. 簡単のために”http://[^ ]+ “ のように、後ろに半角スペースで区切る。
    実は、文章末の場合のチェックが必要なのだが、ここでは省く。
  4. 見つかった文字列を MatchCollection で受けて、Replace すれば OK。
  5. ローカルでチェックしてOKなので、これを先のアプリに組み込む。
string transShortUrl(string text)
{
    Regex reg = new Regex("http://[^ ]+ ");
    MatchCollection mc = reg.Matches(text);
    if (mc == null || mc.Count == 0)
    {
        return text;
    }     foreach (Match m in mc)
    {
        string lurl = m.Value;
        if (!lurl.StartsWith(http://bit.ly))
        {             string surl = transBitUrl(lurl);
            if (surl != "")
            {
                text = text.Replace(lurl, surl+" ");
            }
        }
    }
    return text;
}

Bitボタンを付けて、

20100504_02

な状態から、Bitボタンを押せば、

20100504_03

な状態へ。ここまでは1時間半程度、まずまずか。

カテゴリー: 開発 | 投稿専用Twitterクライアントを作る(2) はコメントを受け付けていません

投稿専用Twitterクライアントを作る(1)

さくっ、と出来るかと思ったら、結構掛かった。20時頃からやって23時半まで、う~む。

原因としては、

OAuth(xAuth)のVB.net実装サンプル
http://d.hatena.ne.jp/Kiri_Feather/20100305

なところを、VB.NETからC#へ移し替えようとしたのが駄目。結構長いことが分かって嫌になってしまった。あと、いきなりWPFアプリを作ろうとしたのが駄目だな。2重に駄目が重なってしまって、うまくいかなくなってしまった。

なので、一端やり直して。

  1. VB.NETを丸ごとコピーしてビルド
  2. 試しに、Windowsフォームを作ってみた。
  3. その前に、ボット用のアカウントを取得
  4. TwitterのbotをOAuthに対応させる を参考にして、ruby で手順通りやる。
  5. 手順通り、gem install oauth する。
  6. 手順通り、oauth-patch.rb を作る。
  7. 手順通り、twitter-oauth.rb を作る。
  8. アクセストークンを取ってきて、
  9. 手順通り、twitter-oauth-access.rb で動かしてみる。
  10. 動いた動いた。
  11. どうやら、二重投稿は却下される模様。よかったよかった。
  12. IEでツイッターにログインしてない状態でもチェック。
  13. さて、VB.NET のほうで、認証を試してみるが「認証失敗」
  14. 試しに、投稿してみると投稿できる。
  15. なぜ、認証に失敗するのかよくわからないが、投稿ができるのでOKとする。
  16. いくつか、Windowsフォームから投稿するパターンをチェック。大丈夫そう。
  17. VB.NETで、WPFプログラミングかぁ、と一瞬悩んだ末、C#でWPFを作ることに決定。
  18. 参照設定で、VB.NETのライブラリを追加する。
  19. Visual Studio 2008 で、WPFアプリを作って動かしてみる。
  20. 一応大丈夫そう。投稿できている。
  21. Expression Blend 3 を立ち上げてデザイン開始。
  22. ああ、ボタンの作り方がわかんない、ってんでネットで検索
  23. ああ、テキストボックスが改行されない、ってんでネットで検索
  24. ああ、イメージをリソースから表示できない、ってんでネットで検索
  25. ああ、マウスをポイントしたときに色が代えられない、ってんでネットで検索
  26. やっぱり、WPFの本がないと無理だよなぁ。デザイナじゃないし、良しとするか。

という訳で、自分専用(パスワードとか埋め込みだから)のツイート専用アプリは、ひとまず完成。

ああ、そうそう、せめてbit.lyを入れなくちゃ。

20100504_01

フォントは「江戸勘亭流P」で。日本語の場合はいいのだが、アルファベットの場合が変なので後で変えるか。

カテゴリー: 開発 | 投稿専用Twitterクライアントを作る(1) はコメントを受け付けていません

Visual C++ 2010 の新機能メモ

Visual C++ 2010 の新機能
http://msdn.microsoft.com/ja-jp/library/dd465215.aspx

C++/CLIのインテリセンスが効かないので、C++/CLI関係は駄目なのですが、C++はかなり便利機能満載なので、メモ書き。

■autoキーワードで型推論が使える

最初に言っておくと、「auto」はC++のキーワードで、内部変数の有効期間を示すものなのですが、滅多に使われない(というか全く使われない)ので、Visual C++ では「型推論」のために意味が変更されています。

なので、/Zc:auto なるスイッチが導入されています。デフォルトでは、型推論が有効な状態ですね。
http://msdn.microsoft.com/ja-jp/library/dd293615.aspx

書き方は、

auto i = 10 ;

なんて形で書きます。これだと余り意味がないので、

vector <int> vec ;
vector <int>::iterator it = vec.begin();

の代わりに

auto it = vec.begin();

なんてことが出来ます。

この型推論ですが、F#のタプルを扱う時や、C#での複雑なLINQを扱うとき(C++にLINQはないけど)に便利です。

 

■ラムダ式

ラムダは無名関数とも呼ばれますが、algorithm 関係で比較式を扱うときに便利です。

例えば、sort 関数の場合、比較関数を指定できるのですが、今までは必ず関数を作る必要がありました。

int comp( int x, int y ) { return x < y ; }

sort( vec.begin(), vec.end(), comp );

な感じで、comp関数が必要なのですが、ラムダ式を使うと、

sort( vec.begin(), vec.end(), [=](int x, int y ) { return x < y; });

な感じで、その場で書けます。

いくつか書き方があるので、詳細は調べないと駄目なんですが、mutalble というキーワードを使うところを見ると、F# の影響も入っているようです。

 

■nullptrの利用

長らく、NULLポインタを表すものは、

#define NULL (void*)(0)

で定義されていた訳ですが、Visual C++ 2010 では決別したいようですw

if ( p != NULL ) {

のところを

if ( p != nullptr ) {

と書き換えができます。

nullptr
http://msdn.microsoft.com/ja-jp/library/4ex65770.aspx

を見ると、/clr が必須なようですが、ネイティブのC++を使った場合も通ります。

ってここが改変点なのに! Visual C++ 2008 だとネイティブのほうは nullptr が通りません。

これの便利な処はですね、組み込みシステム何かを作っていると、「#include <stdio.h>」なんてのができません。なので、自前で #define NULL (0) ってことをやることが多いのですが、別の会社でもやっていると、

#ifndef NULL
#define NULL (0)
#endif

なんてのが、頻繁に出てきます。これを回避するために、nullptr が…って、あと、ポインタと0の混在が…、組み込みだと Visual C++なんて使わないですよね~。

  • NULLの再定義による副作用を避けるために、nullptr の導入
  • C++/CLI で使われるNULLポインタと合わせるために、C++にnullptrを導入
  • templateプログラミングでNULLポインタが扱える

ってところですね。

ちなみに、sizeof( nullptr ) ってのも通って、値は「4」です。int型になっているみたいですね。代入は、char *でも、double *でも、NULL同様にできます。

カテゴリー: 開発 | Visual C++ 2010 の新機能メモ はコメントを受け付けていません

投稿専用Twitterクライアントを作る(準備)

Twitterを始めて2週間ほどなので、PCからブラウザ上でやっています。

Webでぽちぽち追っていてもいいんですが(この手のは慣れているので)、入力がちっと面倒。文字数をカウントしてくれるのはいいけど、あの textarea でちまちま編集するのは難しい。かといって、エディタで書いてからペーストすると、文字数を超えてしまうし。

なので、自分用の投稿専用があってもいいかなと(先行きは、リストを表示するでしょうが)。

目標としては、

  • 文字数が制限される(140文字)
  • URLを bit.ly などを使い、短縮できる。
  • そのアプリで投稿できる。

なぐらいですか。実は、最後のはブラウザへコピペでもいいんですが、まあ、先行き作る(であろう)botの調査も兼ねて作ってみるということで。

あと、どうせなので、.NET Framework の WPF を使って、綺麗な画面を作ります。

PHP+OAuthでTwitter
http://www.sdn-project.net/labo/oauth.html

そんなんで、いきなり認証絡みで躓いたので、↑を参照にして。

と思ったら、VB.NET のサンプルが

OAuth(xAuth)のVB.net実装サンプル
http://d.hatena.ne.jp/Kiri_Feather/20100305

ありがたや~。

カテゴリー: 開発 | 投稿専用Twitterクライアントを作る(準備) はコメントを受け付けていません