オンライン英会話BizMatesを利用した感想!

こんにちは!
最近6年ぶりに会った友人と、10年前の話をしました。
過去は色あせないなと嬉しい半分、流れた歳月へのしみじみが半分の
ハイブリッド古関です。

本日は英語学習で使用していた、オンライン英会話BizMatesを使用した個人の感想をお伝えします!

Bizmateの概要

特徴・ビジネス特化型オンライン英会話
・全トレーナーがビジネス経験者
講師陣厳選されたフィリピン人の先生
プラン①と料金・毎日25分×1レッスン
 13,200 円(税込)
プラン②と料金・毎日25分×2レッスン
 19,800 円(税込)
教材についてビジネスシーンに合わせた教材を用意
(レベルは初学者から上級者用に分かれています)
予約可能時間5:00 ~ 25:00 (日本時間)

レベルにあった教材選択

Bizmatesで受講を開始する前に、無料体験レッスンでレベル診断が行われます。30段階のレベル別レッスンが用意されており、自分の状況にあった教材が用意されています。他レベルの教材を使用するには、1つのコースを終わらせる必要があります。

実際に受講し良かったこと、残念だったこと

実際の現場での英語を教えてもらえる

Bizmatesの先生方は全員ビジネス経験があります。そのため、自分と同じキャリアや業種の先生を選択する事が出来、実際の現場ではどういったコミュニケーションをとっていたかなど、実体験を教えていただくことができました。

私の場合は、先生のキャリアに IT depertment, programmer, system engineer という職歴がある方に絞って探しました。

自分にあった先生に出会うことができた

これは本当に個人の感想ですが、自分が信頼できる先生に会うことができました。その先生とは教材を指定して授業を進めるのではなく、想定されるシチュエーションで必要な英会話を教えて頂きました。

経験がある方なので、困ったときの対応や、先生の失敗談から学んだ対応方法など教えてくださり、本当にすてきな先生でした。

先生の予約が取りにくい

これは私が退会する原因になった部分なのですが、お気に入りの先生の予約が取りにくい点です。

先生方は副業として私たちに英語を教えてくださる方も多く、なかなか予約が取れませんでした。これはBizmatesに限ったことではないと思います。ですが、自分に合った先生を探す作業はなかなかに困難なため、他の英語学習を探すことにしました。

感想

Bizmatesの先生方は、たくさんアドバイスをくださる優しい先生方が多かったです!

いろんなサービスを利用して、自分に合った英会話学習を行っていきたいと思います!

iPhoneでselect要素optionに「display:none;」が効かない罠

やりたかったこと

ある選択肢の選択内容によって、一つのセレクトボックス内のoption要素を出し分けできるように実装したい件がありました。
非表示にするだけであればCSSをあてなくてもコメントアウトや削除で十分なのですが、今回は別の選択内容と連動する仕様だったため、jQueryを使用して選択内容の条件に対し動的にCSSをあて、セレクトボックスの中身が変わるよう実装しました。

デベロッパーツールでは気づけない問題

ステージングの段階で実機確認ができない環境下だったため、PCブラウザ(chrome/Edge/FireFox)のデベロッパーツールよりスマホの表示確認を行いました。この段階ではコンソールエラーもなく、セレクトボックスの中身は問題なく出し分けができていました。
しかし、実際にiPhone上で確認してみると、option要素へのCSS「display:none;」が効いておらず、すべての選択肢が表示されている状態で出し分けができていませんでした。

まず最初にjsファイル自体の読み込み問題を疑いましたが、同一ファイル内で実行している選択肢変更によるセレクトボックスの選択初期化は問題なく動作確認ができていました。
またsafariの拡張機能デベロッパーツール「Web Inspector」上でコンソールエラーもなかったので問題に気づきにくく、原因究明と解決に少々手間取りました。
これはsafari特有の現象かと思いましたが、アプリ版chromeでも同様の現象が起きていたので、どうやらiPhoneではブラウザ問わず起こる問題のようでした。

今回は、この問題に対して、試してみたことや解決した方法を備忘としてまとめたいと思います。

前提

・HTML、CSS、jQueryの使用で実装
・一つのselect要素で行う

クラスで「select-a=条件aを選択した場合に表示する選択肢(a-1, a-2)」「select-b=条件bを選択した場合に表示する選択肢(b-1, b-2)」と分けています。

試したこと (うまくいかなかった例)

● jQueryでCSS「display:none;」を付与

