アクセス解析レポートをはじめました

昨年、ウェブ解析士の資格を取得し、ウェブの解析やレポート作成方法などいろいろなことを学びました。今年度は、その知識を実務で活用したいと考えてアクセス解析レポートの作成を、一部のクライアント様にご協力いただき、はじめることにいたしました。今回は提供しているレポート一例をご紹介したいと思います。

アクセス解析レポートとは

アクセス解析レポートとは、Webサイトへのアクセス状況をまとめたものになります。1か月間のアクセス数がどれくらいか、どこから訪問してきてどれくらい滞在したか、ユーザーの属性からどのような動きをして、どのページをみたかなどを把握できるようにするものとなります。

アクセス解析の目的

アクセス解析で現状のWebサイトの状況を把握し、課題の抽出を行います。その課題に対して解決策を設定し実行する。このサイクルを繰り返すことが重要です。

Webサイトの現状を分析

Webサイト内のユーザー行動としてわかるものは以下の通りです。

  • アクセスが多いページ
  • 直帰率が多いページ
  • 離脱率が少ないページ
  • コンバージョンの達成件数
  • 滞在時間が多いページ
  • 訪問者の属性
  • 回遊率
  • 流入キーワード

以上の数値から実際にレポートを作成してみたいと思います。

全体のアクセス状況

4月のデイリーのアクセス状況です。平均1220ユーザー/日が訪問しているようです。ここでは、デイリーで多い日と少ない日のトレンドがあるかということを把握しておきたいと思います。ECサイトであれば新商品の掲載やDM送信のタイミングが設定しやすくなります。上記グラフでは、ほぼ一定に推移しているためトレンドはつかみにくいですが、4月11日にアクセスが伸びている要因を確定することによって全体的なアクセスアップの施策がたてられるかもしれません。

3ヶ月推移レポート

直近3ヶ月のレポートです。ここでは3ヶ月平均と比較して数値の状況を確認します。とくにCVはダイレクトに売上に影響するため、下がっているところは特に注意が必要です。いろいろと注目すべき指標はありますが、ページ/セッションはユーザーが1訪問あたりにアクセスしているページ数であり、どのくらいページ回遊しているか把握できます。その分、サイトの情報を知ってもらえるということですね。

ページ別アクセスランキング

どのページが一番訪問数が多いかということが把握できます。ユーザー数が多いページはその後そのユーザーがどのような動きをしているかということが重要になります。特に平均エンゲージメント時間とは、そのページの滞在時間になるためどれくらいそのページを見ていたかがわかります。上記の場合、ユーザーあたりのビューがほぼ1ページしか閲覧されていないため、ページにとどまってもらうコンテンツの追加や、コンバージョンへ繋げるための導線の確保などが課題として挙げられます。※GA4より直帰率の表示がなくなったため出せていなかったのですが、エンゲージメント率の逆数として定義されたようなので、次回のレポートより追記していきたいと思います。

Google アナリティクス 4 における直帰率は、エンゲージメントされていないセッションの割合です。つまり、直帰率はエンゲージメント率の逆数です。ユニバーサル アナリティクスでは、直帰率は、サイト内のすべてのセッションのうち、ユーザーが 1 ページのみ表示し、アナリティクス サーバーへのリクエストを 1 つだけトリガーしたセッションの割合です。引用:アナリティクスヘルプ

ユーザー属性

ユーザーの流入経路やチャネル、仕様しているデバイスの種類など把握できます。現在は検索エンジンだけではなく、各SNSからの流入や性別、年代、曜日が数値として確認できると施策が立てやすくなります。

流入キーワード

流入キーワードとは、Google検索などの検索エンジンから検索したキーワードのことです。どのキーワードを入力してその検索結果から訪問してきたかがわかります。上記ワードを確認することによってユーザーがどんな目的をもってサイトにアクセスしてきたかがわかります。また、繁忙期閑散期によって検索クエリが変わってくることもあります。そこにはユーザーが求めているヒントがあるので、定期的に確認することが重要です。Googleトレンドから検索需要のあるワードの把握しておくものよいかもしれません。

ランディングページから購入まで(ファネル分析)

各ランディングページから訪問してきてどれくらいのユーザーが最終的に購入したかを分析したものです。ここではどのページでどれくらい放棄(離脱)したを把握し、その割合が大きいページの改善の必要性を確認するものになります。例えば、LPからの放棄率を0.8%(98.8%から98%にする)でも改善することができれば、フォームページに到達する人数は22ユーザー数となるため、160%上昇することになります。訪問するユーザー数が多いサイトであれば、回遊率の改善は大きなインパクトがありますね。

まとめ

