React19で追加されたフックを見てみたぞ!

導入

React 19のベータ版ががリリースされました。数ある新機能の中で追加されたuseTransitionuseActionStateでは、データ管理がさらに簡単になりました。この記事では、これらの新機能がどのように役立つかを見ていこうと思います。

React 19の概要

今回のリリースでは、非同期トランジションのサポート、楽観的UI更新の簡略化、新しいフックの導入など、開発者の利便性を高めるさまざまな改善が施されている模様。

useTransitionの詳細

useTransitionは、非同期UIトランジションを簡単に実装できるフックです。例えば、フォームの送信中にスピナーを表示するなど、ユーザー体験を向上させるために役立ちます。

実装例

import { useTransition, useState } from 'react';

function App() {
  const [isPending, startTransition] = useTransition();
  const [inputValue, setInputValue] = useState('');

  const handleChange = (e) => {
    startTransition(() => {
      setInputValue(e.target.value);
    });
  };

  return (
    <div>
      <input type="text" onChange={handleChange} />
      {isPending ? <span>Loading...</span> : <span>{inputValue}</span>}
    </div>
  );
}

このように、useTransitionを使うことで、非同期操作中の状態を簡単に管理できます。

ただこれについてはreact tanstack queryを使っている場合は「isLoading」などが使えるので不要かと思います。しかし、こういった機能が純正のReactに追加されるのは地味に嬉しいです。

useActionStateの詳細

続いて、useActionStateについてです。このフックは、アクションの状態管理をシンプルにします。たとえば、フォームの送信状態やエラーメッセージの管理が簡単になります。

実装例

import { useActionState } from 'react';