ブール値「selectedA=条件a」がtrueの場合、「select-a」のみ表示したいので、セレクタ「.select-a」を指定しcssメソッドで「display:inline;」とします(非表示(条件b)→表示(条件a)へ切り替わるパターンも要考慮)。
「select-b」は非表示にするので「display:none;」を付与します。
else内(条件b)では、逆の内容でCSSを付与。

こちらはPC上の確認では問題はありませんでしたが、下の画像のようにiPhone実機では適応されず「select-a」「select-b」どちらの選択肢も表示されてしまいます。

  

● jQueryメソッド「.show()」「.hide()」を使う

jQueryメソッドを使った方法です。パラメーターを指定せず「.show()」を実行すると前述の「.css("display", "inline")」と同じ挙動ではあるので、こちらも同様にiPhone実機では適応されませんでした。

● CSSでデフォルトスタイルを初期化

ブラウザ特有のスタイルが影響している可能性も考え、appearanceプロパティで標準スタイルを解除してみました。select要素、option要素それぞれにあててみましたが、期待した変化はありませんでした。

解決した方法

● CSS有効のspan側で「display:none;」を付与し、非表示にするoptionを囲む ( .wrap() )

optionにCSSが効かないのであれば、iPhone上でもきちんとCSSが効く要素を使う必要があると思い、試しにspanタグを使ってみたところ、うまくいきました。

↑ まずは非表示用クラスを準備します。クラス「selector-hide」にはCSS「display:none;」を付与して非表示となるようにします。

↑ 条件aのとき、非表示にしたい「select-b」に対し「.wrap()」を使用して、非表示用クラス「selector-hide」のspan要素を付与します。

↑ これにより、条件aのときは、非表示用クラス「selector-hide」のspan要素がセレクタ「.select-b」を囲います。


また、条件b→条件aになったときは「select-a」の再表示が必要なため、付与前にすべての「selector-hide」のspan要素を「.unwrap()」でリセットします。

「.unwrap()」は指定したセレクタの親要素を削除します。
単純に「select-a」のwrapを解除するので「$('.select-a').unwrap();」とすればいいように思いますが、「select-a」が「selector-hide」にwrapされていない場合の親要素はselect要素になるため、select要素が削除対象となってしまいます。
これを回避するために、「.contents()」で「selector-hide」の子要素を指定し、その親要素である「selector-hide」をunwrapするようにしています。
この方法であれば、「selector-hide」にwrapされていない状態のoptionについてはunwrapの対象外となり、select要素を削除することはありません。

結果

span要素「selector-hide」にCSSが効いて、中身のoptionまるごと非表示が成功しました。
条件a ↔ 条件b の切り替えも、iPhone上で正常に実装できました。
もちろんPCのブラウザ上でも問題はありません。

まとめ

デベロッパーツールでの表示確認はあくまでも疑似的再現であり、当然ですが完璧ではありません。いろんなデバイスでの表示が一つの画面で可能で、ついついその便利さに、さも正常に表示されているかのように錯覚してしまいますが、実際は気づかないところで意図しない挙動になってしまっているという落とし穴がひそんでいるものですね。
もとよりiPhoneでの表示のクセや違いなどについての知識があれば、今回の件も事前に把握できていたかもしれませんが、めまぐるしいスピードでアップデートされてゆく日々のなかでは、既存の知識や常識も突如として通用しなくなることも多々あり、知識は知識で蓄えつつ、可能であるならやはり事前に実機で検証するに越したことはないと改めて感じました。

とはいえ、デベロッパーツールが万能であることはいうまでもなく、これからもデバッグできるところはきちんと確認しつつ、過信しすぎず実機の動作確認とあわせてうまく活用していきたいです。

今年のふるさと納税は何にしますか?

あっ・・・・。
という間に2022年も年末が近づいてきましたね。
個人的には、  年末=【ふるさと納税 締切間近】 という感覚になります。
計画的ではないので、毎年年末にふるさと納税サイトを見てバタバタして購入しています。
仕事上関わることもあり少し、ふるさと納税について少し調べてみました。
ふるさと納税は、非常に伸びているマーケットだと思います。
ふるさと納税の寄付額は2020年は6800億円(前年対比140%)で、22021年度は寄附額8,300億円(前年対比120%超)寄附者は740万人で過去最多となっています。
弊社でも ふるさと納税を運営している店舗(自治体)さんとのお付き合いが 増えてきていますね。

ふるさと納税の仕組み

寄付者目線でいくと、自分が選んだ地域に寄付をすることで、実質2,000円で好きな返礼品がもらえる仕組みですね。事業者目線でいくと、まず自社の製品や産品を該当する自治体に出品し寄付が入ると、予め自治体に伝えていた金額が自治体から支払われる仕組み。

