ことのはオフ会作品 


時々、ことのはというサイトに遊びに行く。短歌や折り句、小説、物語りなどを数人で共同制作して遊ぶサイトで、思いがけない作品ができるので面白い。そのサイトの管理者はなぜかオフ会を嫌うので、オフ会で制作した作品を掲載する場所がなかったので、ここに置かせてもらう。



2004年 忘年オフ会での作品



●折り句 にじゅうまる(オフ会の会場がにじゅうまるという居酒屋だった)
荷造りは(とらちゃん)
10キロ以内(shiho)
運搬は(松徳礼治)
任せて安心(堺ちゃん)
ルパン三世(とらちゃん)

●折り句 なしごれん
帰りしな(shiho)
下駄箱壊し(松徳礼治)
荒れる孫(とらちゃん)
この指止まれ(堺ちゃん)
塵芥処理班(松徳礼治)

●偽連歌
ひさしぶり(堺ちゃん)
変わらぬ声に(松徳礼治)
ほっとして(とらちゃん)
猫と陽だまり(shiho)
あなたとわたし(堺ちゃん)

●4文字リレー小説
あしたは彼女が家出したのから数えて一週間だ。僕からして彼女のことは一番危かしげで見ていられない。どこへ一人で行っているのか、家族の誰も知らない。ある時刻になると携帯のアラームがひっきりなしに鳴り出すのだ。いくつもいくつも止まらない携帯。耳の奥底に残って僕はたまらず彼女にメールを送った。返信が思いがけず即座にきたので、僕はベランダを覗いた。彼女が手を、その白く透き通った姿を写すように涙が一筋。でもすぐに消え失せた。僕は彼女が今どこにいるのか星を探すより難しいことを知った。



2005年 花見オフ会での作品



●折り句 マスカット
まずひとつ(松徳礼治)
酢の物頼み(shiho)
カビの味(およよ)
漬け物だから(あかさたーな)
父さん食べた(にむ)

●折り句 きのこの山
きれいだね(あかさたーな)
のたまったけど(にむ)
心では(堺ちゃん)
のたまったけど(松徳礼治)
山は当たらず(グッピー)
-------競馬の大穴後、外れ券の紙吹雪

●折り句 ショウガトウ
精霊(しょうろう)の(グッピー)
うつつが夢か(およよ)
がん真か(にむ)
とうじのままに(松徳礼治)
産声あげる(堺ちゃん)

●折り句 桜はなびら
桜とは(松徳礼治)
はるか遠くの(shiho)
平城(なら)山に(およよ)
美人がひとり(堺ちゃん)
羅漢(らかん)を拝む(グッピー)

●折り句 ひつまぶし
陽も高く(堺ちゃん)
月は泣くのみ(shiho)
惑うのみ(およよ)
分が悪くとも(にむ)
始末がつかぬ(グッピー)

●折り句 浅漬けの素
浅瀬にて(にむ)
漬かった足は(およよ)
今日(けふ)の味(グッピー)
のらりくらりの(堺ちゃん)
素敵な喉ごし(松徳礼治)
-------大根漬け

●折り句 かとうちゃ
河川敷(堺ちゃん)
とうとう流る(にむ)
うたかたの(グッピー)
塵もあくたも(松徳礼治)
山となるぬる(shiho)

●折り句 さくら吹雪
誘われて(shiho)
くらくらとして(およよ)
ラララララ(堺ちゃん)
吹田の路地を(にむ)
雪にまみれて(グッピー)

●折り句 がちょうの卵
がっちょーん(およよ)
ちょっと待ってよ(堺ちゃん)
ウソだぴょん(にむ)
のんきな人に(グッピー)
卵のシャワー(松徳礼治)

●折り句 ヨーヨーとマーマー
ヨーイドン(およよ)
ヨーシ勝ってる(堺ちゃん)
飛ぶように(松徳礼治)
マーキングして(shiho)
マージャン王者(あかさたーな)


オブジェクト指向 