アクセス解析は今この状態を数値化して把握することができます。またアクセス解析の使い方としては、目標値に対してどう推移しているかをモニタリングし、その目標値を達成させるためにページ改善などを行います。例えば、売上を現状より20%増やすとした場合、アクセス数はどのくらい増やせばいいか?転換率はいくらにすればいいか?注文単価は?何をどのようにすれば達成できるかというプランを立てます。その指標を達成するためにアクセス解析は大きな役割を果たすのではないかと考えております。アクセス解析についてもう少し知りたいや実際にやってみたいという店舗様いらっしゃいましたらご連絡いただけると幸いです。

少しでもECサイトを運用している店舗様のお役にたてればと思います。

【プレスリリース】らくらく在庫が「eBay」とAPI連携を開始しました。

グリニッジ株式会社(本社:東京都港区、代表取締役:田中裕之、以下:グリニッジ)の提供するEC在庫管理システム『らくらく在庫』とイーベイ・ジャパン株式会社(本社:東京都港区、以下:イーベイ)が運営するオンラインマーケットプレイス「eBay」がAPI連携を開始しました。 

■API連携開始の背景 

「eBay」は、190ヵ国に展開し、約1.34億人のバイヤーが利用する世界最大級のプラットフォームです。

eBayの日本法人であるイーベイ・ジャパン株式会社では、オンライン・マーケットプレイス「eBay」への出店・販売等、日本セラーの「越境EC」に特化した支援を行っています。

eBayでの販売は売上増加につながる一方で、在庫管理における作業が煩雑になりEC事業者を悩ませていました。

この度『らくらく在庫』と『eBay』 がAPI連携することにより作業負担を軽減させ、利益を最大化することが可能になります。

■API連携概要 

らくらく在庫とのAPI連動により「eBay」の受注情報を自動で取り込めるようになります。

また、他の連動モールで注文が入ると「eBay」の在庫数も自動で更新されます。 

これにより、多店舗のECモールの運営も行いやすく、在庫管理にかかる作業コストを大幅に削減できます。

■「eBay」連携スタートキャンペーン

『らくらく在庫』と『eBay』の連携開始にあたり、通常30日間無料トライアルのところ、7月31日までにお申込みいただくと、らくらく在庫を60日間無料でお試しいただけます。

ぜひ、この機会にらくらく在庫をお試しください。

■らくらく在庫無料トライアル申込みページhttps://zaiko.greenwich.co.jp/flow/trial
※キャンペーン期間:2023年7月31日まで 『eBay』を含めたお申込みが対象です。

■「eBay」への出店方法https://www.ebay.co.jp/start/business/
「eBay」への出店について、らくらく在庫導入検討/導入済みの方に向けて無料相談会を実施します(7/31まで、株式会社e-CLAPi提供)https://e-clapi.com/#section-36

【会社概要】

▽グリニッジ株式会社

代表者:代表取締役社長 田中裕之

所在地:〒105-0004 東京都港区新橋一丁目16-4りそな新橋ビル 8F

設立:平成15年5月26日

事業内容:EC・Webソリューション(コンサルティング・制作・システム開発・運用)

らくらく在庫URL:https://zaiko.greenwich.co.jp/

ホームページURL:https://www.greenwich.co.jp

【本件に関するお問い合わせ先】

■グリニッジ株式会社

インサイドセールス:塚部一貴(つかべかずき)<support@greenwich.co.jp>

〒105-0004 東京都港区新橋一丁目16-4 りそな新橋ビル 8F

(TEL) 03-5510-7260 / (FAX) 03-5510-7296

(URL) https://www.greenwich.co.jp/

グリニッジ株式会社は創立20周年を迎えます

2023年5月26日 グリニッジ株式会社は、創立20周年を迎えます。
みなさまのご愛顧に感謝し、今後もみなさまのお役にたつサービス開発に努めてまいります。
20周年を記念し、本サイトに「創立20周年のご挨拶」「グリニッジの歩み」の記念コンテンツをご用意しておりますので、是非、ご覧ください。

今後ともグリニッジ株式会社をどうぞ宜しくお願い致します。

Windows PowerShellでテキストファイルを分割する

こんにちは、窪田です。

テキストファイルを開く際に、ファイルサイズが大きすぎて、開けないという状況に陥ったことはないでしょうか。

今回はそんな時の対処法として、テキストファイルを分割する方法を紹介したいと思います。

目次

  1. 実行するスクリプト
  2. コマンドの解説
  3. まとめ


実行するスクリプト

分割したいファイルをC:\Users\ユーザー下に置き、Windows PowerShellで下記のコマンドを実行してください。

$utf8n = New-Object System.Text.UTF8Encoding $False; $path = 'C:\Users\ユーザー名\'; $i = 1; Get-Content "$path\test.txt" -ReadCount 10 | % {[System.IO.File]::WriteAllLines("$path\test_$i.txt", $_, $utf8n); $i++}