例えば、3,000円の商品を販売している事業者がその商品をふるさと納税に出品したとすると、自治体は返礼品の調達額を30%にする決まりがあるので、掲載金額は10,000円となります。

寄付が入ると、3,000円を事業者に支払い、販売手数料などの諸経費を20%にあたる2,000円以内で納め、50%の5,000円を自治体の歳入にしているようです。つまり、事業者側では、3,000円で出品し、寄付が入ると3,000円自治体から支払われるというシンプルな構造になっています。
また寄付者への送料については、自治体が負担しているようです。
したがって、出品時に関しては自治体との書類のやり取りなどが発生しますが、それ以外はにスピーディーに販売(寄付)に進むことができます。

寄付額 1位から20位(市の部)

総務省「ふるさと納税に関する現況調査等、令和3年度受入額の実績等」引用

寄付額ランキングを見ると、北海道強いですね。
TOP5に3つ入ってますね。 弊社のお付き合いある店舗様もランクインしています。
個人的に気になったのは2位の宮崎県です。都城市ではないのですが、宮崎県で食べた餃子が美味しかったので、ふるさと納税で探してみたらありました。
餃子の印象は、宇都宮や、浜松という方もいるかもしれませんが、実は、なんと、
2021年 の 餃子消費 額日本一は 宮崎市なんですね。宮崎は餃子の激戦区ですね。

焼き餃子協会データ 引用


旅行で宮崎に行ったときにお勧めされた高鍋町にある馬渡の餃子 は食べた時衝撃をうけました。
外はカリッ 中はモッチモチとして、美味しいです。こちらお勧めです。
餃子とビア~ 🍺 最強説あります。無限に食べられます。
ふるさと納税もあります! 是非 機会があれば食べてみてください~。

店舗さんも、自社の商品を伸ばしていくためにふるさと納税を活用してみるのも1つだと思います。

いろいろなふるさと納税サイトありますが、個人的には購入は、楽天ふるさと納税を多く使ってます!
買い回りや、イベントでポイントもゲット!できるのでお勧めですね。
いろいろな地域のいろいろな商品、イベント等、発見できる、そんな目線でもふるさと納税を利用してみるのも良いと思います!

健康優良企業(銀認定)に認定されました

グリニッジ株式会社は、この度、健康保険組合連合会東京連合会より、令和4年10月5日付で
健康優良企業(銀認定)に認定されました。
こちらの認定は健康保険組合と協力して健康企業宣言を行い、健康経営健康づくりの取組みを積極的に行っていることの証となります。 

銀の認定証

健康企業宣言とは

健康企業宣言とは、企業全体で健康づくりに取組むことを宣言し、その取組みのサポートを関東ITソフトウェア健康保険組合と健康保険組合連合会東京連合会が共同で行うものです。 取組みによって一定の成果を上げた場合は「健康優良企業 」として認定されます。

今回グリニッジでの取り組みが評価され「健康優良企業 」として認定されました。

またこちらの「銀の認定」は、経済産業省等において推進する「健康経営優良法人認定制度 」【中小企業部門】において、受けることが申請要件ともなっています。

令和3年11月1日より健康企業宣言後、自社の健康課題の解決に向け、目標・計画を立て、取り組みを継続的に実践してきたものが少しずつ形になってきました。次は、健康経営優良法人認定もチャレンジしていきたいと思います。

更によりよく社員の働きやすく、社会に貢献できる生産性の高い企業を目指して頑張っていきたいと思います。

産休・育休について①~産休前のお話インタビュー~

2020年中途入社で、2021年7月より産休・育休に入り、2022年5月に復職した髙橋さんに、産休・育休についてのインタビューを行いました。

第1弾は産休前について、振り返ってもらいます。

会社への報告

中途入社の研修期間を終えたばかり。不安と緊張の報告。

妊娠しているとわかった時、どんな気持ちだったのかな?

年末のお休み中に妊娠を自覚しましたが、子供を授かったことに対して嬉しい反面、入社して間もなかったので、会社を辞めなければいけないのでは・・と不安もあり、複雑な思いで年末年始を過ごしてました。

それは大変だったね。
たしかに年明け初日に、大事な話があると言われた時は、こちらも身構えてしまったけど、妊娠で本当に良かった。

