aka) Author: Christian Davén Version: 2.0 Author URI: http://www.daven.se/usefulstuff/ */ # adds an options page to the options menu function SUP_add_options_page() { if(function_exists("add_options_page")) add_options_page("Smart Update Pinger", "Smart Update Pinger", 5, basename(__FILE__), "SUP_show_options_page"); } # shows the options page function SUP_show_options_page() { $ping = get_option("SUP_ping"); $uris = get_option("ping_sites"); $pingservicesnow = "今すぐ ping を送信!"; if(isset($_POST["ping"]) && $_POST["ping"] == $pingservicesnow) { SUP_log("手動で ping を送信中 ..."); SUP_ping_services(); } elseif(isset($_POST["submit"])) { $uris = $_POST["uris"]; $ping = 0; if($_POST["ping"] == 1) $ping = 1; update_option("SUP_ping", $ping); update_option("ping_sites", $uris); echo '

設定を保存しました.

'; } $checked = ''; if($ping == 1) $checked = 'checked="checked"'; echo '

ping 送信先のサーバ

以下に登録されている ping サーバへは記事を投稿する際,自動的に ping 送信や更新通知がなされます。WordPress が通常行うような,以前書いた記事の編集時ではありません

注意: このリストは オリジナルのアップデートサービスリストと同期します。.

複数サーバを登録する際は改行で URI を分けて下さい

Ping 送信ログ

このプラグインのログです(下に行くほど新しいログです)

'.SUP_get_last_log_entries(20).'