プログラミングを行なう時、流れを追って作っていくと簡単に作れるが、後々修正する時に面倒になる。一日の動作に例えると、

起きる⇒飯を食う⇒働く⇒飯を食う⇒働く⇒飯を食う⇒寝る

ここで共通の「飯を食う」がバラバラに書いてあると、ご飯の食べ方を変える(修正する)場合に、3つあるから3つとも書き換えなきゃならない。でも、共通の作業を「関数」として作れば修正は1箇所で済むのだ。

起きる⇒飯を食う⇔働く⇒寝る

多くのプログラムはこういう関数の集合体でできている。



オブジェクト指向


「飯を食う」時、レストランに行けばすぐに食べられる。ここで、自分で作る人もいるだろうが時間と手間がかかる。ましてや自分で食材を採りに行くなんてことは非効率的だ。レストランで飯を食うにしても、料理人がどこで食材を手に入れ、どうやって調理しているかを知らなくても、お金を出せば料理が出てきて食べられる。どんな人が来ても、お金さえ払えば飯は食えるのだ。社会は個人や団体が役割を分担し成り立っている。たった1人で1から10までやるサバイバル的な生活をしている人は少ないはずだ。
プログラミングも同じように、1から10まで順番に書いたプログラムは非効率的である。関数やクラスに役割を分担させ、どんなプログラムでも引数を出せば結果が出てくるようにし、それが集合していれば大きなことができる。関数やクラスに汎用性を持たせれば、新しくプログラムを作る時に、その関数やクラスについて考える必要がない。主プログラムは「あ〜して、こ〜して」と細かいことを書かなくて済むから、飯を食うときは「飯を食う」と書くだけ。非常にスッキリした分かりやすいプログラムになる。
このように1つの役割を1つの「もの・こと(オブジェクト)」としてとらえ、プログラミングしていく考え方をオブジェクト指向という。



クラスとインスタンス


1つのラーメンを数人で食べると、人によって食べ方は違うので「勝手にニンニク入れるなよ!」とかケンカになるかもしれないが、1人につき1つのラーメンを出せばケンカにならない(当たり前だけど)。そのラーメンはどんな食べ方をしても個人の自由だ。だけど、作るたびに味が違ってはいけないのでレシピを作る。
プログラムも同じように、1つの関数をいろんなところから呼び出すと「勝手に$aに1足すなよ!」とケンカになるかもしれないが、同じ関数をその動作に応じて作成すればケンカにならない。それがクラスとインスタンスなのである。上の例で言えばレシピがクラス、できたラーメンがインスタンスとなる。
インスタンスはクラスのコピーだが、メモリ上でコピーするだけで、いちいち同じクラスを複数書くわけじゃない。レシピは1つあれば十分で、ラーメンは食べ終われば必要なくなるのだ。



クラスの継承


料理人はやがてのれん分けされ、自分の店を持つ。自分の店では本店の味を継承しつつ、自分のアレンジを加えて別の味が作れる。クラスも同じようにもとのクラスを継承して別のクラスを作ることができるというメリットがある。

デザインも考慮したプログラミングを! 

僕が初めてプログラムに携わったのは高校時代、もう15年以上前になる。(年をとるのは早いなぁ…)その時はBASICとアセンブラを使ってゲームを作って遊んでいた。プログラムの流れはとっても原始的で、今見直してみたら多分たくさん無駄があると思う。
それからしばらくしてインターネットが流行りだしたころ、自分でホームページが作りたくなって、そこらに転がっているできあいのPerlスクリプトを改造し始めた。そのまま使っても良かったのだが、機能は十分でもデザインが気にくわなかったり、自分のサイトに合わなかったりするのだ。その「デザインを改造する」というのが厄介で、プログラム中にHTMLがポツリポツリとあるものだから、全体を想像しながらHTML箇所を見つけては修正するといった面倒くさいことをしていた。
ある時、プログラムはプログラム、デザインはスキンを読み込んで書き換えるというスクリプトを発見し、衝撃を受けた覚えがある。「そうだよ。こうすればデザインも自由にできる!」その辺の個人が作ったできあいのスクリプトはほとんどそうなっていなかったから、自分で1からプログラムを作れるようになりたいと思うようになった。
その後は勉強してPerl、PHPを扱えるようになり、1からもスクリプトが作れるようになった。1から作る時は必ずデザインを自由に修正できるようなスクリプト作りを心がけている。スクリプトの機能ももちろんだが、販促にはデザインも必要不可欠だからね。