そうですね。すぐに言わなきゃと思って、社長をはじめ、同じ部署の方には一人ずつリモート画面越しで報告しました。
報告するまでは不安な気持ちでいっぱいでしたが、皆さんあたたかい言葉を掛けてくれたので、嬉しくて涙が止まりませんでした。

すごく言いづらそうな雰囲気だったから、辞めたいと言うのかと思っていた。

逆です。ずっとこの会社で働きたいという思いが強かったです。
報告した日は嬉しい思い出になりました。

妊婦さんの働き方

働く妊婦さんを取り巻く仕事環境

公園で会話する二人

安定期に入るまで、急な体調不良はどうしてたの?

ちょうどコロナウイルス感染拡大時期と重なっていましたが、リモートワークのおかげで、自宅から出ることは無く、体調が悪くても大変ではなかったです。
休憩中も自宅なので横になることができ、とても助かりました。

たしかに会社だと横になることは出来ないよね。
他にリモートワークで良かったことは?

一番は通勤が無かったことです。
つわりによる吐き気や頭痛など、妊娠中の通勤は大変だと聞いていました。
 通勤しているママ友達が多かったので、そう考えると私の仕事環境はとても恵まれていたと思います。
妊娠前も妊娠後の仕事も変わらずに、フルタイムで働けることも良かったです。

他の会社はリモートワーク導入が遅れていたから妊婦さんは大変だろうね。

そうですね。
あと、妊婦さんがコロナに罹る前例が無かったので、その不安もなく安心して働くことができて良かったです。

うれしかったこと

産休前の仕事中で一番うれしかったこと

笑顔

働いている中でうれしかったことは?

社内で「体調大丈夫?」と声を掛けてくださる方が多かったことです。
同じ部署以外の方も、気に掛けてくれていてうれしかったです。
妊婦に優しい会社だと感じました。

たしかに子供をもつファミリー社員が多いから、心配して気に掛けてくれるのかもしれないね。

理解のある会社でうれしいです。
女性社員も増えてきたので、このまま妊娠しても安心して働ける仕事環境を継続して欲しいですね。

そうだね。妊婦さんも働きやすい会社にしていきたいね。

長くなってきたので、今回のインタビューはここまで。
次回は産休・育休中のインタビューです。

お楽しみにしてください!

編集後記

コロナ感染拡大中でも、多くの妊婦さんが通勤していたことを改めて知りました。
安定期に入るまでの通勤は、本人はもちろん、家族の皆さんも心配だと思います。
妊婦さんも安心して働ける環境の会社にしたいですね。

【プレスリリース】らくらく在庫が越境ECモールZenPlusと連携しました。

グリニッジ株式会社(本社:東京都港区、代表取締役:田中裕之、以下:グリニッジ)の提供するEC在庫管理システム『らくらく在庫』とゼンマーケット株式会社(本社:大阪府大阪市、以下:ゼンマーケット)が運営する越境ECモール「ZenPlus」が連携しました。

■連携の背景

越境ECモール「ZenPlus」は、海外発送に必須である煩雑な手続きを出店者に代わりに行うなど様々なサポートを提供しているため、出店者は国内取引のような感覚で世界に商品を販売することが可能になります。

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

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

■API連携概要

らくらく在庫とのAPI連動によりZenPlusの受注情報を自動で取り込みできるようになり、また、他の連動モールで注文が入るとZenPlusの在庫数も自動で更新されます。

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

■ZenPlus連携スタートキャンペーン 

『らくらく在庫』と『ZenPlus』連携リリースにあたり、通常30日間無料トライアルのところ、今だけ60日間無料で行います。

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

らくらく在庫無料トライアル申込ページ:https://zaiko.greenwich.co.jp/flow/trial

※キャンペーン期間:2022年12月31日まで 『ZenPlus』を含めたお申込みが対象です。

■ ZenPlus 手数料キャッシュバックキャンペーン【ZenPlusに関するお問合せ・出店ご検討の方はこちら】 

『らくらく在庫』と連携し た『 ZenPlus 』新規出店者を対象に ZenPlus 手数料キャッシュバックのキャンペーンを行います。 

※キャッシュパック対象期間:~2022年12月31日の受注分 
下記出店登録ページより登録を行った方に限ります。 
※手数料は商品代金/送料より各10% 
※キャッシュバックのお振込みは受注日より最大1ヵ月後となる場合があります。

ZenPlus出店登録ページ:https://seller.zenplus.jp/signup?aId=D6015CED
お問い合わせURL:https://zenplus.jp/ja/contact

【会社概要】

▽グリニッジ株式会社

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

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

設立:平成15年5月26日

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

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

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

