Next.jsにおけるレンダリング手法について

ちょぼちょぼですが個人的にNext.jsに触り始めたので今回はアウトプットとしてレンダリング手法について書いていきます。

目次

  • SSG (Static Site Generation)
  • SSR (Server Side Rendering)
  • ISR (Increment Static Regeneration)

SSG (Static Site Generation)

SSGではビルド時にgetStaticPropsという関数が呼ばれ、必要なデータをAPIサーバなどから取得しページを描画します。
描画結果が静的ファイルの形でビルド結果として保存され、クライアントからリクエストがあった場合にはこの生成済みの静的ファイルを返すのみなので初期描画が高速になります。
その後は普通のReactアプリケーション同様APIからデータを取得して動的に描画できます。

※ビルド時にデータの取得を行うので、初期描画で古いデータが表示される可能性があるため、リアルタイム性を求めるようなコンテンツにはあまり適しません。

SSR (Server Side Rendering)

SSRではアクセスがある度サーバーでSSR用の関数であるgetServerSidePropsという関数を呼び出し、データ取得を行います。取得結果のpropsを元にサーバー側でページをレンダリングしてクライアントに返します。
常に最新のデータを元にしてページの初期描画を行うため、リアルタイム性が必要なページではSSRが適しています。

※サーバー側で一定の処理があるため、他の手法と比べると低レイテンシになる可能性があります。

ISR (Increment Static Regeneration)

ISRでは事前にページを生成して配信しつつ、アクセスに応じてページを再度生成して新しいページを配信します。

ページにアクセスがあった場合SSGと似たように予めレンダリングしてあるページのデータをクライアントへ渡しますが、このデータに有効期限を設定できます。
有効期限が切れた状態でアクセスがあった場合、バックグラウンドでgetStaticProps関数の実行とレンダリングを行いサーバーに保存されているページデータを更新します。
その後決められた一定時間内はレンダリングは行われず、生成済みのページデータが返され続けます。このようにすることでサーバー負荷を低減させることができます。
一定時間後にアクセスがあった場合には再度getStaticProps関数が実行され新たなデータでページがレンダリングされます。

※有効期限が切れるだけでgetStaticPropsが実行されるわけではなく、有効期限が切れ、かつアクセスがあった場合にgetStaticPropsが実行され再レンダリングされるので、ある程度のアクセスがあるサービスでないと古いデータばかり表示されることになりかねません。

まとめ

他にもCSR(Crient Side Rendering)がありますがCSRは上記3つのいずれかと組み合わせながら使うことが多いと思うので今回は割愛させていただきました。

  • どんなデータを表示するのか
  • どのように使用するページなのか
  • リアルタイム性が必要なのか

など

考えながら適切なレンダリング手法を選択できるように引き続き学習を進めていきます。

※参考書籍

JavaによるAmazon、SP-API実装

SP-APIについて前回はとにかく動かしてみるというブログを書きましたが、こちらへのアクセス数がそれなりにあり需要がありそうなので、引き続きSP-APIについてブログを執筆したいと思います。

今回はJavaでのSP-API実装についてです。
アマゾンが提供するJava、SP-APIライブラリを利用すると認証部分が実装されているので、リフレッシュトークンさえあれば、アクセストークンの再取得を全く意識する必要がないためとても楽です。
逆にこれを利用しないで認証部分をスクラッチで作るとなると相当の開発コストがかかると思うのでJavaでSP-APIを利用する場合はアマゾンから提供されているライブラリ利用しましょう