※ファイル名やファイルのパスを適宜変更し、実行してください。

'C:\Users\ユーザー名\'が分割するファイルが置かれているフォルダ

\test.txtが分割するファイル

-ReadCount 10が分割する行数

\test_$i.txtが分割後のファイル名

分割したいファイルがある状態で...

スクリプトを実行すると...

ファイルが分割できました。


コマンドの解説

$utf8n = New-Object System.Text.UTF8Encoding $False;

まず最初に分割後ファイルの文字コードをUTF-8Nに設定しています。

厳密に言うと、UTF-8Nのインスタンスを作成し、変数に格納しています。


$path = 'C:\Users\ユーザー名\';

ここでは、分割するファイルと分割後のファイルが出力されるフォルダのパスを設定しています。


$i = 1;

ここでファイル名に使用する変数を定義しています。

今回の場合は、初期値が1なのでtest_1.txtになります。


Get-Content "$path\test.txt" -ReadCount 10

Get-Content ファイルのパスで、指定したファイルの中身を取得できます。

-ReadCount 数字で、パイプラインによって渡す結果の行数を指定しています。


| % {[System.IO.File]::WriteAllLines("$path\test_$i.txt", $_, $utf8n); $i++}

|(パイプライン)によって、前に実行したコマンドの結果を取得できます。

%は、パイプラインを介して渡された結果を繰り返し処理するForEach-Objectコマンドの省略した書き方です。

% {}で波括弧の中の処理を繰り返し実行します。

[System.IO.File]::WriteAllLines("$path\test_$i.txt", $_, $utf8n)

WriteAllLines()で、新しいファイルを作成し、そのファイルに文字列を書き込みます

$_はパイプラインを介して渡された結果を意味するので、$path\test_$i.txtのファイル名を作成し、Get-Contentコマンドの結果で得られた10行を、UTF-8Nの文字コードで書き込みます。

$i++

最後に++(インクリメント演算子)で、$iの変数に1を加算します。

これにより、test_$i.txtの部分がtest_1.txt、test_2.txt...となり、連番のファイルが作成されます。


まとめ

今回は、Windows PowerShellでテキストファイルを分割する方法をご紹介しました。

仕事中、サイズの大きいログファイルを確認したい時があるので、自分が忘れないためにもブログに書き留めておきました。

ファイルサイズが大きすぎてテキストファイルが開けなくなった際には、Windows PowerShellを活用してみてください。

間違いやすい言葉遣い

お客様とのメールのやりとりや、書類の確認など文章を読んだり書いたりする仕事が多くあります。その中で注意したいのが言葉遣いです。

話している分には、気にならない言葉遣いが、文章にして改めてみると、違和感があったり、間違っていたりということがよくあるものです。私もご多分に漏れず、わからない言葉や、自分の伝えたいことをビジネスの文章でどういう言葉を使うのがいいかを調べることはよくあります。

そのように、気にしていると、テレビやYouTubeを見ているときに間違った言葉遣いをしているとどうしても気になってしまいます。

間違いやすい言葉遣いのコンテンツは、多くありますが、今回は、私の視点で、よく見る間違いを紹介したいと思います。

前半3つは、日常でよく耳にする間違いです。どれも、謙譲語と尊敬語の使い間違いですが、尊敬語を使うべき場面で、謙譲語を使っていることが多いようです。

拝見する

「拝見してください」と言っていることを、よく耳にします。「拝見する」が目上の人に対して使う謙譲語のため、「拝見してください」という言い方は本来ありません。目上の人に対しては、「ご覧になってください」というのが適切でしょう。

「拝見させていただく」という言い方もよく聞きますが、これも間違いです。「拝見する」自体が敬語になりますので、二重敬語になってしまいます。

頂く

これも、謙譲語と尊敬語の間違いです。食べ物を進めるときに、「頂いてください」と言っていることを耳にしますが、「お召し上がりください」が適切でしょう。

申す

「申す」も謙譲語ですので、「申してください」という言い方は、適切ではありません。「仰ってください」が適切ですね。

こんな間違いする人いるの!?と思う方は、普段からその場面で適切な言葉遣いができている方だと思います。

後半3つは、使う場面や使い方が間違いやすい言葉です。

ご活用ください

「活用」には、そのサービスや製品を使う人が積極的に、サービスや製品を活かして利用するという意味があります。「ご利用ください」とは違い、相手に対して「活かす」という行動を促す言葉になります。カジュアルな言葉に置き換えると違いが分かりやすいと思います。「使ってね」と「活かしてね」では、かなり、ニュアンスが違って聞こえるのではないでしょうか?

「ご活用ください」と言うと、若干、上から目線に聞こえてしまいますので、注意して使いましょう。