▽ゼンマーケット株式会社

代表者:ナウモヴ ・アンドリイ、オレクサンドル・コーピル 、スロヴェイ・ヴィヤチェスラヴ ソン・マルガリータ

所在地:〒541-0048 大阪府大阪市中央区瓦町1丁目7-7 大阪堺筋Lタワー10階

設立:平成26年4月

事業内容:越境EC事業・海外向け物流事業・海外向けプロモーション事業

Zenplus URL: https://zenmarket.jp/ja/marketplace.aspx 

ホームページURL:https://zen.group/

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

■グリニッジ株式会社

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

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

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

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

中途入社の古屋です。

皆さま、初めまして。
10月から中途で入社させていただきました。古屋と申します。

私はこれまで農業協同組合から機械のフィールドエンジニア、ソフトウェアの開発エンジニアと業界を渡り歩いてきました。
前職のソフトウェア開発ではECサイトの構築、改修に1年ほど携わらせていただいたということもあり、今回ご縁があり入社させていただく運びとなりました。
まだまだエンジニアとしての歴は浅いので、一日でも早く皆様のお役に立てるよう日々精進して参ります。

個人的なお話になりますが
今年31歳を迎えまして、30歳を過ぎてからお腹周りにお肉が付き始めました。
もともと食べる量は多い方だったのですがそれまではいくら食べても太ることはなく、「私はいくら食べても太らない人間なんだ」と思っていました。
ええ…もちろん30を迎えてもそう思っておりました。
いつからでしょう…
夜眠れない時にはペヤング焼きそばの超大盛を掻き込んで満腹中枢を刺激し直後眠くなったタイミングで朝までぐっすりという習慣ができあがってしまったんですね。

そんな習慣が続きまして、2ヶ月ほど経った時に気づいてしまったんです。
んー?なんか筋トレしてないのに胸筋付いてきた?

はい、その程度の認識だったわけです。
この習慣は続きました。食事も炭水化物がメインです。
そしてさらに1ヶ月が経った頃、久しぶりに会った友人に言われたんですね。

「太った?」

乗りましたね、体重計に
衝撃でしたね、かなり

なんとこの3ヶ月間で10kg増えておりました。

でもですよ
この10kg増えた体重が私の身長では平均体重とされているのです。
痩せ型で割とガリガリ寄りな体型が見事平均に乗ったわけです。

まいっかってなりそうじゃないですか?
実際なったんですよね、まいっかって。2秒くらい。

でも鏡を見ると腹回りは見事に出ており、胸も胸筋ではなく脂肪だったんです。ぶるんぶるんしてたんです。
すぐに運動を始めました。

今も続けてはいるのですがあまり効果が見えてきません。
運動のほかにも食事にも少し気を使い始めました。

以下痩せるためにやっていることです。
・平日の夕飯は白飯抜き
・月曜~木曜はウォーキング(3 ~ 4kmほど)
・金曜・日曜は水泳(平均2500mほど)
・基本的に飲み物は水とコーヒー(無糖)

ですが、あまり効果が目に見えないです。
ただこれ以上やるとしたら毎日夕飯の白飯を抜くことくらいです。
それはちょっとキツいので
この方法でもうしばらく様子を見てみようと思っております。

続報をお待ちください。

個人的なお話を失礼いたしました。
今回は以上でご挨拶とさせていただきます。

これからどうぞよろしくお願いいたします。

EC-CUBE4.2リリースパーティに参加しました!

こんにちは! グリニッジの古関です。

先月9月21日に開催されました、EC-CUBE4.2リリースパーティに参加させていただきました。

とてもすてきなパーティーだったので、当日の雰囲気や内容について共有させていただきます!

最新版EC-CUBE4.2のリリースパーティーとは

EC-CUBEはコミュニティの協力のもと開発してまいりましたが、EC-CUBE4.2では更にクオリティ・セキュリティ向上を掲げ「バグバウンティ」を実施し、サイコウのEC-CUBEとしてリリースできるものと期待しております。本「EC-CUBE4.2リリースパーティ」はそんなコミュニティの力を結集したEC-CUBE4.2のリリースを皆で祝い、ご協力いただいたエンジニア、協賛企業と一緒に労をねぎらい、そしてこれからEC-CUBEを共創する仲間として交流を深める会として実施いたします。

https://eccube42-releaseparty.peatix.com/

当日のスケジュール

  • EC-CUBEからの発表
  • バグバウンティ表彰式
  • ネットワーキング・歓談

会場

会場は東京恵比寿にある、ウェスティンホテル東京でした。