JavaでのSP-API実装はSP-APIのマニュアル通りに進めれば、アマゾンが提供するSP-API、Javaライブラリの生成までは比較的簡単に行えます。
アマゾンのマニュアルにしては難易度低いなと思って進めていくと、やっぱりアマゾン、トラップあります。
相変わらずマニュアル通りに行っていくと動かない〜なぜだ〜、となりました。(泣
この記事を読んでいただいて、誰もがJavaプログラムでSP-APIを呼び出して実行できるようになっていただければと思います。

1.前提条件

この記事を進めるうえでの前提条件としてはJavaの知識がありライブラリを読み込ませて実行が行えること、WindowsPCでJavaが動作することが前提です。

2.SwaggerでのAmazon、SP-APIライブラリ生成

最初にSwaggerでのアマゾンライブラリの生成です。
Mavenでサクッとjarライブラリ取得ではなく、Swaggerでのライブラリ生成となるため、手間がかかります。
私自身Swaggerというのが今回初めてなので利点などはまったくわかっていませんが、Mavenでサクッとライブラリダウンロードできれば楽なのにと思うのですが、技術の進歩についてけてないだけかもしれません。
コード生成の方法はアマゾンのSP-APIのマニュアルの以下に記載されています。

https://developer-docs.amazon.com/amazon-shipping/docs/generating-a-java-sdk-with-lwa-token-exchange-and-authentication

マニュアルに記載されていますが、とりあえずこのようにやっていけばOKというのを以下に記載していきます。

 2-1. Swaggerダウンロード

ブラウザーに以下URLを張り付けてアマゾンSP-APIのライブラリを生成するために、swagger-codegen-cli-2.4.13.jarをダウンロードします。

https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar 

2-2. SP-API定義取得

次にSP-APIのライブラリを生成するために、定義になるモデルを取得します。
モデル一覧は以下マニュアルで確認できます。

https://developer-docs.amazon.com/sp-api/page/sp-api-models

アマゾンSP-APIのmodel自体はgitで取得可能

https://github.com/amzn/selling-partner-api-models/

git利用してない方は直接json取得してください。

2-3 . SP-SPI、Javaライブラリ生成

ここで取得したmodel、アマゾンSP-APIの定義データのjsonファイルを利用しSP-APIのJavaライブラリを生成します。

今回は注文情報取得をSP-APIで行ってみます。

Cドライブ直下に、SwaggerToCLと言う名前のフォルダーを作成し、上記でダウンロードしたjar、swagger-codegen-cli-2.4.13.jarを置き以下コマンドをコマンドプロンプトから実行します。

置き場所やフォルダー名変えた場合はコマンドを適時変更してください。

java -jar C:\SwaggerToCL\swagger-codegen-cli-2.4.13.jar generate -i C:\SwaggerToCL\ordersVO.json -l java -o C:\SwaggerToCL\ordersV0_JavaCL --api-package com.amazon.client --api-package com.amazon.client.orders_vo --model-package com.amazon.client.orders_vo

上記コマンドでは、C:\SwaggerToCL\ordersV0_JavaCLフォルダーにパッケージ名com.amazon.client.orders_voとしてordersVOのライブラリを生成しています。

以下に設定したパッケージ名でライブラリが生成されています。
C:\SwaggerToCL\ordersV0_JavaCL\src\main\java\

この生成されたライブラリをJavaで読み込んで利用します。

3.Java、SP-API認証ライブラリの生成(2023/09/14追記)

各API機能のライブラリは「2.SwaggerでのAmazon、SP-APIライブラリ生成」で作成されましたが、実際の認証を行う部分のライブラリは別途作成が必要です。
記載していなかったので追記しました。

以下gitからselling-partner-api-modelsをダウンロードして認証用のjarファイルを作成します。

https://github.com/amzn/selling-partner-api-models

gitからチェックアウトでも、zipでダウンとロードどちらでもOKです。
チェックアウト、もしくは展開した以下のフォルダに移動します。

C:\selling-partner-api-models-main\clients\sellingpartner-api-aa-java\

ここで「mvn package」コマンドを実行します。
コマンド実行により、同じフォルダにtargetフォルダが生成され、

sellingpartnerapi-aa-java-1.0.jar
sellingpartnerapi-aa-java-1.0-jar-with-dependencies.jar
の2つのjarファイルが生成されます。

sellingpartnerapi-aa-java-1.0-jar-with-dependencies.jarは依存関係のあるライブラリのclassも含まれるためこちらをライブラリに追加すればそのまま利用できます。

ただし自分の環境ではslack-apiと相性が悪いようでsellingpartnerapi-aa-java-1.0-jar-with-dependencies.jarを利用しmavenでwarを作ってtomcatにデプロイした場合にslack通知がエラーも出さずに処理が止まるという状態になってしまいました。
warではなく手動で配置したり、展開されたwarのライブラリだけ一旦別の場所にコピーして戻すと正常に動作したりと、中身がまったく一緒なのにmavenでwarにした場合だけslack-apiが動かなくなるという原因不明の問題が発生してしまいかなり嵌ってしまいました。
仕方が無いのでsellingpartnerapi-aa-java-1.0.jar利用として必要なライブラリは別途pomに追加でwarにしたところ問題なくslack-apiも動作するようになりました。原因は特定できませんでしたが、どうやらokhttp回りが問題を起こしているようです。

4.Java、SP-APIライブラリを使用して注文情報を取得してみる

今回生成されたのはordersVOということで注文関連のライブラリになります。

他の機能のSP-APIが利用したい場合は、2-2.で行った手順でそれぞれの機能が定義されているjsonを利用してswaggerのgenerateでコードを生成します。

では実際に生成したSP-APIの注文ライブラリを使用して注文を取得してみます。

今回のトラップポイントですが、認証部分をアマゾンのマニュアル通り書いてもエラーになりなぜか動きません。試せるだけ試して試行錯誤の結果動きました。ロール権限の設定とかでアマゾンのマニュアル通りで動くのかもしれませんが、よくわかりません。

注文取得ソースは以下です。

import com.amazon.SellingPartnerAPIAA.AWSAuthenticationCredentials;
import com.amazon.SellingPartnerAPIAA.LWAAuthorizationCredentials;
import com.amazon.client.ApiException;
import com.amazon.client.orders_vo.GetOrdersResponse;
import com.amazon.client.orders_vo.Order;
import com.amazon.client.orders_vo.OrderList;
import com.amazon.client.orders_vo.OrdersV0Api;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import org.json.JSONObject;

/**
 * Amazon、SP-API受注取得
 *
 */
public class AmazonSpAPIGetOrder {

  public static String END_POINT = "https://api.amazon.com/auth/o2/token"; // SP-APIのエンドポイント、規定値
  public static String MAKET_PLACE_ID = "A1VC38T7YXB528"; // 日本だとこの値
  public static String REGION = "us-west-2"; // 日本だとこの値

  // リフレッシュトークン: Amazonの新しいAPI、SP-APIをとにかく動かしてみる 3-5. のリフレッシュトークン値
  public static String REFLESH_TOKEN = "Atzr|IwEBIABHaXRPj86Ei3xPolpsRT*************************************************************************************************************************************************************************************************************************************************************************************************************";// IAM
  // クライアントID: Amazonの新しいAPI、SP-APIをとにかく動かしてみる 3-7. のクライアントIDの値
  public static String CLIENT_ID = "amzn1.application-oa2-client.********************************";
  // クライアント機密情報: Amazonの新しいAPI、SP-APIをとにかく動かしてみる 3-5. のクライアント機密情報の値
  public static String CLIENT_SECRET = "e97cd855********************************************************";

  // アクセスキーID: Amazonの新しいAPI、SP-APIをとにかく動かしてみる 1-6. アクセスキーIDの値
  public static String ACCESS_KEY = "AKIA6***************";
  // シークレットアクセスキー: Amazonの新しいAPI、SP-APIをとにかく動かしてみる 1-6. シークレットアクセスキーの値
  public static String SECRET_ID = "Zuh069DUjSU/****************************";


  public static void main(String [] args) {

    getOrder();
  }


  /**
   * 受注取得
   *
   */
  private static void getOrder() {

    try {

      // 認証処理、認証処理は全てのSP-API呼び脱しで共通
      AWSAuthenticationCredentials awsAuthenticationCredentials = AWSAuthenticationCredentials.builder()
                                                                  .accessKeyId(ACCESS_KEY)
                                                                  .secretKey(SECRET_ID)
                                                                  .region(REGION)
                                                                  .build();

      LWAAuthorizationCredentials lwaAuthorizationCredentials = LWAAuthorizationCredentials.builder()
          .clientId(CLIENT_ID)
          .clientSecret(CLIENT_SECRET)
          .refreshToken(REFLESH_TOKEN)
          .endpoint(END_POINT)
          .build();

/*
      // SP-APIマニュアルに記載のロールとかwithScopesとか設定して試してみたが動かない。
      AWSAuthenticationCredentialsProvider awsAuthenticationCredentialsProvider = AWSAuthenticationCredentialsProvider.builder()
                                                                                  .roleArn("arn:aws:iam::649319782322:user/sp-api") // IAM/セラーセントラル
                                                                                  .roleSessionName("123123123")
                                                                                  .build();

      LWAAuthorizationCredentials lwaAuthorizationCredentials = LWAAuthorizationCredentials.builder()
                                                                .clientId(CLIENT_ID)
                                                                .clientSecret(CLIENT_SECRET)
                                                                .withScopes(SCOPE_NOTIFICATIONS_API, SCOPE_MIGRATION_API)
                                                                .endpoint(END_POINT) // 日本
                                                                .build();
*/



      // 受注取得処理
      List<String> marketplaceIds = new ArrayList<String>();
      marketplaceIds.add(MAKET_PLACE_ID);

      OrdersV0Api ordersApi = new OrdersV0Api.Builder()
          .awsAuthenticationCredentials(awsAuthenticationCredentials)
          .lwaAuthorizationCredentials(lwaAuthorizationCredentials)
          .endpoint("https://sellingpartnerapi-fe.amazon.com")
          .build();

      List<String> orderStatuses = new ArrayList<String>();


      String lastUpdateAfter = "2023-02-25 14:14:00";
      SimpleDateFormat format = new SimpleDateFormat();
      format.applyPattern("yyyy-MM-dd HH:mm:ss");
      Date date = format.parse(lastUpdateAfter);

      // 日付フォーマットをSP-APIに合わせる
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");
      sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
      String tempLastUpdatedAfter = sdf.format(date.getTime());

      // 受注リスト取得
      GetOrdersResponse respOrders = ordersApi.getOrders(marketplaceIds, "", null, tempLastUpdatedAfter, "", orderStatuses, null, null, "", "", 100, null, "", null, "", false, "");
      OrderList orderList = respOrders.getPayload().getOrders();

      for (Order order: orderList) {

        System.out.println(order.getAmazonOrderId());
        System.out.println(order.getLastUpdateDate());
      }

    } catch (ApiException e) {
      // SP-APIのエラー情報はApiExceptionで返却される
      e.printStackTrace();

      String code = "";
      String message = "";
      try {

        JSONObject jsonObject = new JSONObject(e.getResponseBody());
        JSONObject error = jsonObject.getJSONArray("errors").getJSONObject(0);
        code = error.getString("code");
        message = error.getString("message");
        System.out.println("code=" + code);
        System.out.println("message=" + message);

      } catch (Exception ee) {
        ee.printStackTrace();
      }

    } catch (Exception e) {
      e.printStackTrace();
    }

  }

}

Eclipseなどで、生成したSP-APIライブラリを取り込んで、認証情報の値を適時変更してもらって、動作させれば、注文の取得が行えます。

少しでもSP-APIで困ってる人のお役に立てれば幸いです。

 

関連記事
Amazonの新しいAPI、SP-APIをとにかく動かしてみる

何のために行う仕事なのか?を常に意識する

昨年の夏に、グロービスのクリティカル・シンキングを受講いたしました。
たいへん大きな学びとなり、仕事にも生かすことができています。

それと同時に、改善点が見つかってきました。
目の前のタスクのことしか見えていなくて、タスクができた意味も考えずに言われた通りに修正をおこなう・・・。
もっと視野を広げる必要があると感じました。

今回、望月安迪著『戦略コンサルタントが大事にしている目的ドリブンの思考法』を読みました。

タイトルが気になって書店で手に取りました。

コンサルタントは、クリティカル・シンキングに長けていると考え、どのように思考し、業務に生かしているのか気になったからです。
実際に読んでみて、グロービスで学んだことと同じ考えが書いてありました。
目的ドリブンとありますが、大きな目的だけではなく、すぐに目の前のタスクに生かせそうなことも学びになりました。

その中から、仕事に今すぐ生かしてみたい!と強く思った2点を紹介いたします。

何のためにやっているのか

視野が狭くなる、開発なので開発関係のことしか気にしないでタスクを進めてしまうことの原因は、何のためにその仕事をやっているかという意識が足りなかったからでした。

何のためにやっているのか、について語る章に説得力があると感じたのは、議事録の作成ひとつにも言及していたからです。

たとえば、"何のために"議事録を作成するのか。それは、会議に出た人あるいは出ていない人がその会議の討議内容、決定事項、アクションを確認し、共通認識を得るためだ。
そのことを理解していれば、会議の決定事項やアクション事項を議事録の最上部に持ってくる、討議の内容も大きな話題から詳細な話題に階層化して書き分ける、といった対処ができるようになる。

望月安迪著『戦略コンサルタントが大事にしている目的ドリブンの思考法』

進む会議を追いかけるのに必死で、会議の内容を丸写しな、不要な情報も書かれた自分の議事録はたいへん読みにくかったです。
議事録作成はかなりの頻度で起こるタスクですが、それにもこの本で学んだことを生かすことができますね。

問題の見極め方

該当の章は、最小の労力で最大の成果を出すために、まず問題を見極めることについて解説しています。

・実際に動き出してみると手元の作業は進むので、それにどんどんのめり込む
・「何のためにやってるんだっけ」という思いがふと頭をかすめても、今さらもうやめられない

望月安迪著『戦略コンサルタントが大事にしている目的ドリブンの思考法』

このような経験が多くあったので、ここで語られたことは身に染みました。

テストで、この問題は何をきいているのか線をひいて確認するようにとよく言われたと思います。
解答が質問からずれていると、配点がもらえません。
そして、この章では、アインシュタインの言葉「もし私がある問題を解決するのに1時間を与えられ、それが人生を変えるような大問題だとすると、そのうち55分は自分が正しい問いに答えているかどうかを確認することに費やすだろう」と、紹介されています。

テストと同じように、問題が何なのかを正しく理解することが仕事においても重要です。
クリティカル・シンキングでも、データが増えて情報が増えていくなかで、何度も質問にたちかえって考えていました。
この分析結果は、質問への答えになっているか?と何度も確認していました。

仕事には、早さと、問題に対しての正しさが求められます
スピードが早くても、結果、完成したものが目的とはずれていたら成果にはなりません。

さいごに

社会人3年目に入る今、このようなビジネス書を読んでよかったと感じています。

今回ブログで書いたことのように、全ての社会人に通じることも書いてあれば、コンサルタントとしての業務についても書いてありました。
目的があるから、目的と現状のギャップがあり、そのギャップが問題になる。
そこを埋められるようなお手伝いをしているそうです。

自分が何のために目の前の仕事を行っているか、意識するのは重要なことです。
しかし、慣れてきてスピードを求めるとついおろそかになってしまいます

定期的に読み返して、よりよいものを提供できるように業務をこなしていきたいですね。

こころとからだを大切に

最近、メンタルヘルスという言葉をよく聞くようになりました。
現代社会はストレス社会といわれていますし、みなさんの職場でも社員のメンタルヘルスケアに取り組まれているのではないでしょうか。
弊社も社内外にメンタルヘルスの相談窓口を設置し、昨年は社員のメンタルヘルスチェックを実施しました。

日頃から誰でも不安になったり、落ち込んだりしますよね。
家族や友人に話を聞いてもらったり、趣味を楽しむことでストレス発散したり、すぐに気持ちを切り替えることができる方は良いのですが、簡単に解決できない悩みもありますし、気持ちを切り替えられずにもっと悪い方向に思い悩んでしまう…ということもあると思います。

そこで、今回は下記の書籍を参考にさせていただき、メンタルヘルスケアのセルフケアについてお伝えしたいと思います。

ストレスのメカニズム

日常生活の中で起こった出来事から受ける刺激をストレッサー
それに対する心身のゆがみをストレス反応
この一連のメカニズムをストレスと呼びます。

■ストレッサーの種類
生活環境ストレッサー:人間関係のトラブルや環境の変化など、日々の出来事
外傷性ストレッサー:災害や事故、家族の死といった衝撃的な経験
心理的ストレッサー:物事を後ろ向きに捉えてしまい、それが不安や悩みへと変わっていく

■ストレス反応の種類
心理的反応:不安・恐怖心・怒りが募りイライラしてしまったり、集中力・思考力・判断力が低下する
行動的反応:怒りが爆発する・涙が出る・暴飲暴食など、ストレスが行動に表れる
身体的反応:嘔吐・下痢・睡眠障害などの体調不良

人によってストレスを感じる場面はさまざまですが、みなさんも一度は経験したことのある症状だと思います。
ストレスを感じている時、まずは自分自身のこころとからだの状態を確認してあげましょう。
自分が気付いていない小さなサインが、からだから出ているかもしれません。

感情を落ち着かせる生活習慣

日頃からストレスを感じている方にオススメの、誰でも簡単にできる感情を落ち着かせる生活習慣をご紹介します。

■10分程度の仮眠でリフレッシュ
お昼休憩に10分程度の仮眠をとることで、気分がリフレッシュされ、仕事の効率もアップするといわれています。
短時間の仮眠はパワーナップ(積極的仮眠)と呼ばれ、感情の揺らぎが落ち着き、気持ちが安定する効果が見込めるそうです。

企業でも仮眠時間をとる取り組みをしているところもあるので、実践したことがある方も多いのではないでしょうか?

実は私も実践しています。
毎日ではなく、午前中の業務で頭がパンクしそうになった時に気持ちを落ち着かせるため、お昼休憩の時間を利用して、10分程度の仮眠をとっています。
昼寝をしたらダラダラしてしまいそうと思ってしまいますが、「午後も気合を入れてやるぞ!」と気持ちと頭を切り替えることができています。

まだやったことがない方は試してみてはいかがでしょうか。
ただし効果があるのは「仮眠」なので、座ったままの状態やデスクに伏せたりするようにして、深い眠りにならないように気をつけてくださいね!

■マインドフルネス
マインドフルネスとは、後ろ向きな気持ちになってしまったときに、気持ちを再起させるために効果的とされている呼吸法です。
このマインドフルネスはただ深呼吸するのではなく、「今、この瞬間を大切にする生き方」に意識を向ける呼吸法で、心療内科でも取り入れられているそうです。

ではさっそくやってみましょう!
1.お腹が膨らむように鼻からゆっくりと空気を吸い込みます。
2.鼻からゆっくりと空気を吐き出します。

この時、鼻から空気が入ってくる感覚、空気の温度や動きに集中することで、心がやすらぎ、前向きな気持ちになります。


この他にも簡単にできる方法がいろいろと紹介されていますので、最近落ち込むことがあり気持ちをリセットさせたい、メンタルヘルスケアに興味があるという方には、今回ご紹介した書籍を読んでいろいろ試していただきたいと思います。

とはいえ、自分自身でできることは限られます。
ちょっとしたメンタルの不調が、自分では気づかないうちに重症化してしまうということもありますので、そうならないように自分でも気にしつつ、専門のクリニックで先生に相談してみることも大切です。

楽天新春カンファレンス2023に出展いたしました

先月1月26日に、楽天新春カンファレンス2023が品川で開催され、多数の楽天店舗様が来場されました。

弊社は楽天新春カンファレンス2023に協賛しており、RMSサービススクエアパートナー企業協賛ブースに出展いたしました。
ブースでは、前年と同様にらくらくーぽんをメインにらくらく在庫など、弊社サービスのご紹介、ご案内をさせて頂きました。

前年の経験を活かし店舗様とお話ができるようブースを設置し、サービスをご利用いただいている店舗様や、気になっている、とお声がけいただいた店舗様など、前年に比べさらに多くの店舗様とお話しすることができました。
また、サービス利用時に弊社社員のサポートがよかった、などのお声も聞くことができ、大変うれしく思っております。

今回は多数の社員を交代制でブースに立つことで多くの社員が普段なかなか聞くことのできない、サービスご利用者様や、楽天店舗様のお話を直接聞くことができ、社員一同にとっても、大変いい機会となりました。

今回の出展で各自感じたことや、いただいたご意見を元に更なる各サービス向上を目指し、より良いサービスの提供を目標にいたします。

また店舗様と直接お顔を見て話が出来る機会を増やしていければと思いますので、その際は是非お気軽にお声がけください。

タイピングスピード向上のために

こんにちは、白久です。
寒さが続いていますが、いかがお過ごしでしょうか。
寒さが苦手な私は、早く冬が終わってほしい今日この頃です。

さて、みなさんは仕事をしているとき、「もっと仕事の効率を高めたい…!」
と思うことはありませんか?

わたしは仕事の効率を上げる近道はタイピングスピードを速くすることだと考えています。
そこで今回はそんな私がタイピングスピードを上げるために、心掛けていることを紹介しようと思います。

目次は下記のとおりです。

打ちやすいキーボードを使用する

自分好みのキーボードを使用できるかどうかは環境にもよるかもしれないですが、
打ちやすいキーボードを用意することは家庭菜園で良い土を用意するぐらい重要なので(?)
可能であればある程度こだわることをおすすめします。

必ずしも高級なキーボードである必要はありません。
自分はどのようなキーボードであれば快適にタイピングができるか、把握しておきましょう。

個人的には無線でテンキーがついているメンブレン式(ラバーカップ型)キーボードが好みです。
その他、HomeキーやEndキーは独立して存在しているか、ctrlキーはどこにあるか、などのキーボードの配列についても重視しています。

キーボードの選び方についてはエレコムさんの記事がおすすめです。

▼キーボードはどんな種類がある?最適なキーボードのおすすめの選び方
https://www.elecom.co.jp/pickup/contents/00056/basic01/

ホームポジション(キーボードの配置)を覚える

キーボード選びができたら、タイピング練習サイトなどを利用して、
キーボードを全く見なくても文字を打ち続けることができるぐらい、
ホームポジションを覚えるようにしましょう。

ちなみにタイピング練習をする際は、下記を意識するといいそうです。

  1. 母音のタイピング練習から行う。
    • この際、「う、え、い、あ、お」の順番で入力すると、素早く入力できます。
  2. 子音のタイピング練習を行う
    • 打ちやすい指から覚えるとモチベーションが下がらないので、
      人差し指の入力エリア→中指→薬指→小指の順番で覚える

最初はゆっくりでもいいので、まずはキーボードを見ずにタイピングすることを意識しましょう。
キーボードを見ながらのタイピングと比較すると最初はどうしてもスピードは落ちてしまうため、
キーボードを見ながらタイピングすることに慣れている方は特にもどかしさがあるかもしれません。

しかし、キーボードを見ながらタイピングしていては、こえられない壁があるのです。

キーボードではなく、パソコンの画面を見ましょう。

私がタイピング練習をはじめたのは小学生の頃ですが、最初はタッチタイピングができず、好きだったボブ・サップが出演しているタイピング練習のソフトで夢中でタイピング練習をしておりました。

※画像はイメージです

当時、親には「パソコンを触るのは1時間まで!!」と、よく怒られましたが、
今ではこうやって仕事に役立てることができているので、許してほしいと思っています。

さすがにもうそのタイピング練習のソフトは使えないと思うので、
いま練習するのであれば下記のタイピング練習サイトがおすすめです。

おすすめのタイピング練習サイト

マイタイピング:https://typing.twi1.me/
→さまざまな種類のタイピング練習があります。
 ひたすら「あ、い、う、え、お」だけを打つページや、
 それぞれの指の特訓ページもあるので、レベルに合わせた練習ができる点がおすすめです。

寿司打:https://sushida.net/
→流れるお寿司をタイピングで捕獲し、いっぱい食べるゲームです。
 単語の入力がほとんどなので初心者の方にもおすすめです。

入力が面倒なローマ字は使用しない

例えば「つ」「し」「ち」を打つとき、「tsu」「shi」「chi」と入力していませんか?

少しの違いではありますが、この1キーの入力を削減するだけでも積もり積もると地味に効果を実感します。
今日から「tu」「si」「ti」と入力しましょう。

ホームポジションにとらわれない

もちろん、ホームポジションが基本の基本ではありますが、
文字を打つ指はそのシチュエーションによって変えてもいいと思っています。

例えば、弊社のサービスである”らくらくーぽん“の”らくらく”ですが、
通常のホームポジションであれば下記のように打つと思います。

しかし、これだと「ku」と打つ際に中指と人差し指が苦しくないでしょうか?

そのため私は「k」→薬指、「u」→中指で打つようにしています。

また、“ふた”と打つ際はどうでしょうか。
通常はこのように入力すると思います。

これだと人差し指を2回連続で使うこととなり、人によっては少しタイピングしづらく感じます。
そこで「u」を人差し指ではなく中指で打つとさらに早く入力できます。

もしくは「ふ」と打つ際は「」ではなく、「」を使うようにするのも良いですね。

このように、ホームポジションにとらわれすぎず、
打ちにくいと感じる単語はホームポジションを崩して入力すると
速さの限界突破ができるのでおすすめです。

基本のホームポジションがアルファベットごとで指の配置を決めているのに対して、
こちらは単語やひらがなごとにホームポジションを決めるようなイメージです。

なお、自分流のホームポジションで打った際も、
その単語を入力した後はホームポジションに戻るようにしましょう。

まとめ

以上、タイピングスピード向上のために心がけていることでした。

少し変化球の提案にはなりますが、
スピード向上のためには他にもいろいろな策があります。

  • 街中でみる看板の文字や、聞こえてくる音楽の歌詞をエアタイピングして練習をする
  • 複数キーを同時に打つ
  • キー配置を自分の好みに変更する

等々…

タイピングスピードを上げるのは地道な努力が必要なので大変ではありますが、
パソコンを使用する仕事をしている方であれば必ず役に立つスキルなので
時間を見つけて練習してみてはいかがでしょうか。

シンプルに考える

こんにちは、グリニッジの塚部です。 下の子(2才男の子)が最近マイクのおもちゃを持ち、おかあさんといっしょのお兄さんお姉さんのマネをしたり、歌を歌ったりして、最後に「ハクシュちて」と拍手を頻繁に求められるという日々を過ごしております。

タイトルをシンプルに考えるとしておきながら、シンプルに考えるのはむずかしいですよね。自分も日々モヤモヤしたり、迷ったりしてますが、そういう時に立ち返る考え方を本日はご紹介いたします。

①やってよかったことを続ける

何かアクションを起こすと結果が出ると思います。良い結果か悪い結果か、どちらでもないなぁみたいなことも現実では多いかもしれませんが、何かしらの結果はでるはずです。

筋トレでもダイエットでもなんでもいいですが、ジムに通ったり、食事を変えてみたり、その結果、おっ結果でてるじゃんという場合は続けるということです。

②やってよくなかったことはやめる

①の反対ですが、アクションを起こした結果、あまり良い結果が出なかった。どうもシックリきていない。そんなときはやめましょう。

色んなしがらみから、そんな簡単にスパッとやめられらないということも多いかもしれませんが、やってみてよくなかったと感じていることを続ける方がネガティブであり、マイナス行為なので、どうしたらやめられるかを考えて、そのために動いていきましょう。

自分だけのことであれば、すぐに動けてもチームで動いたりするとむずかしいですよね。しかし、そこは勇気のみせどころなので、先陣を切ってやめる方向で。

③新しいことを始める

やってよかったことは続けて、よくなかったことはやめて、その次は新しいことを始めるです。

今やっていることで上手くいかない時は、新しいことを始めるという選択肢しかないわけなので、①と②のチェックが終わったら、新しいことを始めてみましょう。

新しく始めたことも、いずれは続けるか、やめるかのどちらかになるので、この3つをシンプルに回すことが大切です。

まとめ

複雑に考えたりするときは、シンプルにこの3つに少し強引にでも当てはめてみましょう。

実はやめないといけないと分かっているけどやめられないということが多いのかなと思います。

そんな時は、何がボトルネックになっているのかを考えて、それを取り除くことに注力する。

言うは易く行うは難しですが、自分もシンプル考えて行動していきたいと思います。

ベトナムのテト

日本人にとって、一年で一番大切な行事はお正月でしょうか。
ベトナムでは、新暦の正月も祝いますが、ベトナム人にとって旧暦(太陰暦)の正月が一番大切な行事です。ベトナムの旧正月のことを「テト」といいます。今年のテトは1月22日になります。
ちなみにベトナムにも、十二支があります。しかし、日本や中国とは少し違って、今年はうさぎではなく猫の年です。
今回の記事では、ベトナムのテトの様子を伝えたいと思います。

1. テト前の準備

1.1 家の掃除

日本の年末大掃除と同様です。
旧年の不運はゴミや汚い物と一緒に捨てて、新鮮な環境にすることで、新年の幸運を迎えられると言われています。

テトの飾りものを売るお店

1.2 忘年会

お正月の前に、日本のような忘年会もあります。日本の忘年会は、友人や職場の人と集うイメージがありますが、ベトナムでは家族や親戚が集うイメージです。
ベトナム人はどこにいても、テト前の忘年会には帰省したいと思っています。

1.3 花を飾る

テトでは家に花を飾ります。北部ではピンクの桃の花が、中部と南部では黄色のマイという花が代表的です。また、この時期はベトナム各地で花市が開催され、街中が花を買う人や売る人であふれかえります。

ピンクの桃の花
マイという花
花市

2.テトによく食べる料理

地方により、料理が違いますが、一般的にどの家庭でも食べられているおせち料理は下記のものです。

2.1 バン・チュン (Bánh Chưng)・バン・テット(Bánh Tét)

ベトナムの代表的な「おせち料理」は北部の四角いバンチュンと南部の円筒状の包まれるバンテットです。どちらももち米、緑豆、豚肉から作られ、バナナの木の葉に包んで、サイズによって3時間から12時間ゆっくり煮込みます。

バン・チュン (Bánh Chưng)・バン・テット(Bánh Tét)

2.2 卵と豚角煮(Thịt kho trứng)

豚肉と卵を一緒にじっくり煮込むことで、中まで味が染み込むのがこの料理の特徴です。
お正月以外でもよく作られる料理ですが、テトの「おせち料理」として特に南部の方は欠かせない一品です。
他には、「揚げ春巻き」(nem rán)、「おこわ」(xôi)、「ハム」(giò)もテトによく食べられる料理です。

卵と豚角煮

3.テトの過ごし方

大晦日の夜、日本は紅白歌合戦番組がありますが、ベトナムでは毎年放送している喜劇番組があります。喜劇の内容は一年の振り返りをして、新年を迎える内容です。
尚、先祖が家族と一緒にテトを楽しむために、大晦日に先祖を迎える儀式を行い、3日に天国に送ります。
また、ベトナムにも「初詣」という習慣があります。近くのお寺に行って、一年の健康や仕事や運気など様々なことを祈ります。

一年の健康や仕事や運気など様々なことを祈ります


テト元旦には、家族にお年玉をあげたり、お祝いの言葉を伝えます。また、親戚の家族や知り合いの家族に「挨拶まわり」の習慣があり、親戚が多い人は一日10軒以上挨拶まわりをすることもあります。

お年玉

4.最後に

ベトナムのテトについて、ご紹介しました。日本との共通点が多いと思います。
今後もベトナムのことについて、またご紹介したいと思います。

スキマ時間のインプットに最適な注目の音声コンテンツ!

ワーキングマザーとして、ワークライフバランスを考えながら暮らしを整える日々です。

しかし、仕事、家事、育児をしながら自分のインプットの時間となると、どうしても後回しになってしまいます。

そんな時、家事や子どもの習い事の送迎・待ち時間の合間などに、BGMのような音声であれば、気軽に聴きやすく有効に時間を活用できます。

今回は、ちょっとしたスキマ時間のインプットにおすすめの音声コンテンツについてご紹介します。

【音声コンテンツのVoicy(ボイシー)とは?】

私が、スキマ時間に聴いてる音声コンテンツのおすすめはVoicyボイシーです。

厳正に審査されたパーソナリティがチャンネルを持つことができます。

さまざまなジャンル・カテゴリーで音声配信されている音声コンテンツのプラットフォームです。

ビジネス・ライフスタイル・ハウツー・エンタメ・スポーツなど幅広く飽きずに聴くことができます。

その時しか聴くことができない生放送、ゲストを招いての合同放送、ボイシーフェスなどなど、楽しめる企画が盛り込まれています。

【おすすめのVoicyパーソナリティ3選!】

学びの引き出しはるラジオ 
(oishi haru / 尾石晴)

広島で同郷、同年代のワーキングマザーのはるさん。キャリア、ライフハック、子育て、夫婦関係、共働きなどのモヤモヤを一つ一つ分解して深掘りしていきます。

ポイントも分かりやすく話されているので、いつも聴き終わるころには、頭の中が整理されてすっきりし、新しい考え方がすっとインプットされたような気持ちです。

3回に1回くらいの頻度で通常放送では語れない本音の話をプレミアム放送で配信されています。

Voicy社長の頭の中 
(緒方憲太郎 Voicy社長)

もともと、コロナ渦で流行したClubhouse(招待制の音声SNS)で緒方社長を知りました。

音声産業を盛り上げていこうという想いをきいたことが、Voicyリスナーになるきっかけでした。

社長が自ら生放送などで質問箱に寄せられた内容に回答しています。

他にもいくつかチャンネルがあり「道に迷えばオモロい方へ」の語り口調もリスナーさんから親近感を持たれているのではないかなと思います。

ちょっと差がつくビジネスサプリ 
(グロービス経営大学)

国内で最大級のビジネススクールのグロービス経営大学院では、曜日ごとに決まった放送時間でテーマに沿ったトピックが配信されています。

ビジネススキルのレベルアップ、将来的なキャリアを考えながら向き合えるような番組です。

また、グロービスで講師をされていた方が別のチャンネルでパーソナリティとして配信されていたりもします。

【プレミアムリスナーになると限定放送も聴くことができる】

基本的に、Voicyは無料で聴くことができます。さらに、有料でプレミアムリスナーとしてパーソナリティの限定放送も聴くことができます。

対象のパーソナリティのプレミアムリスナーになるためには、WEB購入かアプリ購入する方法があります。

その際、アプリ購入だとAppleやGoogleの手数料があり少しだけ割高になってしまうためWEB購入がおすすめです。

【まとめ】

知りたくても知ることができなかった遠くの人のことも、音声だとより親近感を持てたり、つながりを広げていくことができるかもしれません。

厳選されたパーソナリティさんの配信だからこそ、有益になる情報がぎゅっと凝縮されています。

ちょっとしたスキマ時間を活用できるので、ぜひ気軽に聴いてみてください。

何か新しい自分の気付き、考えていたことのヒントになればと思います。

楽天新スマホトップ 簡単作成術

楽天市場でショップ運営をされている皆さん、新スマホトップページへの対応はお済でしょうか?

やらないとけないけど、日常業務が忙しくて対応できてない。
どうしたらいいのか分からず、ついつい後回しにしてしまってる。

などなど、いろいろな理由で対応できていないショップ様も多いかと思います。
今回は、そんなに手を加えなくても新スマホトップページを作成するテクニックをご紹介したいと思います。

新スマホトップとは?

そもそも新スマホトップって、何?って方もいるかと思いますので、
簡単に概要をご説明したいと思います。

全店舗のトップページ上部の統一

全店舗のトップページ上部の構造を統一し、ユーザーが知りたい情報を一目でご確認することができ、ページ回遊率の向上も見込めます。

パーツを組み合わせて店舗の個性を表現

用意されているさまざまなパーツを組み合わせて店舗の個性を表現できます。

Web制作の専門知識の必要なし UIで簡単設定

Webページの作成に必要HTMLやCSSの専門知識なしで自由にレイアウト変更ができます。

アプリ用ページ/スマホ用ページを一括更新

作成したページはアプリ用とスマホ用の両方のトップページに反映されます。

新スマホトップページ移行期限

新スマホトップページへの切り替え期日は、2023年2月10日(金)です。
※延長される可能性もあります。

期限内に移行されなかった場合は、2023年2月14日(火)の早朝に強制移行されます。

新スマホトップページの作成

新スマホトップページの作成は、用意されているさまざまなパーツを追加して作成していきます。

パーツには、大きく分けて2種類のパーツがあります。

  • 簡単な表示設定をするだけのパーツ
  • 表示設定の他に画像、リンクURL、テキストなどの設定が必要なパーツ

「簡単な表示設定をするだけのパーツ」だけを使用して簡単にページを作成します。
このパーツだけでも十分な見栄えのページになります。

そのパーツをご紹介します。

大バナー(共通テンプレート)

共通テンプレートの大バナーを表示します。
※大バナーの設定がされている必要があります。

小バナー(共通テンプレート)

共通テンプレートの小バナーを表示します。
※小バナーの設定がされている必要があります。

目玉商品(共通テンプレート)

共通テンプレートの目玉商品を表示します。
※目玉商品の設定がされている必要があります

店舗内ランキング

店舗内ランキングを表示します。

商品レビュー

商品レビューを表示します。

商品(おすすめ)

お客様の購入履歴、閲覧履歴から店舗内のおすすめ商品を自動表示します。

これらのパーツを追加して表示設定をし、反映して完了です。
実際の表示がこちらです。

新スマホトップ キャプチャー

とても簡単にスマホトップページを作成することができました。
お時間に余裕のある方は、さらにいろいろなパーツを試してみてください

楽天GOLDで作成したスマホトップを活用

現在、楽天GOLDでスマホトップを作成しているショップに限るのですが、
楽天GOLDスマホトップを引き続き活用できます。

新スマホトップページに「リンク」パーツや「大画像」パーツを使用して、
楽天GOLDのスマホトップページへのリンクを設定し、誘導するだけです。


※楽天GOLDのスマホトップページのファイル名をindex_sp.htmlから任意のファイル名に変更する必要があります。

楽天GOLD上のファイルは、引き続きウルトラASPの使用が可能で、手間もかからないので、
楽天GOLDでスマホトップを作成しているショップは、こちらをおすすめします。

※今後、仕様変更に伴い、楽天GOLDが使用できなる可能性があります。

注意点

新スマホトップページを1度反映してしまうと、現在のスマホトップに戻すことはできませんので、反映の際は、ご注意ください。
※反映せず、編集内容を保存しておくことは可能です。

まとめ

ご紹介した通り、新スマホトップページへの移行は、やり方次第では簡単に作成できます。

今回ご紹介したパーツ以外にもまだまだたくさんのパーツがあります。
作りこむことも可能ですので、ぜひ、試してみてください。

新スマホトップページの作成でお困りごとがありましたら、お気軽にご連絡をお願いします。

紹介したサービス