サイズが大きすぎるため、このページは表示できません。(T3040401) 

以前、無効なデータを受信しました。という記事を書いた時に、ヘッダーの Location を絶対パスにし、exit 文を削除するとエラーがなくなるという話をしたが、このままだと Vodafone(ボーダフォン)で「サイズが大きすぎるため、このページは表示できません。(T3040401)」というエラーが出てしまうことがわかった。
ページサイズは1kBでもエラーが出たので、ヘッダーかなと思ったが、ヘッダーも必要最小限しか吐き出していない。Location の先のURLを直接入力した場合に正常に表示されたので原因が分かった。exit 文を外したからだ。

ゆえに、ドコモでもボーダフォンでもエラーが出ないようにするには以下のようにする。

header( "Location: http://www.domain/hoge/" );
// ドコモ以外はexit
if( !ereg( 'DoCoMo', $_SERVER["HTTP_USER_AGENT"] ) ) exit;


AdWords(アドワーズ広告)〜広告文の作り方 


広告文を作るにあたって


AdWords(アドワーズ広告)〜掲載順位の秘密でも述べたが、掲載順位を上げる要素の一つに「広告文の関連性」がある。狙うキーワードに合わせて広告文を考えよう。
また「クリック率」も順位に大きく影響するので、人の心を打つ広告文を考えよう。コピーひとつでクリック率は大きく変わるぞ。ここで注意することは、あまり広告色を出さず客観的に書くこと。何か矛盾しているようだが、Googleのアドワーズはけっこう細かい制限が多い。その制限を考慮しながら作る必要がある。