とても豪華なホテルで、今回の最新版EC-CUBE4.2のリリース記念と、バグバウンティ参加者への思いを感じました。

受付でいただいたウェルカムドリンクを片手に、開始まで少し談笑です。

EC-CUBEからの発表

パーティーが始まり、最初に株式会社EC-CUBE代表取締役社長 金 陽信様から
EC-CUBEのこれまでやコロナ禍で生まれたEC業界の課題、今後の挑戦についてお話頂きました。

EC-CUBE4.2バグバウンティ表彰式

最新版EC-CUBE4.2のリリースパーティーとは

各種アプリや Web システム等の「バグ(脆弱性、セキュリティホール含む)」に賞金をかけ、

見つけれてくれた人(バグハンター)に対しその重要度に応じてお金を支払う仕組みです。

https://www.ec-cube.net/events/release4.2/bugbounty2022.php

1位の方は、賞金42万円

このバグバウンティイベントには、50名以上の方が参加されたようです。
「不具合報告」「不具合修正」「脆弱性報告」を行うことで、ポイントが獲得でき
その合計が1番高かった方には、"EC-CUBE4.2"にちなんで、賞金42万が贈呈されました。

1位の方も、その他入賞された方々、本当におめでとうございます!

ネットワーキング・歓談

2回にわたって、ネットワーキング・歓談の時間が設けられていました。
コロナ禍で対面でお話しできる機会が減った中で、とても貴重な機会でした。

ちなみに、私はこうしたパーティーへの参加が初めてだったので、頼れる先輩方について
勉強させていただき本当に感謝でした!

感じたこと

今回のイベント全体を通じ、EC-CUBE4.2では、利用者様に安心してご使用いただけるよう
セキュリティ対策の強化にとても力を入れられている印象を受けました。

特に、バグバウンティという企画は、製品をよりよくしたいと思う社外の方の協力をえるという、すごい企画だと思います。

弊社もセキュリティ対策に力を入れているので、勉強になるとてもすてきなパーティーでした!

ダイナミックカスタムブロック作成(WordPress)~その2~

前回、投稿IDを入力すると、入力したIDのタイトル、サムネイル、リンクを取得して表示するものを作成しました。
しかし、実際の表示を確認するには、プレビューを開くか、保存をしてページを開かないと確認ができませんでした。

もう少し使いやすくするために、ブロックにプレビュー機能を付けたいと思います。
プレビュー機能を付けることにより、編集画面上でも実際の表示を確認できます。
※ソースは前回のものを使用します。

ServerSideRenderコンポーネント

ServerSideRenderコンポーネントを使用すると、編集画面でrender_callback関数に基づいたレンダリングを確認できます。

ServerSideRender コンポーネントを@wordpress/editor パッケージからインポートします。

ServerSideRenderコンポーネントは、ブロックの名前(識別子)をblockプロパティに指定する必要があります。
これはprops.nameで取得ができます

レンダリングに必要な情報(ここでは、投稿ID)をattributeプロパティに指定します。

src/edit.js

//SeverSideRenderコンポーネントをインポート
import { ServerSideRender } from '@wordpress/editor';

export default function Edit(props) {
	//props経由でプロパティを変数に分割代入
	const {attributes: {postID}, setAttributes, className} = props;
	
	return (
		&lt;div className={className} { ...useBlockProps() }>
			{/* プレビューと分けるため編集部分を div class="editMode" で囲む */}
			&lt;div class="editMode">
				&lt;div>sample dynamic block&lt;/div>
				&lt;TextControl
					label='投稿IDを入力' //ラベルの表記を設定
					type='number' //inputタグのtypeを設定
					value={postID} //保存されている属性(投稿ID)を表示
					//入力された値を属性に登録する
					onChange={ ( newId ) => setAttributes({ postID: parseInt(newId) })}
				/>
			&lt;/div>

			{/* ServerSideRenderコンポーネントを追加 */}
			&lt;div class="previewMode">
				&lt;div>プレビュー&lt;/div>
				&lt;ServerSideRender
					block={props.name} //ブロックの名前(識別子)を設定
					attributes={{
						postID: postID //保存されている属性(投稿ID)を表示
					}}
				/>
			&lt;/div>
		&lt;/div>
	);
}

プレビュー部分が見ずらいので、少し出力するHTMLとCSSを編集します。

sample-dynamic-block.php

本文の冒頭部分を表示するように編集します。