'; } # telling WordPress to ping if the post is new, but not if it's just been edited function SUP_ping_if_new($id) { global $wpdb, $post_title; if(get_option('SUP_ping') == 1 and get_option('ping_sites') != "") { # fetches data directly from database; the function "get_post" is cached, # and using it here will get the post as is was before the last save $row = mysql_fetch_array(mysql_query( "SELECT post_date,post_modified FROM $wpdb->posts WHERE id=$id")); # if time when created equals time when modified it is a new post, # otherwise the author has edited/modified it if($row["post_date"] == $row["post_modified"]) { if($post_title) SUP_log("Pinging services (new post: “".$post_title."”) ..."); else SUP_log("Pinging services (新規の記事の投稿) ..."); SUP_ping_services(); # Try commenting the line above, and uncommenting this line below # if pinging seems to be out of order. Please notify the author if it helps! # generic_ping(); } else { if($post_title) SUP_log("NOT pinging services (“".$post_title."” の設定が変更されました)"); else SUP_log("NOT pinging services (記事が編集されました)"); } } else SUP_log("NOT pinging services (管理者が ping 送信を無効にしています)"); } # More or less a copy of WP's "generic_ping" from functions.php, # but uses another function to send the actual XML-RPC messages. function SUP_ping_services() { $services = get_settings('ping_sites'); $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines $services = trim($services); if ( '' != $services ) { $services = explode("\n", $services); foreach ($services as $service) SUP_send_xmlrpc($service); } } # A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php). # This one uses correct extendedPing format (WP does not), and logs response from service. function SUP_send_xmlrpc($server = '', $path = '') { global $wp_version; include_once (ABSPATH . WPINC . '/class-IXR.php'); // using a timeout of 3 seconds should be enough to cover slow servers $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); $client->timeout = 3; $client->useragent .= ' -- WordPress/'.$wp_version; // when set to true, this outputs debug messages by itself $client->debug = false; $home = trailingslashit( get_option('home') ); # the extendedPing format should be "blog name", "blog url", "check url" (whatever that is), and "feed url", # but it would seem as if the standard has been mixed up. it's therefore best to repeat the feed url. if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url'))) { SUP_log("- ".$server." への ping 送信が成功しました (拡張フォーマット)"); } else { # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_settings('blogname'), $home)) { SUP_log("- ".$server." への ping 送信が成功しました"); } else { SUP_log("- ".$server." への ping 送信が失敗しました。 以下のエラーメッセージが返されました: “".$client->error->message."”"); } } } $post_title = ""; # Receives the title of the post from a filter below function SUP_post_title($title) { global $post_title; $post_title = $title; return $title; } # ----- # Log stuff $logfile = ABSPATH."wp-content/smart-update-pinger.log"; # for debugging function SUP_log($line) { global $logfile; $fh = @fopen($logfile, "a"); @fwrite($fh, strftime("%D %T")."\t$line\n"); @fclose($fh); } function SUP_get_last_log_entries($num) { global $logfile; $lines = @file($logfile); if($lines === false) return "Error reading log file (".$logfile."). This could mean that the wp-content directory is write-protected and no log data can be saved, that you have manually removed the log file, or that you have recently upgraded the plugin."; else { $lines = array_slice($lines, count($lines) - $num); $msg = ""; foreach($lines as $line) $msg .= trim($line)."
"; return $msg; } } # ----- # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # adds some hooks # shows the options in the administration panel add_action("admin_menu", "SUP_add_options_page"); # calls SUP_ping whenever a post is published add_action("publish_post", "SUP_ping_if_new"); # calls SUP_ping_draft when changing the status from private/draft to published # add_action("private_to_published', 'SUP_ping_draft'); # removes the "WordPress official" pinging hook remove_action("publish_post", "generic_ping"); # activates pinging if setting doesn't exist in database yet # (before the user has changed the settings the first time) if(get_option("SUP_ping") === false) { update_option("SUP_ping", 1); } ?> KSF | 医薬マーケティング研修、コンサル – マーケティングインサイツのブログ

‘KSF’ タグのついている投稿

医薬品ブランドプランの作成-ジェネリック化のワナから逃れるために

imasia_11021908_M
こんにちは。”クスリを育てるヒトを育てる”ことをミッションに活動しているマーケティング
インサイツ代表の尾上昌毅です。

教師が書く通知表のコメントが、私の世代(大昔)の「担任の先生による手書き」から
「ワープロ打ち」になって久しいようです。
それに対して「どうも温かみが感じられない」という意見が、一部の(旧世代の?)親から
寄せられているようですが、それはある意味当然かもしれません。

しかし重要なのは手書きであるかどうか自体ではなくて、書かれた内容ではないのか、とい
う見解を元小学校教師が新聞の読者投稿欄に載せていました。


「通知表の温かみは内容次第」というタイトルのついた投稿によりますと、担任のコメント欄
を読んだ親が「ああ、先生は我が子のこんなところにまで気づいていてくれているんだな」と
思えること、それが本当の「温かみ」なのだと言います。
 

手書きかワープロ文字かは関係が(あまり)ない。

そして、良い通知表の条件とは、「読んで個人を特定できること」だというのです。

つまり、「教師はクラス全員分の通知表を一度ランダムに並べ替え、名前を伏せて読んでみる
と良い。一枚一枚を見て、『あ、これは○○さんの通知表だ』とわかるなら、それは個々の子を
しっかり見届けた、『温かみ』のある通知表になっている」と判断できるわけです。


一方、「意欲的」「がんばり」「やる気」「まじめ」「丁寧に」「協力して」などというあり
ふれた言葉「だけ」を書き連ねて、結局誰の通知表なのか区別できない通知表は、たとえそれが
「手書き」だろうが何だろうが、そこには「温かみ」はない、と言い切っています。


確かにポイントを突いた指摘です。

この投稿を読んだとき、医薬品のブランドプランも全く同じだな、と感じてしまいました。

いままでいろいろな立場でいくつもの医薬品のブランドプランを見る機会に恵まれましたが、
かなりの程度で、ありふれた用語の羅列になっている、製品の区別がつかなくなるプランを
見るという苦い経験をしています。

確かにどれもいいことが書かれているのですが、製品名を伏せて並べ替えたときに区別が
つかないプランや、製品名を入れ替えても特に差しさわりの無い、「ジェネリックなプラン」
が何とも多いのが現状です。

ブランドプランも最初の環境分析あたりまでは製品に関係した「固有の」分析や状況説明が
あるのですが、戦略から具体的施策になってくると、急に一般化して、借り物的で他の製品
と同じことが並んできてしまうのです。

ここが通知表のコメントと似ている現象だなあと思った次第です。

皆さんは同じような経験がないでしょうか?

こうしたブランドプランのジェネリック化現象はどうして生ずるのでしょうか?

 

考え得る要因は以下の3つです。

ひとつは製品固有の成功因子(KSF:キー・サクセス・ファクター)が見極められていないこと。
または、KSFを中心に施策を展開しようという意識が不足していること、でしょう。

KSFが分かっているかどうかを確かめる質問は「結局何をしないと達成できないと思ってるの?」
「絶対にはずせないこの製品固有のポイントって究極のところ何なの?」という問いでしょう。
これを自問してみて20秒以内に答えられないときは、KSF不全を少し疑ってみてもよさそうです。

もう一つの要因は、顧客の絞り込みです。セグメンテーションとして細分化し、ターゲットに選んだ
顧客の代表(典型)をいきいきとイメージできているかです。

この像があると、そこに向けて何をするのかは「一般化」されず、彼(彼女)に合った固有のもの
になるはずです。

顧客と言うのは、医師や医療関係者で描く場合と、患者で描く場合がありますが、こうした顧客を
ペルソナ化して描くことは、まだ医療用医薬品では一般的ではありません。

最後の要因は、一般化・抽象化のしすぎです。

「顧客志向」は誤っていませんが、あまりにも正しい普遍的な概念で有るが故に、そこから何を
すべきかが見えて来にくい弱点を持ちます。

セグメンテーション+ターゲティングで顧客を絞り込み、「その顧客とはどんな人たちの事を指し
ますか?」「その人たちに共通しそうな治療ニーズって何でしょう?」「そのうち、どのニーズに
応えるつもりですか?」「実際、それはどうするのでしょう?」といった詰めの問いを出してみて、
そこに答えて行くことで、製品らしさが出て来るのは間違いないでしょう。

「自分の顧客の固有のニーズ・状況を考えて、ジェネリックに逃げない」

…これは、プロマネとしての「覚悟」であり「思い」の発現だと思います。

愛情があるからこそ、ジェネリックから脱却する勇気が生まれてくるはずです。

新聞の投稿記事は、それを再認識させてくれるものでした。

今日は『ブランドプランのジェネリック化から逃れるために』というブログでした。

最後までお読みいただき、ありがとうございます。

代表

尾上昌毅

尾上昌毅 (Masaki Onoue)

新任プロダクトマネージャーの方には医薬マーケティングの始めの一歩を、経験のあるプロダクトマネージャーの方には医薬品ブランドプラン作成の疑問点を集中的に練習するコースをご提供します。

会社情報

mi-logo-base

株式会社
マーケティングインサイツ

〒104-0061
東京都中央区銀座 6-6-1
銀座風月堂ビル5F

TEL:03-6215-8245
月曜日から金曜日の9:00~17:30
この時間外はメッセージを承ります

FAX:03-6215-8700