●Googleでの広告文に関する注意事項
  • 見出しは全角12文字以内(半角で24文字)、本文は1行につき全角17文字、2行で32文字以内。
  • 見出しと本文に関連性があること。
  • 雨垂れ(!)と耳垂れ(?)はそれぞれ1回ずつしか使えない。
  • 句読点は使えるが、記号は使えない。
  • 半角カナは使えない。
  • 英数字は半角を使うこと。
  • 大文字だけのアルファベットは使えない。(固有名詞ならOK)また、カタカナで表現できるのにわざとアルファベットを使うのはダメ。
  • 同じ言葉を意味もなく連発するのはダメ。
  • 意味のないスペースはダメ。
  • 「ここをクリック」「ようこそ」などの文はダメ。
  • 「業界ナンバー1」などの文は、リンク先のページでその証明をしなければならない。
  • 「無料」「新発売」などもリンク先ページで実証されていること。
  • 「裏技」「効く」などはNG。
  • その他、人に不快を与える表現、適切でない言葉、誤字脱字はNG。

    ●Googleでのリンク先に関する注意事項
  • リンク先が存在すること。
  • ショッピングサイトは「訪問販売法に基づく表示」があること。
  • ポップアップなど別ウィンドウが開くページはNG。

    この他にも細かい制限があるが、掲載差し止めを恐れているといい広告ができないので、まずは思いきって広告を作ってみよう。NGが出たら、再考すればいい。

    ●Google以外で表示される時のことを考慮する
    Googleの右側では広告文の本文は2行に表示されるが、Google上部や他のポータルサイトでの表示は1行で表示される。1行になっても意味の通る本文にすること。
    (例)青:1行目緑:2行目
    ×ノベルティ・景品の総合カタログメーカー直結で圧倒的低価格を実現
    ノベルティ・景品の総合カタログ。メーカー直結で圧倒的低価格を実現

  • AdWords(アドワーズ広告)〜掲載順位の秘密 


    掲載順位の仕組み


    AdWords(アドワーズ広告)での広告の掲載順位は単純にオークション方式というわけではない。たとえ広告といえど「検索エンジン」としての品質を保っている。検索されたキーワードによりマッチした広告が上位に表示されるように工夫されている。
    ちょっと前までは掲載順位の計算は

    掲載順位 = 上限CPC(クリック単価)× CTR(クリック率)

    となっていた。極端に言うと、面白かったり、目を引く広告文ならクリック率が高まり、関係のないキーワードでも上位表示も狙えたのだ。(実際はそう上手くいかないですけど)
    しかし、今年の夏くらいにその基準が変わった。

    掲載順位 = 上限CPC(クリック単価)× 品質スコア

    品質スコア = CTR(クリック率)+ 広告文の関連性 + そのキーワードでの過去の掲載結果 + その他関連性

    見て分かる通り、検索されたキーワードとその広告文の関連性が重要視されるようになったのだ。酒屋さんが「酒屋」では上位表示を狙うのは簡単だけど、「玩具屋」で上位表示を狙うにはお金を積まなきゃ狙えないわけだ。
    こうして見ると難しそうだが、欲張らずにキーワードを絞ってクリック率を高めていけば、単価が安くても上位を狙えるということである。



    順位はどの位を狙えばいいか


    資金に余裕のある企業なら当然1位を狙うべきだろう。上位に表示されればクリック率も高くなるし、上手くすれば上部表示(Googleの右側じゃなくて上部に表示される)になる。品質を高め、かつ単価も高く設定すれば、必ず上位表示が狙える。
    資金に余裕のない商店などは単価で競争しても勝てないだろうから、キーワードの的を絞って「上位表示」を狙うか、単価は安めに設定して「常時表示」を狙うか、予算やコストを考えて決めよう。
    ただ、常時表示と言っても、3位以上はキープしたいものだ。なぜかと言うと、Google上では5位以下も表示されるが、Google AdSenseのパートナーサイトには4位まで、中には3位までしか表示されないところもあるからである。


    AdWords(アドワーズ広告)〜はじめの一歩 


    AdWords(アドワーズ広告)とは


    AdWords(アドワーズ広告)とはGoogleが運営しているリスティング広告で、Googleで検索した時に上部や右側に出てくるリンク郡のことです。Googleだけじゃなく、GooやInfoseek、Livedoor、nifty、Excite、BIGLOBEなど多数のポータルサイトにも掲載され、さらにGoogle AdSenseに登録した数多くのパートナーサイトにも掲載されます。つまり、リスティング+アフィリエイトのようなものです。
    日本での検索はYahoo!に劣りますが、世界ではトップシェアを誇り、アドワーズは多数のポータルサイトと多数のパートナーサイトというネットワークがあるため、Yahoo!が運営するリスティング広告であるオーバーチュアにひけをとりません。しかも、オーバーチュアはクリック単価50円〜に対し、アドワーズは最低1円からスタートできます。(つい最近までは7円からでしたが、変更されました)
    インターネットを利用するほとんどのユーザーは検索エンジンを利用して情報を探しますから、外せない広告の一つと言えるでしょう。



    リスティング広告とは


    アドワーズ広告に限らずリスティング広告は、ユーザーが検索エンジンで検索した際に、あたかも検索結果であるかのように広告が表示されます。ここで表示される広告は検索されたキーワードに関連のある内容であれば、クリックされる確率は高くなります。広告主はリスティング広告に出稿する際は、クリックされる確率がより高いキーワードに掲載されるように設定すれば、費用対効果をより高めることが可能になるのです。
    アドワーズ広告は、その仕組みが非常によくできており、とても一言では表せないような複雑な仕組みになっています。とっても奥が深いです。だからと言って、やる前から諦めないで下さい。やり方によっては大企業に負けないくらいの集客が得られますよ。



    広告を出す前に


    広告を出す前に、自分のホームページがちゃんとできているか確認してください。訴えたいことが伝わるか、ショッピングサイトなら購買したくなる仕組みができているか、そこで購入につながらなくてもユーザーを囲い込む仕組みができているか…。せっかく訪問してもらっても、ホームページが不完全だと二度と来てもらえない可能性もあるのです。

    SEO(検索エンジン対策)〜やること一覧 

    まだSEOという言葉がないころは、ホームページ上に見えないようにキーワードを羅列したり、内容とは関係ないキーワードを埋め込んだりしていたサイトもあった。(主にエロサイトとか)それで上位表示が狙えたからだ。だけど、今はそんなことをしたら上位表示どころか、永久に検索エンジンにヒットしなくなる。Yahoo!もGoogleも進化しているのだ。

    ちょっと前(去年くらい)まではYahoo!の検索結果はGoogleのものだった。だから、SEOはGoogle対策さえしていれば良かった。だけど、Yahoo!が独自の検索エンジンを作り、しかも検索結果が、前はディレクトリが先に表示されていたのが、純粋な検索結果が先に表示されるようになったので、そうはいかなくなった。世界ではGoogleのシェアは大きいけど、日本ではYahoo!で検索する人が多いからね。

    SEOでやることは、主にこんな感じ。

  • 狙うキーワードを決める。
  • タイトルや本文中に、意識的にそのキーワードを使う。(例えば、「その」とかは使わずにキーワードを使う)
  • そのキーワードはなるべく強調文字とか見出しとかに使用する。
  • タイトルや見出しの中で、そのキーワードはなるべく最初の方に出す。
  • タイトルやメタタグ、見出し、本文などは、客観的に読みたくなるようなものにする。
  • タグを正しく使用する。
  • フレームは使わない。
  • ページ同士のリンクをなるべく多くする。
  • リンクの文字に「ココ」とかは使わず、ちゃんとページのタイトルを使う。
  • キーワードを羅列したりしないこと!(だいたい全体の5〜10%くらいでいいはず)

    ここまではホームページを制作する時点でできること。
    ホームページができたら、次は…

  • ページのタイトル、ページの紹介文を作る。
  • 主要検索エンジンに登録する。
  • 自分のサイトと関連の深いサイトにリンクを貼ってもらう。(リンク集に登録したり、相互リンクをお願いしたりする。)
  • 検索エンジンで気になるキーワードを検索し、上位に表示されるサイトにリンクを貼ってもらう。

    ここで、リンクを貼ってもらう時はtitleタグと同じ文でリンクを貼ってもらう(狙いのキーワードを含めてもらう)と効果が高いので、登録する前にちゃんとタイトルや紹介文を決めておこう。(後から修正するのは、他人のサイトなのですごく大変)

    Googleはページランクという考えがあり、そのページがリンクされていればされている程、そのサイトは有益なサイトとみなされる。ただし、いくらリンクをたくさん貼っても、ページランクの低いサイトや関係の薄いサイトからのリンクばかりだと、このページランクはあんまり上がらない。本当に有益なサイトなら、自分からリンクを貼るようお願いしなくても、誰かが勝手に貼ってくれるはずでしょう?その勝手に貼られたリンクってのは、関係のない人が貼るはずはないでしょう?Googleのアルゴリズムはこれらを自動で計算しているからすごいよね。
  • SEO(検索エンジン対策)〜狙うキーワードは? 

    SEO(Search Engine Optimization)とは検索エンジンで上位に表示させるための技術だ。インターネットを楽しむほとんどの人はYahoo!やGoogleを利用するから、上位に表示させれば効果も見込める。しかも、ほとんどタダでできるからホームページを作る時はぜひやるべきだ。

    ホームページを作る時、デザインにあまり凝りすぎると、このSEOが全然ダメってことになってしまう。Googleで検索したら、自分のホームページよりデザインもへったくれもないページが上位にきていたら悔しいでしょう?SEOはテキストページが有利だけど、デザインもしつつ上位に表示できればベストだよね。もうすでにホームページができている人はできることが限られてしまうでしょうが、できる所から施して、少しずつ直していけばいいでしょう。

    SEOでまずやることは、どのキーワードで上位を狙うかだ。あんまり欲張り過ぎると、結局どのキーワードでも上位を狙えないってことにもなるので注意しよう。検索エンジンではどんなキーワードがよく検索されているのか、自分のホームページに訪問しアクションを起こしてくれる人はどんなキーワードで検索してくるか、調査してみよう。

    ↓検索エンジンでどんなキーワードが検索されているかは、ここで調べるのが便利↓
    キーワードアドバイスツールプラス

    自分のホームページにどんなキーワードで訪問してくるかを調べるには、アクセス解析を設置しよう。自分で設置してもいいし、ASPとかを使ってもいい。無料で使える外部アクセス解析サービスもある。

    strtotime 

    strtotime は日付のフォーマットをどのくらい認識してくれるのか、気になったので以下のスクリプトを組んで調べてみた。



    $fmt = array(
       "2005-10-04",
       "2005/09/28",
       "2005.10.05",
       "2005 09 20",
       "20050920",
       "2005-1-4",
       "2005/3/3",
       "2005.1.5",
       "2005 5 5",
       "200555",
       "05-04-01",
       "05/09/19",
       "05.04.04",
       "05 07 07",
       "5-6-7",
       "5/1/1",
       "5.8.7",
       "5 2 3",
       "523",
    );

    foreach ( $fmt as $f ){
       $stp = strtotime( $f );
       $day = date("Y/m/d H:i:s", $stp );
       echo $f . " => " . $stp . " => " . $day . "
    \n";
    }

    ?>

    結果は以下の通り

    ○2005-10-04 => 1128351600 => 2005/10/04 00:00:00
    ○2005/09/28 => 1127833200 => 2005/09/28 00:00:00

    ×2005.10.05 => -1 => 1970/01/01 08:59:59
    ×2005 09 20 => -1 => 1970/01/01 08:59:59

    ○20050920 => 1127142000 => 2005/09/20 00:00:00
    ○2005-1-4 => 1104764400 => 2005/01/04 00:00:00
    ○2005/3/3 => 1109775600 => 2005/03/03 00:00:00

    ×2005.1.5 => -1 => 1970/01/01 08:59:59
    ×2005 5 5 => -1 => 1970/01/01 08:59:59

    △200555 => 1592924400 => 2020/06/24 00:00:00
    ※2020年5月55日⇒2020年6月24日と解釈

    ○05-04-01 => 1112281200 => 2005/04/01 00:00:00
    ○05/09/19 => 1557327600 => 2019/05/09 00:00:00

    ×05.04.04 => -1 => 1970/01/01 08:59:59
    ×05 07 07 => -1 => 1970/01/01 08:59:59

    ○5-6-7 => 1118070000 => 2005/06/07 00:00:00
    △5/1/1 => 988642800 => 2001/05/01 00:00:00
    ※2001年5月1日と解釈

    ×5.8.7 => -1 => 1970/01/01 08:59:59
    ×5 2 3 => -1 => 1970/01/01 08:59:59

    △523 => 1133554980 => 2005/12/03 05:23:00
    ※本日の5時23分と解釈

    無効なデータを受信しました。 

    Docomo(ドコモ)の携帯、主に505シリーズ506シリーズで「無効なデータを受信しました。」というエラーが表示されることがある。

    主な原因は、ヘッダーに Location を送る時に相対パスを書くとエラーが出る。

    header("Location: ../hoge/");
    exit;

    これを絶対パスに修正すると505シリーズはエラーが出なくなるが、506シリーズは改善しない。
    原因は良く分からないが exit; 文をカットすると正常に動作するみたいだ。

    header("Location: http://www.domain/hoge/");