function sample_dynamic_block_render($attr, $content) {
	if($attr['postID'] > 0) {

		    //省略

			//本文の一部を取得
			$postContent = strip_tags($selectPost->post_content);
			$postContent = trim($postContent);
			$excerpt = mb_substr($postContent, 0, 75);

			//出力されるHTMLを編集
			ob_start();
			?>
			&lt;div>
				&lt;a class="postWrap" href="&lt;?php print $link; ?>">
					&lt;img src="&lt;?php print $thumbUrl; ?>">
					&lt;div class="postDetail">
						&lt;div class=postTitle>
							&lt;?php print $title; ?>
						&lt;/div>
						&lt;p class="excerpt">&lt;?php print $excerpt ?>&lt;/p>
					&lt;/div>
				&lt;/a>
			&lt;/div>
			&lt;?php
			$output = ob_get_contents();
			ob_end_clean();

			return $output;
		}
	}
}

src/editor.scss

編集画面のみ適用されるので、実際のページも同じデザインにする場合は、
src/sytle.scss を編集する必要があります。

.wp-block-create-block-sample-dynamic-block {
	border: 1px dotted #f00;

	/* 追加 */
	.previewMode {
		background: #fff;

		.previewTitle {
			color: #000;
		}

		img {
			width: 200px;
		}

		.postWrap  {
			display: flex;
			align-items: center;

			.postDetail {
				padding: 10px;

				.postTitle {
					margin-bottom: 8px;
				}
			}
		}

		a {
			display: inline-block;
		}
	}
}

投稿IDの入力の下にプレビューが表示されました。
※CSSは、実際に表示するデザインになる様に編集してください。

プレビューボタンの追加

プレビュー画面が常に表示されていると編集画面が見づらくなるので、
ツールバーにプレビューボタンを追加して、プレビュー表示と編集画面を切り替えられるようにします。

sample-dynamic-block.php

「attributes」に「isEditMode」(編集画面)を追加します。
現在の画面の状態(編集画面 or プレビュー)を表す属性になります。

function create_block_sample_dynamic_block_block_init() {
	register_block_type( __DIR__ . '/build', array(
		//レンダリング用のコールバック関数を設定
		'render_callback' => 'sample_dynamic_block_render',
		//入力された値(投稿ID)を保存するための属性を追記
		'attributes' => [
			'postID' => [
				'type' => 'number',
				'default' => 0
			],
			//表示画面の状態を管理する属性を追加
			'isEditMode' => [
				'type' => 'boolean',
				'default' => true
			]
		]
	));
}

src/edit.js

ツールバーにプレビューボタンを追加するので、
BlockControls、Button、Toolbar コンポーネントをインポートします。

//BlockControlsコンポーネントをインポート
import { BlockControls } from '@wordpress/block-editor';
//Button、Toolbarコンポーネントを追加
import { Button, Toolbar } from '@wordpress/components';

propsのisEditModeプロパティを変数に代入。

const {attributes: {postID, isEditMode}, setAttributes, className} = props;

ツールバーにプレビューボタンを追加して表示する関数(getBlockControls)を追加します。
ボタンの表示切替は、isEditModeの値により切り替わるようにします。

const getBlockControls = () => {
		return (
			&lt;BlockControls>
				&lt;Toolbar>
					&lt;Button
						label={ isEditMode ? 'Preview' : 'Edit'} //isEditModeの値によって、ラベルを切り替える
						icon={ isEditMode ? 'format-image' : 'edit' } //isEditModeの値によって、アイコンを切替る
						className='read-together-btn'
						onClick={() => {
							//clickされると値が反転
							setAttributes({ isEditMode: !isEditMode })}
						}
					/>
				&lt;/Toolbar>
			&lt;/BlockControls>
		);
	}

出力内容部分もisEditModeの値によって、切り替わるように編集します。

return (
		[
			getBlockControls(),
			&lt;div className={className} { ...useBlockProps() }>

				{/* trueの場合、編集画面を表示 */}
				{ isEditMode &amp;&amp; 
					//プレビューと分けるため編集部分を div class="editMode" で囲む
					&lt;div class="editMode">
						&lt;div>sample dynamic block&lt;/div>
						&lt;TextControl
							label='投稿IDを入力' //ラベルの表記を設定
							type='number' //inputタグのtypeを設定
							value={postID} //保存されている属性(投稿ID)を表示
							//入力された値を属性に登録する
							onChange={ ( newId ) => setAttributes({ postID: parseInt(newId) })}
						/>
					&lt;/div>
				}
				{/* falseの場合、プレビュー画面を表示 */}
				{ !isEditMode &amp;&amp;
					//ServerSideRenderコンポーネントを追加
					&lt;div class="previewMode">
						&lt;div class="previewTitle">プレビュー&lt;/div>
						&lt;ServerSideRender
							block={props.name} //ブロックの名前(識別子)を設定
							attributes={{
								postID: postID //保存されている属性(投稿ID)を表示
							}}
						/>
					&lt;/div>
				}

			&lt;/div>
		]
	);