function Form() {
  const [state, setState] = useActionState({
    isSubmitting: false,
    error: null,
  });

  const handleSubmit = async (event) => {
    event.preventDefault();
    setState({ isSubmitting: true, error: null });
    try {
      // フォーム送信ロジック
    } catch (error) {
      setState({ error });
    } finally {
      setState({ isSubmitting: false });
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <button type="submit" disabled={state.isSubmitting}>Submit</button>
      {state.error && <p>Error: {state.error.message}</p>}
    </form>
  );
}

このように、useActionStateを活用することで、アクションの状態管理が非常にシンプルになります。 ただし、こちらもReact Hook Formの機能でもカバーできる部分があります。React Hook FormのuseFormformStatesetErrorclearErrorsなどですかねー。

まとめ

ここまでで、React 19の新機能であるuseTransitionuseActionStateについて見てきました。 React 19の新しい機能は特定のユースケースで役立ちますが、既存のライブラリを活用することで同様の効果を得ることが可能なんでこれらをすでに使っている場合は参考程度に見ておくのが良いかもしれませんねー

参考

ja.react.dev

tanstack.com

react-hook-form.com

ジョブクラフティングとは?

「人生が充実する」時間のつかい方 UCLAのMBA教授が教える“いつも時間に追われる自分”をやめるメソッド

「人生が充実する」時間のつかい方という本を読みました。著者はUCLAアンダーソンスクールオブマネジメント教授のキャシー・ホームズさん。 この本は「有意義な時間を過ごすには?」という疑問に科学的な知見を通して答えてくれる本ですが、その中で仕事の満足度の上げ方について書かれている箇所で「ジョブクラフティング」が紹介されておりました。 私自身「ジョブクラフティング」に関する書籍や記事をいくつか読んできましたが、この本を読んで「やっぱり重要だよなー」と思いまとめてみることにしました。

定義と基本的な概念

ジョブクラフティングとは、簡単に言うと自分の仕事を自分らしくアレンジすることです。仕事の内容を少し変えたり、人間関係を見直したり、自分の価値観に合った目標を立てることで、仕事をもっと楽しく、やりがいのあるものにします。 イェール大学経営大学院のエイミー・レズネスキー准教授と、ミシガン大学のジェーン・E・ダットン教授によって提唱されました。

自分の仕事の意味や目的を見つけるプロセス

仕事の目的や意味を見つけることはとても大切です。これを見つけると、毎日の仕事がもっと楽しくなり、やる気も出てきます。仕事の目標を明確にすることで、自分が何のために働いているのかがはっきりし、モチベーションが上がります。

ジョブクラフティングの重要性

幸福度と仕事満足度への影響

ジョブクラフティングを実践することで、仕事の満足度が上がり、毎日がもっと充実します。例えば、ある人は病院で清掃の仕事をしていましたが、自分の仕事が患者さんやその家族にどれだけ大切な影響を与えているかを理解したとき、仕事への満足度が大きく上がりました。彼女は、自分の仕事が人々の生活を少しでも明るくすることに気づき、それが彼女のやる気と幸福感を高めたのです。 あとは代表的な例だと、JR東日本の新幹線の清掃員の事例で、ただの清掃スタッフではなく劇場の主役であるといった認識を持たせることで満足度が上がったという話があります。

ジョブクラフティングの実践方法

目的と価値の再確認

まずは、自分が何を大切にしているのか、どんな価値観を持っているのかを考えることが出発点になります。自分の価値観に合った目標を設定することで、仕事がもっと意義深いものになります。例えば、「人を助けることが好きやで!」という価値観を持っている人は、その思いを反映した仕事の目標を設定することで、やりがいを感じやすくなります。

日々の仕事に取り入れる方法

次に、毎日の仕事の中で小さな変更を加えてみましょう。例えば、新しい方法で仕事を進めてみたり、自分なりの工夫を取り入れることで、日々の業務がもっと楽しくなります。例えば、報告書を作成する際に、より分かりやすく、見やすいフォーマットを自分で考えてみることなどが考えられます。

人間関係の強化

ジョブクラフティングには、人間関係を見直すことも含まれます。職場の同僚や上司との関係をより良くすることで、仕事のやりがいや満足度が上がります。例えば、定期的に同僚と仕事以外の話をする時間を作ったり、上司に自分のアイデアを積極的に提案することで、信頼関係を築くことができます。

ジョブクラフティングの成功事例

実際のエピソード

ここでは、ジョブクラフティングの成功例として、キャンディスという女性のケースを紹介します。キャンディスは病院の清掃員として働いていましたが、単に床を掃除するだけでなく、患者さんやその家族と積極的にコミュニケーションを取りました。彼女は、自分の仕事が患者さんの気持ちを明るくする一助になることに気づき、仕事に対する誇りと満足感を得ました。

ジェーン・E・ダットンとエイミー・レズネスキーの研究でも、キャンディスのように自分の仕事を再定義し、目的を見つけることで、仕事の満足度が向上することが示されています。

ジョブクラフティングのツールとリソース

具体的なツールの紹介

ジョブクラフティングを実践するためのツールやリソースも数多くあります。以下にいくつかの例を挙げます。

  1. 自己分析ツール: 自分の価値観や強みを見つけるためのツールです。例えば、VIA強みテストやストレングスファインダーなどがあります。
  2. ワークショップ: ジョブクラフティングに関するワークショップに参加することで、実践的な方法を学べます。多くの企業やオンラインプラットフォームで提供されています。
  3. オンラインリソース: インターネット上には、ジョブクラフティングに関する情報やツールがたくさんあります。例えば、動画チュートリアルやブログ記事などが参考になります。

結論

仕事に対する姿勢や取り組み方を自分の中で再定義することで、モチベーションが上がるので今の仕事をもっと満足できるものにしたい人はやっておいて損はないでしょう。 完全に偏見ですが、基本的に仕事はつまらない割合が高いと思うので、楽しいことを探すのも良いですがそれと同時に一見つまらなそうな物事を楽しめるスキルがあれば人生がより豊かになりそうだなぁと思った次第でした。

正しい判断をするには? #3

前回のおさらい

前回の記事では、バイアスとノイズの影響について見ていきました。バイアスは特定の方向に偏る間違いで、ノイズはランダムに発生する間違いです。特に採用面接では、面接官の個人的なバイアスやノイズが候補者の評価に大きく影響します。

採用面接の現状

1917年に創刊された応用心理学の専門誌では、「人材採用は最重要課題!」と述べられていて、今では面接を行わずに採用する企業はほとんどありません。しかし、面接ではバイアスが強くかかることが昔から知られています。企業は、文化や面接官との共通点が多い人を選びがちだし、見た目が良い人や、職種に関係ないスキルを持つ人が評価されることもあります。これは「ハロー効果」と呼ばれる現象ですね。

バイアスとノイズの影響

面接ではバイアスだけでなく、ノイズも多く発生します。同じ候補者を複数回面接すると、その評価が食い違うことがよくあります。特に、採用面接では第一印象がその後の評価に大きく影響します。最初の数分間で合否の大部分が決まってしまうこともあります。これは面接官が自分の好きな流れで質問をするため、候補者から得られる情報に偏りが生じるからです。

構造化面接とは?

従来の面接では、候補者が実際に仕事で活躍できるかどうかを正確に見抜くことは難しいです。そこで、Googleなどの先進企業が採用している「構造化面接」が注目されています。構造化面接では、判断の一貫性と客観性を高めるために、以下のような手法が用いられます。

1. 判断の統合

複数の面接官が同じ候補者を評価し、その評価をまとめることでバイアスを減らします。Googleでは、一人の候補者に対して多い時で25回もの面接を行うことがありますが、実際には4回ほどで予測精度が頭打ちになるとされています。重要なのは、各面接官が独立して評価を行い、意見交換は最終評価が出揃うまで行わないことです。

2. 判断の構造化

判断をいくつかのステップに分けて行うことが、バイアスやノイズを減らすポイントです。

分解

採用基準を明確にし、その基準に基づいて必要な情報を選び出します。例えば、「EQ(感情知能)」や「批判的思考」といった基準を設定し、評価時にそれらの基準を満たしているかどうかを判断します。

独立

候補者にする質問を個別に評価します。複数の質問を一度に評価すると、前後の回答に引っ張られる可能性があるため、質問ごとに独立して評価することでバイアスを減らします。事前に用意した質問への回答を「普通」「良い」「悪い」といった尺度で評価することも効果的です。

判断を遅らせる

面接直後は候補者の印象に左右されやすいので、評価を少し遅らせることでフラットに評価することができます。

構造化面接の効果

構造化面接を導入することで、面接官のバイアスやノイズを大幅に減らし、公平で一貫性のある採用判断が可能になります。Googleのような企業では、この手法を活用することで、優秀な人材を効率的に見極め、組織のパフォーマンスを向上させています。

結論

構造化面接は、従来の面接におけるバイアスやノイズを減らし、候補者の真の能力を正確に評価するための効果的な手法です。判断の統合や構造化を取り入れることで、公平で一貫性のある採用プロセスを実現し、組織の競争力を高めることができます。

感想

構造化面接と言われると最初は「難しいなー」と思いましたが、採用基準を言語化して判断基準を明確にして判断は独立して行うというポイントが抑えられていれば、ある程度はノイズやバイアスを抑えられるはず。 とはいえ面接で相手のことを見抜くのはめちゃくちゃ難しいので、期待しすぎないのが吉だと思いますね。少なくとも従来の面接手法がいかに精度が低いかと認識できるだけでもこの本は読む価値はあります。 今の面接手法を見直してよりベターに近づける感じでやれれば良いと思いました。