こんにちは! ASUE株式会社広報のN村です。
Web広告運用やWebマーケティングに関連した業務をしている方は、一度はどこかで「正規表現」というものを聞いたことがあるのではないでしょうか?
実際に正規表現の表記を一見すると暗号のような不可解な文字列に見えるかもしれませんが、基本的なことを知っておくと日々の業務にも役立つので、簡単にご紹介したいと思います。
ちなみに、わたしは日常でもGmailから特定の文字列を正規表現を使用して抽出→カレンダーやタスクに自動登録していて、例えばこれでチケットの当選→支払のタスク登録を行なったり、ホテルの予約→予約メールから自動でカレンダーへ予定登録などを行なっています。役立ちますね。
正規表現をわからないときに調べて〜……ってやってるのにすごく時間をとられている気がしたので、この記事を書いて覚えたい(希望)
目次
正規表現とは?
正規表現とは、文字列のパターンを汎用的に書き表す表記法のことです。主に、文字列の検索や置換などを行うときに使用します。
例えば、「1192年、源頼朝は征夷大将軍に任じられた」という一文と、「1603年、徳川家康は征夷大将軍に任じられた」という文それぞれの文章に年号が含まれているかマッチさせたい/抽出したい場合に、「\d{4}年」という正規表現を使用することができます。詳しくはあとで書きますが、この場合「\d」が数字を表し、「{4}」が直前のものを4回繰り返すという意味になり、「4桁の数字+年」という表記がマッチします。
こんなふうに、複数条件のフィルター等をかけたり複数回検索したり……ということをせず、「あてはまるものすべて」をマッチさせることができる表記が正規表現になります。
正規表現の基本
メタ文字とエスケープ
メタ文字とは、正規表現上特殊な意味を持つ文字(記号)のことです。例えば、「.」は改行を除くすべての文字を表し、「*」「+」「?」は直前の文字を繰り返すときに使用します。
しかし、このメタ文字が検索したい文字列そのものに含まれる場合もあると思います。その場合は、「今これはメタ文字ではなくてその文字そのものを表したいだけですよー!」という意味を込めて「\」を前につけます。例えば、「asue.jp」の正規表現は「asue \.jp」となります。これをエスケープといいます。
メタ文字の一覧はこちらになります。
正規表現 | エスケープする場合 | メタ文字の意味 |
---|---|---|
. | \. | 改行(\n, \r, \r\n)以外のすべての文字 |
^ | \^ | 行頭の文字 |
$ | \$ | 行末の文字 |
| | \| | 「|」の前後の文字どちらか、ORの意味 |
\ | \\ | 直後のメタ文字をエスケープする |
[] | \[\] | 囲った内容を文字クラスと呼ぶ この中のいずれかの1文字にマッチする |
() | \(\) | 囲った内容をサブパターンと呼ぶ 「|」や「*」等のメタ文字の範囲を指定するなど、正規表現をグルーピングできる |
{} | \{\} | 囲った内容を量指定子と呼ぶ {n}で直前の内容をn回繰り返すことを示す |
+ | \+ | 直前の文字を1回以上繰り返す |
* | \* | 直前の文字を0回以上繰り返す |
? | \? | 0回または1回繰り返す |
メタ文字「.」
「.(ドット)」は改行(\n, \r, \r\n)以外のすべての文字を表すことができます。
たとえば、「徳川家.」という正規表現では、「徳川家康」「徳川家光」「徳川家定」など名字が「徳川」で名前の1文字目が「家」であれば2文字目がなんの字であってもマッチします。一方、「徳川秀忠」「徳川綱吉」「徳川吉宗」など「家」がつかない名前にはマッチしません。
正規表現 | マッチの有無 |
---|---|
北条義* |
・マッチするパターン ・マッチしないパターン |
\<h*\> |
・マッチするパターン ・マッチしないパターン |
メタ文字「^」と「$」
「^」と「$」はそれぞれ行頭と行末のみを示すメタ文字です。これらの正規表現は直接文字を示しマッチするものではなく、文字の位置を示すものなので、位置指定子やアンカーと呼ばれます。
例えば、
男もすなる日記といふものを女もしてみんとてするなり。それの年の、しはすの、二十日あまり一日の日の、戌のときに門出す。そのよしいささかにものに書きつく。
紀貫之著「土佐日記」より
昔、男初冠して、平城の京春日の里に、しるよしして、狩にいにけり。その里に、いとなまめいたる女はらから住みけり。この男かいまみてけり。
著者不明「伊勢物語」より
これら2つの文章を、正規表現「^男」で検索すると、「男もすなる」の「男」はマッチしますが、「昔、男初冠して、」と「この男かいまみてけり。」の「男」はマッチしません。
また、上記の伊勢物語から「けり。$」で検索した場合は、「この男かいまみてけり。」の「けり。」のみがマッチします。ただ、以下のような場合には他の「けり。」でもマッチすると考えられます。
昔、男初冠して、平城の京春日の里に、しるよしして、狩にいにけり。
その里に、いとなまめいたる女はらから住みけり。
この男かいまみてけり。
著者不明「伊勢物語」より
正規表現 | 対象文字列 | マッチの有無 |
---|---|---|
^自分 | 恥の多い生涯を送って来ました。 自分には、人間の生活というものが、見当つかないのです。自分は東北の田舎に生れましたので、汽車をはじめて見たのは、よほど大きくなってからでした。 |
・マッチするパターン ・マッチしないパターン |
ありがとう$ |
どうもありがとう ありがとうとお伝えください |
・マッチするパターン ・マッチしないパターン |
メタ文字「|」
メタ文字の「|(バーティカルバー)」は、「いずれか/OR」の意味を持っていて、前後に並べたパターンのいずれかにマッチするかどうかを確認するのに使用できます。
例えば、「(Google|Yahoo!)(検索|ディスプレイ)広告」という正規表現の場合、「Google」または「Yahoo!」+「検索」または「ディスプレイ」+広告という文字列にマッチするため、「Google検索広告」「Googleディスプレイ広告」「Yahoo!検索広告」「Yahoo!ディスプレイ広告」のいずれかにマッチします。
正規表現 | マッチの有無 |
---|---|
赤|青 |
・マッチするパターン ・マッチしないパターン |
https://(asue\.jp|recruit-asue\.info)/(.*)/ |
・マッチするパターン ・マッチしないパターン |
メタ文字「\」
メタ文字の「\(バックスラッシュ)」は、マッチさせたい文字列にメタ文字として利用するような記号が含まれている場合に、メタ文字と区別するためにつけるものです。エスケープと呼ばれます。
正規表現 | マッチの有無 |
---|---|
https://asue.jp |
・マッチするパターン ・マッチしないパターン |
https://asue\.jp |
・マッチするパターン ・マッチしないパターン |
メタ文字「[]」=文字クラス
メタ文字の「[](半角の角括弧/ブラケット)」で囲まれた部分を文字クラスと呼び、これは囲まれた文字列のいずれか一文字を示す正規表現です。
例えば、「[日月火水木金土]曜日」の場合は、「日曜日」〜「土曜日」という文字列でマッチします。また、「[晴曇雨雪雷]」の場合は「晴」「曇」「雨」「雪」「雷」にマッチします。
文字クラスを利用して、数字やアルファベットを示したい場合は[0123456789]や[ABCDEFGHIJKLMNOPQRSTUVWXYZ]のように表記することが可能です。ですが、これを書くのは毎回面倒ですよね。数字やアルファベットをまとめて表記するなど、文字クラスの中でのみの意味を持つ記号や表記に注意が必要な記号がいくつかあります。
正規表現 | エスケープする場合 | 文字クラス内での用途 |
---|---|---|
- | \- |
同種の文字をまとめることができる記号。 └[0-9]:半角数字いずれか一文字を指す 「-」を検索したい文字に含める場合: |
^ |
ここでは「行頭」の意味はない [^0-9]:半角数字以外の一文字 |
|
] | \] |
文字クラスと同じ角括弧の「]」を指定したい場合は、エスケープが必要 「[」はそのままでも問題ない |
\ | \\ |
文字クラスの中の候補の文字として「\」を入れる場合、エスケープが必要 [\\0-9]:\または半角数字のいずれか一文字 |
その他のメタ文字 | 文字クラス内ではメタ文字の意味を示さないため、エスケープも不要 |
文字クラスを利用すると、数字を[0-9]、英字を[A-Za-z]で示せるので、URLやメールアドレスなどを指定するのに役立ちそうですね。
正規表現 | マッチの有無 |
---|---|
https://asue\.jp/[0-9]/[a-z]/ |
・マッチするパターン ・マッチしないパターン |
[0-9]\.(.*) 半角数字 + 「.」 + 任意の文字列 |
・マッチするパターン ・マッチしないパターン |
メタ文字「()」=サブパターン
正規表現において「()」で囲った中身はサブパターンと呼ばれ、これを使用すると正規表現の中身をグループ化することができます。
例えば、「become|came」という正規表現では、「become」または「came」がマッチしますが、「be(come|came)」という正規表現にすれば「become」または「became」の文字列にマッチします。
数学の四則演算での「()」のような扱いですね。
メタ文字「{}」「+」「*」「?」=量指定子
メタ文字の中での最後は「{}」「+」「*」「?」の4つで、これらは量指定子と呼ばれます。これらは直前の文字やパターンの繰り返しを示します。
※この内容は次項にも関わってきます。
正規表現 | メタ文字の意味 | |
---|---|---|
{} | {n} | 直前の文字やパターンをn回繰り返す |
{n,} | 直前の文字やパターンをn回以上繰り返す | |
{n,m} | 直前の文字やパターンをn〜m回繰り返す | |
+ | 直前の文字やパターンを1回以上繰り返す | |
* | 直前の文字やパターンを0回以上繰り返す | |
? | 直前の文字やパターンを0回または1回繰り返す |
例えば、「[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日」と指定すれば、「1999年12月1日」のような日付がマッチします。ただし、この正規表現では「9999年99月99日」のようなありえない日付もマッチします。
「+」では1回以上の繰り返しなので、「Gre+n」という正規表現では「Gren」「Green」「Greeen」「Greeeeeen」などがマッチします。「*」では0回以上の繰り返しのため、「Gre*n」という正規表現では「Gren」や「Greeeeeen」などに加えて、「Grn」でもマッチします。最後に「?」は0回または1回の繰り返しとなり、「Gre?n」では「Grn」と「Gren」がマッチします。
正規表現 | マッチの有無 |
---|---|
We+kend |
・マッチするパターン ・マッチしないパターン |
かた*き |
・マッチするパターン ・マッチしないパターン |
新聞紙?と本 |
・マッチするパターン ・マッチしないパターン |
すも{6,8}のうち |
・マッチするパターン ・マッチしないパターン |
Tips:最短マッチングと最長マッチング
前項でご紹介した量指定子「*」や「+」を利用してマッチさせると、デフォルトでは最も大きい範囲にマッチします。例えば、
例)正規表現「すも*」 対象文字列「すもももももももものうち」
マッチする文字列:「すももももももも」
正規表現「すも*」でマッチする範囲は「す」「すも」「すもも」……「すもももももももも」と9つのパターンが考えられますが、このうち最も長い「すもももももももも」がマッチすることになります。
これを最長一致や最長マッチングといいます。
ですが、対象文字列から最短でマッチする範囲を指定したい場合もあると思います。その際には「?」を使用します。「?」は前項では「前の文字やパターンを0回または1回繰り返す」メタ文字だとご紹介しましたが、量指定子「+」「*」「?」「{n,m}」と組み合わせることで、対象文字列の中から最短のものを一致させるという意味を持ちます。この、最短で一致することを最短マッチングや最短一致と呼びます。
正規表現 | 意味と用例 |
---|---|
{n,m}? |
n回以上m回以下のパターンの繰り返しで最短のものに一致する ・正規表現:すも{2,8} 対象文字列:すもももももももものうち ・正規表現:すも{2,8}? 対象文字列:すもももももももものうち |
+? |
直前の文字やパターンを1回以上繰り返すうち、最短のものに一致する ・正規表現:すも+ 対象文字列:すもももももももものうち ・正規表現:すも+? 対象文字列:すもももももももものうち |
*? |
直前の文字やパターンを0回以上繰り返すうち、最短のものに一致する ・正規表現:すも* 対象文字列:すもももももももものうち ・正規表現:すも*? 対象文字列:すもももももももものうち |
?? |
直前の文字やパターンを0回または1回繰り返すうち、最短のものに一致する ・正規表現:すも? 対象文字列:すもももももももものうち ・正規表現:すも?? 対象文字列:すもももももももものうち |
エスケープシーケンス
メタ文字の一つである「\(バックスラッシュ)」は、通常メタ文字をエスケープするために使用します。が、それ以外にも改行やスペースなどの文字や数字やアルファベットなどの包括的な文字型([0-9]などと同義のものも)を表すのに使用できます。これをエスケープシーケンスと呼びます。
正規表現 | 意味 |
---|---|
\n \r \n\r |
改行コード 「\n|\r|\n\r」をまとめて「\R」という表記もあるが、こちらはJavascriptでは使えない |
\s |
空白文字を表す。 \s = \t|\n|\r|\f |
\S | 空白文字以外の全ての文字 |
\d | [0-9]と同義、半角数字を表す |
\D | 数字以外の文字列であり、[^0-9]と同意義。 |
\w |
すべての半角英数字とアンダースコア「_」のうちのいずれか [0-9A-Za-z_]と同義 |
\W |
半角英数字・アンダースコア「_」以外の一文字 [^0-9A-Za-z_]と同義 |
\l |
すべての半角英字のうちの一文字 [a-z]と同義 |
\L |
すべての半角英字以外の一文字 [^a-z]と同義 |
\u |
すべての半角英大文字のうち一文字 [A-Z] |
\U |
すべての半角英大文字以外のいずれか一文字 [^A-Z] |
\b |
単語の先頭か末尾かを判断 |
(調べた感じでは)エスケープシーケンスの対応範囲は言語によってかなり違いそうなので詳細は省きますが、記号や英数字などをまとめて指定できるので便利です。
正規表現 | 対象文字列 | マッチの有無 |
---|---|---|
\d{1,4}(年|/|\.)\d{1,2}(月|/|\.)\d{1,2}日? |
・マッチするパターン ・マッチしないパターン |
|
(\n|\r|\n\r)\d.+? |
1本でもにんじん |
・マッチするパターン ・マッチしないパターン |
\bmake\b | I will buy a makeup after I make me up. |
・マッチするパターン ・マッチしないパターン |
先読み・後読みによる位置指定
ここまででかなりいろいろな正規表現での指定が可能になったと思います。最後に、特定の文字列等の前後にある表現のみをマッチさせたい場合に使える先読み・後読みについてご紹介します。
例えば、以下のようなテキストがあるとします。
<h2>これは見出し2です</h2>
<p>ここは「これは見出し2です」のコンテンツの文章です1</p>
<p>ここは「これは見出し2です」のコンテンツの文章です2</p>
ここから、<h2>〜</h2>をマッチさせたい場合は、正規表現「<h2>.*</h2>」でマッチさせることが可能です。
では、「これは見出し2です」のみをマッチさせたい場合はどうするべきでしょうか。「<h2>の後かつ</h2>の前」という表現をする必要が出てきます。
こんなときに使えるのが、先読み・後読みの正規表現です。
正規表現 | 意味 |
---|---|
XXX(?=YYY) |
肯定先読み 「YYY」という文字列の前にある「XXX」という文字列 |
XXX(?!YYY) |
否定先読み 「YYY」という文字列以外の前にある「XXX」という文字列 |
(?<=WWW)XXX |
肯定後読み 「WWW」という文字列の後にある「XXX」という文字列 |
(?<!WWW)XXX |
否定後読み 「WWW」という文字列以外の後にある「XXX」という文字列 |
例えば、以下のようなメールが複数あったとします。
[メール1]
公演日時:2023年8月27日(日)13:00〜
公演名:ミュージカル「ムーランルージュ!」東京公演
会場:帝国劇場
入金期限:2023年3月31日(金)23:59
[メール2]
公演日時:2023年8月26日(日)17:30〜
公演名:ミュージカル「ファントム」東京公演
会場:東京国際フォーラムホールC
入金期限:2023年4月8日(土)23:59
それぞれのメールからスケジュールを取り出そうと思った場合、日付のパターン「\d{1,4}年\d{1,2}月\d{1,2}日」だけで指定すると入金期限とかぶってしまいます。そのため、後読み・先読みを利用すると以下のようにマッチさせることが可能です。
・公演のスケジュールを取り出す場合
[メール1]
└日時全て:正規表現「(?<=公演日時:)(.*?)(?=\n|\r|\n\r)」→2023年8月27日(日)13:00〜
└日程のみ:正規表現「(?<=公演日時:)(.*?)(?=()」→2023年8月27日
└時間のみ:正規表現「(?<=))(.*?)(?=〜)」→13:00
[メール2]
└日時全て:正規表現「(?<=公演日時:)(.*?)(?=\n|\r|\n\r)」→2023年8月26日(日)17:30〜
└日程のみ:正規表現「(?<=公演日時:)(.*?)(?=()」→2023年8月26日
└時間のみ:正規表現「(?<=))(.*?)(?=〜)」→17:30
・公演内容を取り出す場合
[メール1]
└正規表現「(?<=公演名:)(.*?)(?=\n|\r|\n\r)→ミュージカル「ムーランルージュ!」東京公演
[メール2]
└正規表現「(?<=公演名:)(.*?)(?=\n|\r|\n\r)→ミュージカル「ファントム」東京公演
今すぐ使える利用例
実際に正規表現を使える場面をいくつかご紹介します。
仕事編(1) GTMでのタグ配信先ページの指定
GTMで、タグを発火させるトリガーの設定に正規表現は便利です。
例えば、複数のフォームの送信完了ページがそれぞれ、「https://example.com/aaa/thanks/」「https://example.com/bbb/thanks/」「https://example.com/ccc/thanks/」だとします。それらの送信完了ページでタグの配信をしたい場合、各ページごとに設定することも可能ですが、ページ数によっては量が多く大変ですし管理も面倒になります。
そこで、「Page Path」や「Page URL」を選択して、正規表現でURLを表せば、1つの設定だけで可能です。
例)「https://example.com/xxxxxxx/thanks/」のページビューをトリガーにしたい
変数 | 条件 | |
---|---|---|
Page Path | 正規表現に一致 | /.*/thanks/ |
Page URL | 正規表現に一致 | example\.com/.*/thanks/ |
例)「https://asue.jp/service/xxxxxx/」のページビューをトリガーにしたい(ただし、「/service/」は含めない)
変数 | 条件 | |
---|---|---|
Page Path | 正規表現に一致 | /service/.+ |
Page URL | 正規表現に一致 | asue\.jp/service/.+ |
仕事編(2) Google Analyticsのセグメント等に利用
Google Analyticsでデータを絞り込んで確認したい場合にも正規表現が利用できます。今年7月で現在広く利用されているユニバーサルアナリティクスは終了しますが、GA4でも探索などのセグメントの設定では正規表現の利用が可能です。(現在はフィルタでは使用できないらしい)
ただし、ユニバーサルアナリティクスでは正規表現がデフォルトで部分一致ですが、GA4では正規表現がデフォルトで完全一致となっているようなので、利用の際は要注意です。
例)ユニバーサルアナリティクスで「https://asue.jp/blog/?p=1xxxxまたは2xxxx」の記事がランディングページだったユーザーのみのデータを確認したい
[セグメントを追加] > [ + 新しいセグメント] > [条件]で以下の設定をする
フィルタ | 条件 | |
---|---|---|
ランディングページ | 正規表現に一致 | /blog/\?p=(1|2)[0-9]{4}$ |
URL | マッチの有無 |
---|---|
https://asue.jp/blog/?p=23510 | マッチする |
https://asue.jp/blog/?p=19106 | マッチする |
https://asue.jp/blog/?p=1212 | マッチしない |
日常でも役立つかも?Web広告運用でも使う「正規表現」の基本 (※&以降のパラメーターは除外設定をしていないもの) |
マッチしない |
これを書いてるわたしはこのためにGA4での設定方法を確認しようと試そうとしたけど、いまいちだったので割愛します。わたしは無力。
参考:「Google Analytics ヘルプ — 正規表現(regex)について」
https://support.google.com/analytics/answer/1034324?hl=ja
仕事編(3) ファイルから特定の文言を一括置換
弊社のメルマガにご登録いただいている方にはわかると思いますが、弊社のメルマガではいろんな記事の紹介をしております。
<a href="https://asue.jp/blog/?p=23510">https://asue.jp/blog/?p=23510</a>
こういう感じで記事のリンクを貼り付けるのですが、実際のメルマガ送信時にはメールのhtml中から「https://」から始まるURLがメルマガのシステムでのトラッキング用のURLに自動変更されます。href属性としてのURLはそれでOKですが、リンク文字列のURLが長々としたURLに変更されてしまうのは避けたいため、以下の赤字で示した箇所は削除するようにしています。
<a href="https://asue.jp/blog/?p=23510">https://asue.jp/blog/?p=23510</a>
その際、リンク一つ一つを探して変更するのは手間ですが、これも正規表現で解決可能です。
例)「<a href="https://asue.jp/blog/?p=23510">https://asue.jp/blog/?p=23510</a>」のようなリンク文字列を探して赤字部分だけを一括で削除したい
正規表現 | マッチする文字列 |
---|---|
(?<=\>)https:// | 「>」の後にある「https://」 |
置換先を空欄にして置換ボタンを押せば要らない文字列を削除できます。
今回は弊社のメルマガを例にしましたが、他の場面でもいろいろ使えるので、ぜひお試しください!
仕事と日常編(1) 定型フォーマットのメールからカレンダーに予定を登録
細かく紹介できないので(やってみたけど大変だった)、大まかな流れだけ示します。
Google ドライブから新規のApps Scriptを作成し、サービスからGoogle Calendar API ドキュメントを追加
Gmailからどのメールを検索するか、カレンダー登録に必要な日時や予定のタイトルを文章中のどこから抽出するかなどを設定するファイル
- GASの自動実行の権限付与
- スプレッドシートの設定ファイルの内容を取得する
- 指定したメール一覧の取得
- メール内の必要な情報の取得 ←ここで正規表現を使う
- 取得内容からカレンダーに予定を登録
以下のようなメールがあったとします。
[メール1]
ホテル名:帝国ホテル
チェックイン日:2023年8月25日(金)
チェックアウト日:2023年8月27日(日)
[メール2]
ホテル名:ASUEホテル
チェックイン日:2023年9月16日(土)
チェックアウト日:2023年9月18日(月)
これらのメールから、スプレッドシートで以下のような抽出条件を指定すれば、カレンダーに予定をそのまま登録が可能です。
・チェックイン日を取り出す場合
[メール1]
└日付のみ:正規表現「(?<=チェックイン日:)(.*?)(?=()」→2023年8月25日
[メール2]
└日付のみ:正規表現「(?<=チェックイン日:)(.*?)(?=()」→2023年9月16日
・宿泊先を取り出す場合
[メール1]
└正規表現「(?<=ホテル名:)(.*?)(?=\n|\r|\n\r)→帝国ホテル
[メール2]
└正規表現「(?<=ホテル名:)(.*?)(?=\n|\r|\n\r)→ASUEホテル
同じように、例えば会議や打ち合わせの予定や納期など、特定のフォーマットのメールで予定がくるような内容を登録しておけば、スケジュールを自動で入れることが可能です。(※時間単位のスケジュールの場合は、下記ページの内容から改変する必要あり)
参考:「【Google Apps Script(GAS)入門】Gmail・Googleスプレッドシート・Googleカレンダーとの連携による自動化」
https://yururi-do.com/gmail-spreadsheet-calendar-with-google-apps-script/
ホテルの予約に使うプラットフォームによって、Gmailから自動で予定が入ったり入らなかったり……とまちまちなのが嫌でこれを使ってみたんですが、かなり楽で捗ります!
同じ用途に限らずいろいろ使えると思うので、予定入れるのが面倒><という人は(ある程度コードが読み解けて多少書ける人じゃないと難しいですが)ぜひチャレンジしてみてください!
まとめ
基本的な正規表現を知っておくと、エクセルやGoogle Analyticsなどの様々な場面で検索したり検索して置換したり……をするのに役立ちます。(あとわかってるとWebサイトのファイルのコードを読みたいときに正規表現が出てきても「読める読めるぞぉ!」ってなります。)
他にもいろいろありますが、基本だけでも押さえておくと便利なので、よくわかっていない……という方はぜひこちらの記事を復習等にお役立ていただければ幸いです!
ASUE株式会社では、Webマーケティングに関する情報を本ブログ・メルマガより発信しております。ちょっとした情報収集に役立つ(はず)なので更新通知を受け取りたい!という方はぜひ下記フォームよりご登録いただければ幸いです!
売り上げを増やすためのWeb広告成功事例集
- CVは付くものの成約に繋がらない
- 今の代理店に不満がある
- 専任担当者がおらず知見・時間が無い
- そもそも広告で成果が出ない
上記のようなお悩みを持った方へ
すぐに役立つASUEの広告改善事例を紹介します!
この記事を書いた人
2016年入社。ASUE株式会社広報を担当。メールマガジン「ほぼ週刊ASUE通信」もお送りしています。ほぼ週刊なので週刊ではない。月初に公開するWebマーケティング情報をまとめたツキイチシリーズはちゃんと月刊です。
趣味はミュージカル観劇。おすすめ作品を知りたい方はN村のTwitterまでお問い合わせください。
得意なこと
文章を書きます。
ひとこと
メルマガにご登録いただけると泣いて喜ぶかもしれません。