編集モード

プレビューモード

まとめ

今回、プレビュー機能を追加することで、編集画面上でも実際の表示を確認ができるようになり、
使いやすくなったと思います。

ツールバーへのボタン追加もいろいろと応用できるかと思いますので、
ぜひ、参考にしていただければと思います。

ベトナム帰省

こんにちは、グリニッジのホアンです。
久しぶりにブログを更新しました。 
8月に約3年半ぶりのベトナムへ帰省しました。
今回はベトナム帰省での印象について共有させていただきます。

まずベトナムに入国する時、新型コロナウイルスのPCR検査やワクチン接種証明書などが不要なのでスムーズに入国できて、良かったです。
第一印象はコロナ前のように正常な生活が戻ってきて、町中でマスクをしていない人が多かったです。
ちなみに9月26日にはベトナム国内で感染者1432人が新たに確認されて、死者はいませんでした。

次に驚いたことは物価が上昇していることです。
ベトナムの通貨ドン(ベトナムドン、VNDとも言う)の為替レートは、1円=170ドンとなっています。(2022年9月26日現在)
下記は参考の値段です。
フォー(ベトナムの代表的な食べ物)(1杯)185~433円
ガソリン(1L) 148~155円
タバコ(マルボロ:1箱) 185~247円
卵(1個)19~31円
数年前ベトナムの物価はだいたい日本の物価の1/3だと思いましたが、段々日本に近づいてきました。
もちろん熱帯の国なので、野菜や果物などまだ安い物も沢山あります。

ベトナムの代表的な食べ物、フォー

成長するGrab(グラブ)

一方、生活面で、Grabのサービスに大きな展開がありました。
Grab(グラブ)とは、元々はマレーシアを拠点にサービスを開始し、東南アジア各国に拡大した自動車配車アプリですが、現在ベトナム生活に不可欠のサービスとなってきました。
当初は自動車配車サービスだけでしたが、現在バイク「Grab Bike」や食事の配達「Grab Food」やバイクで荷物を送る(Grab Delivery)など、様々な便利なサービスが出来てきました。
私も数回Grab Deliveryを利用してみましたが、距離はだいたい5kmぐらいで約250円。
すぐ荷物を送ってくれて、助かりました。

そして、3年半ぶりのホーチミン市も、新しい高いビルや橋などが出来ていて、経済が発展していることを感じました。

ランドマーク81、ベトナムで一番高いビル

ちなみに、英系ファンド運用会社ビナキャピタルにより、ベトナムの経済展望に対する楽観的な見方と、株価が今後上昇していくとの見通しを示し、2020年代のベトナム経済は、その後数十年にわたるグローバルバリューチェーンへのつながりを始めた1970年代日本経済との相似性があると評価しました。
なお、ベトナムの国内総生産(GDP)成長予測を大幅に上方修正しており、ベトナムは今年+8%の成長をすると期待する経済専門家も多いです。

ベトナムのオンラインショッピング

経済が発展しているし、若いものが多いし、インターネット利用者も多いため、オンラインショッピングの利用率が伸びています。
EC市場の22年売上高は+20%増の2.35兆円に達する見通しです。
調査により、ベトナムのインターネット利用者は人口の75%、インターネット利用者のうち74.8%がオンラインショッピングを利用しているそうです。
購入が最も多いのは、衣料品・履物・化粧品、家庭用品、IT・電子機器、書籍・花・ギフト、食品などで、注文に使用するデバイスは携帯電話が91%で最も多いです。

市場調査各社は、ベトナムのECは今後も引き続き成長し、2025年に390億USD(約5兆5800億円)規模に到達し、シンガポールと並んで、インドネシアの1040億USD(14兆8700億円)に次ぐASEAN2位になると予想しています。
今回、ベトナムに滞在した時、ベトナム大手通販サイトShopeeでオンラインショッピングを試してみて、スムーズに物を購入できました。

以上が今回のベトナム帰省で、私が感じた変化していることでした。
今後、ベトナムの発展を期待し、いつか弊社のサービスもインドネシアやベトナムなど東南アジア市場へ進出できたら良いなと思っています。