致しかねます

この言葉は、「致す」と「しかねる」から成り立っています。「致す」は「する」という意味で、「しかねる」は「しにくい、しづらい」という意味になります。「する」という語が入っていますので、言い換えると「するのが難しい」というニュアンスになります。

「しません」と言うニュアンスが入りますので、製品としてそもそもできないことや機能としてないことなど、意思が含まれない単なる可能・不可能を伝える場面には、適していません。

物理的にできないことを伝える場合は、「できかねます」と言うのが適切でしょう。

何様ですか?

こんな言い方する人はいないと、思われた方も多いかと思いますが、とっさの場面で使っているのを何度か目にしたことがあります。それは、電話でのやり取りで、相手の名前を聞くときです。「に」にアクセントを置いて、「何様ですか?」と言うと、相手も何を聞きたいかは理解してくれると思いますが、「お名前お伺いしてもよろしいでしょうか?」などと聞くのが、適切でしょう。

言葉遣いが正しくなくても、ほとんどの場合は、意味は通じると思います。しかし、より正しい言葉遣いをすることや、それぞれの場面で適切な言葉遣いをすることで、言いたいことをより正確に伝えることができたり、話に齟齬が生まれることを防ぐことができたりします。

ハーフマラソンはじめました。

まったく運動していません。

コロナ禍になって運動不足なので、エアロバイクを多少乗るようになりました。

いや、コロナ禍は関係ありませんね、常日頃からの不摂生で体に不調を感じることが多く、なにかしないと、と始めたのがエアロバイクでした。

なにか少しできるようになった気がしていたのかもしれません。

ふと目に止まった

ハーフマラソン参加募集

の文字。

何も考えずに申し込みをしてしまいました。

単純ですね。

ちなみに練習といえるような練習はしていません。

唯一、一週間前に試しと思い、15kmを走ってみたくらいです。

このような短絡的な申し込みからハーフマラソンを走るわけになったのですが、結果的には得られたものが多かった印象です。

しかも仕事、ひいては人生にもつながるのではないかと思った次第です。

目標を立てる

初めてのこと、しかも時間制限ありの中、どんなペースで行くか事前に考えておく必要がありました。

まず自分がどんなペースで走れるのか、それすらも知らなかったので、一週間前に走ってみたのです。

自分が立てたのは制限時間いっぱいの3時間を目標に1km7分台のペース。

実際15kmしか走っていないので、途中ペースが落ちたとしても8分台にまとめ上げればゴールできる計算です。

仕事でも成し遂げたいゴールとなる「目的」を達成するために、「何を」「いつまでに」「どうするか」という「目標」を決めることは大事ですよね。

目的を達成させるためのステップですね。

目標に沿って実行する

試走は1人でした。なので自分が思った動きが取れたのですが、本番は周りにもランナーがたくさんいます。

ペースで大別されているとはいえ、周りの人とまったく同じで並走できるわけではありません。

これが結構キツかった。

みなさん序盤は結構飛ばします。これにつられて自分のペースも上がってしまうのです。

これはいかんと目標のペースに落ち着かせました。

仕事でも会社からの要求や期待が大きかったりして自分のペースを見失ってしまう、なんてことありませんか?

自分で立てた目標に即したペース配分。

マイペースという言葉は取りようによっては相手から遅い、と感じられることもあるかもしれませんが、自分で立てた無理のない目標に沿ったペース、これが大切ではないでしょうか。

想定外を想定する

15kmまでしか走ったことがなかったのでハーフの21kmまでの後半6kmは未知の領域です。

またどこかで足が痛くなる、苦しくなるなどもあるでしょう。

自分はすぐ膝に来てしまうので、それらの限界?が来ても対処できるような準備をしました。

といってもそれは歩いて完走を目指す、です。

また膝のサポーターの準備や、給水所はありますが、念のためのドリンクなど、マラソンでは当然なのかもしれませんが、それらの準備を行いました。

全部が想定通りに運ぶことなどそうそうありません。仕事もそうです。

想定外の防止も大切ですが(リスク管理)、起きたことの対応策を考えておく(危機管理)のは非常に大切です。

決して一人ではない

よくスポーツ選手が言いますよね、「応援のおかげです」と。

これ本当にそう思いました。声援が心強くてやる気が出てくるのです。

またこういったイベントになるとスタッフはもちろん、たくさんのボランティアさん、またコースの住民の皆様など、たくさんの方々の協力なしでは開催できませんね。

自分の仕事も決して一人ではありません。

チームの皆さん、上司、同僚など、大きなハードルにぶつかった際に手を差し伸べてくれる方がいるはずです。

見守ってくれている方、応援してくれる方がいるはずです。

そういう方たちの助けがあって自分も仕事ができるのです。

さらなる改善を目指す

なんとかゴールはしましたし、制限時間以内という最低限の目標は達成できました。

ですが本来立てたペースは途中まで守ることはできたのですが、膝が限界で最後は歩いてしまいました。

次こそは練習を積んで設定ペースで走り切りたいです。

仕事も現状に維持していたら、、、これは言わずともですよね。

結論

どうでしょう。マラソンをするにあたり、仕事との考えに結びつくことが多くありませんか?

目標設定から計画を立てて練習、そしてプランの実行、さらには評価・改善と、まるでマネジメントを行っているようではありませんか?

決して走るだけ、体力の限界への挑戦だけがマラソンではありません。

きっと皆さんもマラソンから仕事に、またはその逆で仕事からマラソンに生かせることがあるかもしれませんよ。

成長の共有♪

こんにちは、高橋です。
最近、気温も高く夏日も増えてきましたね!

さて、今日は私が約2年間愛用しているアプリについてお話させていただきたいと思います!


個人的な話ですが、2021年に産休・育休をいただきまして、
我が家にはもうすぐ2歳になる子どもがいます。


(産休・育休についてはグリニッジ通信にて定期的に配信させていただいておりますので
 下記より御覧いただけたら嬉しいです(^^♪)


子どもが生まれてから、子どもの成長や思い出を残したいという気持ちもあり、
本当にたくさん写真を撮るようになりました。


仕事で子どもと過ごす時間が限られる夫や、頻繁に会うことが難しい祖父母にも、
写真で子どもの成長を共有できたら・・と思うときも!


そんなある時、退院の際に産院からいただいた資料のなかに、あるアプリのチラシを見つけました。

子どもの成長をいつでも、どこでも、いつまで

スマホで撮った子どもの写真や動画をかんたん共有、整理。

家族で楽しく会話したり成長をふりかえることができます。

家族アルバムアプリ「みてね」公式サイトより引用

あの有名な株式会社MIXIが運営しているアプリです。

ママやパパの半数が使う⁈
ダウンロードしてみたら、もう納得。これ、便利すぎます‼


「みてね」でできること

写真、動画を無料・容量無制限でアップロード
 ⇒月額料金などかからず、みてねのアプリ上に保存できます。
  アプリ上に保管なので、万が一故障などで携帯のデータが消えてしまっても大丈夫です!
  また、データフォルダから写真を選んでアップする際、すでにアップ済みの写真は
  選択に出てこないので、重複してアップすることもなく、確認も不要のためとてもラクです。


・みてねに登録されているメンバーであれば写真、動画の閲覧や保存、コメントまでできる
 ⇒家族や、親戚、共有したい人を招待して登録するだけ。
  私のアカウントは、夫、両相父母の合計6人が参加しており、
  日ごろから写真や動画を共有しています♪


・それぞれの月ごとに写真がまとめられていて、見やすく、振り返りやすい!
 ⇒簡単にさかのぼって確認したり、振り返ったりできます。
  このころ、どうだったっけ?と気になった時でも、すぐに見つけられます☆


アップロードした動画を繋ぎ合わせたムービーが届く
 ⇒自分で撮ったムービーが全く別ものに・・思わず見入ってしまいます。


・毎月の写真から自動でフォトブックを提案してくれる。(実物は購入)
 ⇒データだけでなく、物としてしっかり残したい人におすすめです。

アルバム以外にも、幅広く展開

最近はアルバム以外にも、「みてね」による複数サービスが始まりました。

*みてね みまもりGPS
 GPS端末とアプリを連携させて、小さなお子さんを子どもを見守ることができます。
 GPS端末にはお知らせボタンがついていて、親を呼んだり、もしもの時の助けを求めるサイン
 として使用できます。
 アプリにみまもりスポットの登録もできて、出発や到着などもわかるそう。
 他にもまだいくつか機能があるようですが、上記が特に便利だなと感じました。

我が家も、先々小学校入学時など、検討したいと思いました。

*みてね コールドクター
 アプリで往診依頼ができ、夜間・休日の急病時に自宅にお医者さんが来てくれて、 
 診察してくださるそうです。
 また、オンライン診療や、電話での医療相談も可能とのこと。
 現在は対応可能なエリアが限られるようですが、順次拡大中のようですので
 これからさらに期待できそうですね!

最後に


祖父母からは、みてねの更新が楽しみと連絡をもらったり
子どもの写真をアップするとコメントを書いてもらったり、
家族で楽しく利用しています。

ジャンルは違えど、グリニッジも同じIT企業なので、
ITの力で、子育てや日々の生活が便利になるのだなぁとしみじみ思いました。

以上、今回はお気に入りアプリのご紹介でした!
お読みいただきありがとうございました☆
 

思わぬところでwrap-reverseが役に立った話

最近、コーディングをしていて、
使いどころがよく分からなかった flex-wrap の wrap-reverse が役に立ったので、ご紹介したいと思います。

内容的にあまり参考になる方が少ないかもしれませんが、
少しでも何かの参考になればと思います。

flex-warp、wrap-reverseとは

そもそもflex-warpやwarp-reverseって、何?って方もいらっしゃると思いますので、
簡単にご説明します。

flex-wrap

CSS のプロパティーで、フレックスアイテムを単一行に押し込むか、あるいは複数行に折り返してもよいかを指定します。折り返しを許可する場合は、行を積み重ねる方向の制御も可能です。

https://developer.mozilla.org/ja/docs/Web/CSS/flex-wrap

flex-reverse

flex-wrapプロパティーの値(キーワード)になります。
flex-reverse以外にも値があり、各値と説明は以下になります。

nowrap

フレックスアイテムを単一行に配置して、自動で折り返さない。

wrap

フレックスアイテムを自動で下に折り返す。

wrap-reverse

wrap同様に自動で折り返すが、上に折り返す。

使用した背景

レスポンシブで横並びのPC表示からタブレット表示にした場合、
自動改行されて、1段目にフレックスアイテムが1つ、2段目にフレックスアイテムが2つで中央揃え(三角形)で表示したいことがありました。

1つ目のフレックスアイテムの横幅を100%に設定し、自動改行させて実装しようと思いました。
しかし、各フレックスアイテムにボーダーや背景を指定している場合、1段目のフレックスアイテムのボーダーや背景が横いっぱいに表示されてしまいます。

※HTMLの組み方で解決できると思われた方もいると思いますが、
諸事情でタブレットのデザインが決まっていなかったのと、このような箇所が複数あったので、どうしてもCSSで解決したかった…。

そこで使用したのが、wrap-reverseです。
wrap-reverseは、上に改行されるので、自動改行すると1段目にフレックスアイテムが1つ、2段目は2つになります(三角形)。

並び順が逆になっているので、orderを使って並び替えて中央揃えにして完成です。
実際のソースは以下になります。

まとめ

今回、状況的にあまりないかもしれないですが、
HTMLを編集できない状況やHTMLを編集するといろいろと修正が発生するなどがある場合もあるので、このようなこともできると頭の片隅に入れておいていただければと思います。

休憩時間に同世代ランチしてみました!

こんにちは!古関です!
突然ですが、自分は話し方が元気といいますか、特徴的な認識があります。チャットツールでも自分の発言の語尾にビックリマークを付ける節があるのですが、社外の方が取ってくださった議事録でも、自分の発言の語尾にビックリマークが付いていました。

元気に本題に参りたいと思います!

本日紹介したいのは、"three(スリー) -3人でランチ"というアプリです。

three とは、どんなアプリか

https://3people.biz/

自動マッチングした3人で、平日お昼にオンラインランチができます。
現在対応しているのは、iOSのみです。

three を利用した目的

会話の練習(伝え方の練習)

 社内でも毎日コミュニケーションをとる時間がありますが、共通の話題や相手が自分の事を理解してくれていて、会話が成り立っている事があります。家族や友人も同様です。

 社外の方とコミュニケーションをとる機会が増えてきているので、前提がない相手とスムーズに会話できるように練習したく、このアプリを使用しました。

three の利用方法

https://3people.biz/

1.プロフィールの入力

  • 基本情報、会社情報、キャリア情報の3項目あります。
  • 所要時間1~3分程度で登録出来ました。
  • 会社情報の項目にある会社名の欄に自社名を記載すると、自分の会社の人とはマッチングしない仕組みのようです。自社名ではなく、サービス業やIT系など自分の業種を記載している方もいます。

2. ランチをしたい日の前日に申込み

  • "今日時間が空いたから"と、当日ランチ予約を入れることは出来ないようになっています。

3.当日URLから、ランチに参加

  • マッチング成立後、チャットができます。簡単なあいさつや、事前に話したいお題の共有をします。
  • もし他2人が当日キャンセルになってしまった場合、別ルームが発行されるようです。他にキャンセルにあった方がいれば、その方とトークができます。

4.ランチ後は、ルームの評価

  • ランチが終わった後、今日のランチがどうだったかの評価を行います。
  • ルームのみんなの評価が一致した場合、同じメンバーで後日ランチのスケジュールが組まれる仕組みになっていました。

実際にthree を使用した感想

 

自分がマッチした層

 年齢は±3歳くらいでした。職種は同じような方がいるときもあれば、異業種の方ばかりの時もありました。
 threeを利用している理由は、話すのが苦手だから練習のために、仕事につなげたい、コロナ禍で話す機会がなく...etcなど、さまざまな目的で利用されている印象を受けました。

時間について

 自分の場合、ランチが12時30分からなので、マッチングが成立した段階であらかじめ遅刻する事を伝えます。35分と設定されていますが、実際には開始から35分過ぎてもルームが強制的に閉じられることはありませんでした。

話し方の勉強になった

 自分の利用目的が伝え方の練習だったので、人材系や営業職の方とマッチした時、話し方に魅了されました。どうしてそんなに話すのが上手なのかお尋ねしたところ、読書会など自分が好きなことでアウトプットできる環境を見つけて練習をしたり、週に1度社外の人とコミュニケーションを取るように継続的に取り組み、話方の練習をしていると教えてくださった方もいます。

 もし興味があれば、ぜひ利用してみてください!

支払いは絶対割り勘!そんなアナタのための支払金額計算&通知プログラム

仕事とプライベートをなんとか結び付けたいバンドマン岡村です。
の、第2弾!!
第1弾はコチラ

みなさん、割り勘してますか?
僕は割り勘します!

今回はバンド専用クレジットカード毎月の支払金額を割り勘にしてdiscordに結果を通知するプログラムを作ってみました。
登録するだけで使える既存のbotの利用も考えましたが、細かい設定をすると有料になってしまったりするので自前でチャレンジです!

やりたいことを実現するために以下の処理が必要と考えられました。

  • カード会社の支払金額通知メールから支払日と金額を取得。
  • メンバーの人数で割る。
  • 計算結果の小数点は切り上げ。
  • 計算結果が1000より小さかった場合は1000円とする(コツコツ貯金♪ということもありますが振り込みやすいため)。
  • 毎月20日12時にdiscordに今月の支払いに関する情報を通知する。
このような文面のメールから支払日や金額を取得する。

今回もソースコードのコピペと若干の編集で運用できます。
それでは作っていきましょう!

discord事前準備

  1. メッセージ送信を行いたいdiscordチャンネルのwebhookを取得。
  2. 「チャンネルの編集」をクリック。
  3. 「ウェブフックを作成」をクリック。
  4. 「ウェブフックURLをコピー」をクリックし、コピーした内容をどこかに保管しておく。
  5. 「お名前」を変更するとbotの名前を変更できます。

Google Apps Script事前準備

  1. 「新しいプロジェクト」をクリック。
  2. プロジェクトに名前を付ける。支払金額を通知するのでNoticePayment。
  3. ファイルにも名前を付ける。1つのファイルに収まりそうだったのでこちらもNoticePayment。

コーディング

ソースコードサンプルは以下。

// ディスコードのウェブフックURLにリクエストし、カードの振込金額を通知するメソッド
function noticePayment() {
  // 状況によって修正が必要な値
  const from = 'hoge@greenwich.co.jp'; // 本番時に取得するメールの送信者条件
  // const from = 'moge@greenwich.co.jp'; // テスト時に取得するメールの送信者条件
  const members = 3; // 現状のメンバー数
  const mailSubject = 'お支払金額のお知らせ'; // 取得するメール件名の条件
  const webhook = "https://discord.com/api/webhooks/hoge/moge"; // discordのウェブフックURL

  // 取得範囲となる現在より1カ月前の日付を取得
  const today = new Date();
  var after = new Date();
  const month = today.getMonth() + 1; // 現在の「月」を取得、getMonthの返り値が0~11なので+1 
  after.setMonth(month - 2); // 1カ月前の月を設定するため「月」から-2の値をセット 
  after = Utilities.formatDate(after, "Asia/Tokyo", "yyyy/MM/dd"); // フォーマットを変換

  var query = 'from:' + from + ' subject:' + mailSubject + ' after:' + after; // 取得するメールの条件
  const gmailThreads = GmailApp.search(query); // GmailThreadの配列取得

  // 条件に該当するメールがなければメソッド終了
  if (gmailThreads.length == 0) {
    return
  }

  // 取得したGmailThreadの要素数だけ繰り返し
  gmailThreads.forEach(function (gmailThread) {
    const messages = gmailThread.getMessages(); // GmailMessageの配列を取得

    // mapメソッドでmessages配列内のすべての要素に対して同じ処理を加え、新しいrequests配列を返す
    const requests = messages.map(function (message) {

      // 通知内容を作成
      var content = 'カードの支払日と支払額をお知らせするんだメナ:leaves:\r振込めたら教えてほしいんだメナ!'; // 通常表示する内容
      const plainBody = message.getPlainBody(); // HTML形式を使用しない本文を全文取得

      const payday = plainBody.match(/[0-9]{1,}月[0-9]{1,}日/); // 本文から支払日を抽出
      var totalPayment = plainBody.match(/[0-9]{1,},[0-9]{1,}円/); // 本文から支払額合計を抽出
      const replaceWord = /,|円/g; // カンマと円を複数回検索する正規表現
      totalPayment = totalPayment[0].replace(replaceWord, ''); // カンマと円を空白に置換
      totalPayment = Number(totalPayment); // 数値に変換
      const calculationResult = totalPayment / members; // 支払額合計をメンバー数で割る
      const ceilResult = Math.ceil(calculationResult); // 小数点以下は切り上げ 
      const calculation = String(totalPayment + '÷' + members + '=' + ceilResult); // 計算内容を文字列に
      var perPersonPayment = Math.ceil(ceilResult / 1000) * 1000; // 1000より小さい端数は切り上げた値を1人あたりの金額とする

      // discordにリクエストするPOST本文を作成
      const request = {
        content: content, // 通常表示のメッセージ
        embeds: [{
          // カスタム可能な埋め込みメッセージ
          fields: [
            {
              name: "支払日",
              value: payday[0]
            },
            {
              name: "支払額合計",
              value: totalPayment + '円'
            },
            {
              name: "メンバー数",
              value: members + '人'
            },
            {
              name: "計算内容",
              value: calculation
            },
            {
              name: "1人あたり",
              value: perPersonPayment + '円(振込のため1000円より小さい端数切り上げ)'
            },
          ],
          color: 6023366 // 16進数のカラーコードを10進数に変換する必要あり
        }],
      }

      return {
        url: webhook,
        contentType: 'application/json',
        payload: JSON.stringify(request),
      }
    })
    UrlFetchApp.fetchAll(requests); // 任意の詳細パラメータを使用して、複数のURLを取得する複数のリクエストを実行
  })
}

実際に運用する際に変更が必要な個所は以下です。

  1. 「本番時に取得するメールの送信者条件」のコメントがある行の代入は、支払金額通知メールの送信元のアドレスに変更。
  2. 「テスト時に取得するメールの送信者条件」のコメントがある行の代入は、テストに使う送信元と仮定したい自前のメールアドレスに変更。
  3. 「現状のメンバー数」のコメントがある行の代入は、支払金額を何人で割りたいかによって変更。
  4. 「取得するメール件名の条件」のコメントがある行の代入は、支払金額通知メールの件名に変更。
  5. 「discordのウェブフックURL」のコメントがある行の代入は、メッセージを送信したいチャンネルのウェブフックURLに変更。
  6. 「通常表示する内容」のコメントがある行の代入は、botに最初にしゃべらせたい内容に変更。絵文字も行けて、このサンプルでは葉っぱの絵文字です。
  7. 「value: payday[0]」としているところは、メール本文内に「〇月〇日」のような日付を表す文字列が複数あり、取得したい日付が1つ目の場合は[0]のままで良いが、2つ目の場合は[1]に変更。3つ目の場合は[2]に変更。4つ目以降の場合も同様。

テスト

以下の方法でメッセージ送信や計算結果、レイアウトの確認をしました。

  1. 「本番時に取得するメールの送信者条件」のコメントがある行をいったんコメントアウト。
  2. 「テスト時に取得するメールの送信者条件」のコメントがある行をいったんコメントアウト解除。
  3. 実際に取得したいメールの件名と文面をコピペしたメールを作成し、自前のメールアドレスから送信します。
  4. 実行ボタンからプログラムを実行するとdiscordに通知が来ます。

トリガーの設定

以下のように設定することで、毎月20日の午後12時から1時の間にプログラムが動くようになりメッセージが送信されます。

  1. 画面左端の時計マークをクリック。
  2. 「トリガーを追加」をクリック。
  3. 設定していく。
    • 実行する関数を選択→noticePayment
    • 時間ベースのトリガーのタイプを選択→月ベースのタイマー
    • 日を選択→20日
    • 時刻を選択→午後12時~1時
  4. 保存

完成

以下の画像のように時間通りにメッセージが送信されます。
午後12時~1時という設定なので、ピッタリではなくある程度時間がたってから来るようですね。

注意点

  • メール送信元のアドレス、件名、文面が限定されているので、カード会社側で変更があった場合は修正が必要です。
  • メンバーの人数が変わった場合も修正が必要です。

あとがき

いかがでしたでしょうか。

今回、作っていて特に面白いなと思ったのは、discord内でのメッセージ表示方法に非常に柔軟性があったことです。
コチラのページが分かりやすかったので参考にしながらレイアウトしました。
通常のメッセージ送信だけでなく、埋め込みを作ったり、項目を作ったり、色を付けたり、絵文字を付けたり…bot感がマシマシで良いですね。

さてさて、bot完成により毎月5分の時間が浮いてしまったわけですが。
岡村はこの時間を有効活用し、"ぼっち・ざ・ろっく!"の3周目に行って参ります。

また何か作ったら共有します!