stripeの年次カンファレンスで発表された内容メモ

stripesessions.com

今年のstripeの年次カンファレンス「Stripe Sessions」で多くの機能が発表されたみたいなので、 公式ブログからの情報をメモしていきます。

このイベントでは50以上の新機能を発表しました。なお新機能は、ユーザー企業の成長加速に焦点を当てています。

AIを活用した支払い機能と詐欺防止

  • AIを活用した新たな支払い機能と詐欺防止機能を導入
  • 最適化されたチェックアウトスイートは、AIを使って顧客に表示する支払い方法を決定し、支払い方法を50から100以上に倍増させた
  • オンライン詐欺の増加に伴い、新しい詐欺ルールを自然言語で記述できる「Radar Assistant」機能も追加された

Stripe Connectの大幅なアップグレード

  • ソフトウェアプラットフォームが決済サービスや金融サービスを組み込むのを手伝うStripe Connectが、史上最大のアップグレードを発表
  • 17の組み込みコンポーネントが導入されて、プラットフォームは自社のウェブサイトに完全機能の金融サービスを簡単に統合できるようになった
  • ビジネスは自分たちが持つべき機能とStripeに任せる機能を柔軟に選べるようになった

収益と財務自動化スイートの拡充

  • Stripeの収益と財務自動化スイートには、Stripe Billing、Stripe Tax、Stripe Sigma等が入っており、30万社以上の企業が使ってる模様
  • このスイートに13以上のアップグレードが加えられて、使用量ベースの課金の完全サポートや、Stripe Taxの57カ国への拡大が実現した

他の支払いプロバイダーとの連携

  • Stripeは、他の支払いプロバイダーと連携して使えるようになる新しい方針を発表
  • 他のプロバイダーで支払いを処理してる企業でもStripeのいくつかの人気の製品を使えるようになった

パートナーエコシステムの拡大

  • Stripeはパートナーエコシステムを広げて、Stripeの機能を拡張する新しい方法も発表
  • Stripe App Marketplaceでのアプリ数の増加や、Stripe Terminalハードウェアが多様なシステムと統合、American Expressとの新しいパートナーシップ等が含まれてる

Stripeの共同創設者兼CEOのパトリック・コリソンは、「インターネットのGDPを成長させることが私たちの使命です。今年は私たちの規模のおかげで、Stripeはユーザーがますます複雑になる支払い環境に対処し、AIを活用して成長を推進する手助けをする立場にあります」と述べている。

まとめ

今回発表された新機能とアップグレードのおかげで、Stripeはユーザー企業の成長加速に向けてさらにパワフルなサポートが提供されていきます。 と、ますます便利になるStripeのまとめでしたー。

「15 React Best Practices You Need to Follow」を読んだ

この記事を読みました。この記事では基本的なReactのベストプラクティスが紹介されています。

最近普段使っている技術のベストプラクティスを片っ端から調べることにハマっているので、この記事はドストライクでした。

というわけでブラウザの翻訳機能を使いつつ、ここで紹介されている中で勉強になった点や共感できる点をつらつら書いていきます。

1. コンポーネントは小さく機能ごとに

これは基本のキでして、例えば一つのページに表示したい内容を全て同一のファイルに書いてしまったりしていると、コード量が膨大で可読性も低いしメンテも大変だしであまりメリットがありません。そこで、表示したいUIを機能ごとにコンポーネントに分けて使っていこうというのが本件であります。

この記事でもあるように • それぞれの小さなコンポーネントは、複数のプロジェクトで再利用することができる。

ので同じようなUIを使いまわせるので、効率的に開発できます。プロジェクトが大きくなればなるほどその効果は効いてくるので、序盤で汎用的なものを揃えておくのも良いかもしれません。

またコンポーネントの分け方についてはAtomic Designなんかが参考になるかと思います。

個人的には、ページ単位でのコンポーネントを作る際はほとんどと言っていいほどコンポーネントを分割していて、特に表示したい内容が多い場合はセクションごとに分割したりしています。その中で、汎用的なものがあればComponentsに作成し、独自性が強いものはディレクトリの同階層にpartialsディレクトリ内に作るようにしています。

4. CSSJavaScriptに入れる

通常は全てのcssを一つのSCSSにまとめるのが一般的と書かれていますが(知らなかった)これを一つのjs内に入れちゃおうという発想ですね。

いわゆる「css in JS」というやつで、JavaScriptの中でCSSを記述し、コンポーネントに直接スタイルを適用する手法です。これにより、スタイルのスコープがコンポーネントに限定され、他のコンポーネントとのスタイルの衝突を避けることができます。また、スタイルとコンポーネントの関連性が高まるため、コードの保守性が向上します。

EmotionJSが代用的です。

import { jsx } from '@emotion/core';
let Component = props => {

  return (
   <div css={{ border: '1px solid black' }} {...props} />
  );
}

スタイルの付け方はTailWind CSSだったり色々派閥があるイメージですが、個人的には普段使っているCSS Modulesに馴染みがあるので今後も使っていきたいところ。

どれもグローバル汚染を防いでくれるので、使いやすい方を選ぶのが良い気がしています。

6.関数にちなんでコンポーネントに名前を付ける

これはコンポーネント命名についてですね。この機能がどういう機能を持つかという基準で命名していこうということで、これがとある文脈を入れすぎちゃうと本当は使いまわせるのに名前のせいで使用が限定的だと思われるようになってしまうんですよね。本記事はから例を引用します。

  • ProductTable: この名前からは、製品のリストや情報を表示するテーブルのコンポーネントであることが直感的に理解できます。これにより、コンポーネントが何をするかが一目で明らかになり、コードを読む際の文脈も自然と理解しやすくなります。
  • Avatar vs. AuthorAvatar: 「Avatar」という名前は、任意のユーザーのアバター画像を表示する汎用性の高いコンポーネントであることを示します。一方、「AuthorAvatar」という名前は、その使用が特定の文脈(例えば、記事の著者のアバターを表示する場合)に限定されることを示唆しています。後者のように具体的な使用場面を名前に反映させると、そのコンポーネントの再利用性が低下する可能性があります。

ちなみに名前の付け方はこれ以外にも「動詞 + 名詞」といったパターンを統一することで管理しやすくなると思っていて、

動詞 + 名詞のパターンだったらそのコンポーネントがどんな役割かがパッと入ってきやすい印象があります。あとはディレクトリ内に Edit〇〇のようにソートされるので、編集系はこの辺だなーと探しやすくなったりも個人的にはしてます。

名詞が先のパターンもメリットがあって、Password〇〇といったようにディレクトリ内でソートされることで、機能ごとのグルーピングがされてる分、見通しが良くなったりする気もしています。どちらにもメリットはあるので、プロジェクト内で統一されていればどちらでも良いと思います。

11.一つのコンポーネントに関連するすべてのファイルは、一つのフォルダにあるべきである。

これも基本ですが、一つのコンポーネントに関するスタイルやカスタムhooksといった関連ファイルはコンポーネントファイルと同一のフォルダに入っていることで管理がしやすくなります。この内容自体は一般的に知られている構造だとは思います。補足的に書きたかったのは、コンポーネントはコマンドで生成できるようにしておいて、生成する内容をjsx,スタイル,カスタムhooksとかで汎用的にできればスムーズに開発ができるという点です。まあこれに関しては今のプロジェクトがそうだったってことが大きいですが、個人でプロジェクトを立ち上げるなら必ずコマンでの設定はやっておきたいですねー。story bookとか使うならここに入れるのもありかも。

12. Bitのようなツールを使う

これについては恥ずかしながら知らなかったんですが、どうやらコンポーネントのプロジェクト間で共有するためのツールだそうで、クラウド上で作ったコンポーネントを共有できるみたいです。またテスト、ドキュメント作成までを一括でサポートしているとのこと。ざっくりですがこれで効率よくUIの実装ができるようになりそう。気になったのはこのベストプラクティスに乗ってる割には日本の記事であんまり見ないなーと笑 いつか流行るのでしょうか。もう流行っているのか?謎の技術に今後も注目です。

15.リンティングの規則に従い、長すぎる行を分割する。

みんな大好きリンターです。ESLintを使いましょう。以上。で終わるのも勿体無いので、改めてメリットをおさらいしましょう。

  1. コードエラーの早期発見
  2. コードスタイルの統一
  3. 可読性の向上
  4. 後続の開発者のためのガイドラインとなる:

とにかく人によってコードの書き方がバラバラだったりするので統一すると読みやすくなるし、エラーも早く見つけれるしでいいとこだらけですね。

これをCIに組み込んでチェックするもよし、コマンドでチェックを走らせるものよしです。

まとめ

Reactのベストプラクティスという題名だったのでてっきりReact hooksの内容が中心かと思いきや、コンポーネント作成だったりスタイルの付け方だったり思ったよりも基本的な内容で肩透かしを食らった感がありましたが、内容そのものは真っ当だった気がしています。知らない内容もあったので勉強になりましたー。

頭で考えない - 環境を利用して思考力を高める方法

脳の外で考える――最新科学でわかった思考力を研ぎ澄ます技法

はじめに

脳の外で考えるという本を読みました。著者は科学ジャーナリストのアニー・マーフィー・ポールさん。

考えるといったら「頭を使う」のが一般的な認識ですが、この本ではそうではありません。キーワードになっているのは「脳の外」で考えるということ。ざっくりいうと、体の感覚や周囲の物理的な環境、人を利用して思考力を上げようというのがこの本の主旨です。科学的なエビデンスに基づいた、実践的なテクニックがたくさん紹介されています。

今回は、第2部の「環境で思考する」からピックアップした内容を自分なりにまとめていきます。日々の生活の中で、どのように環境を活用して思考力を高められるのか、一緒に探っていきましょう。

自然環境を使う

そもそも私たちの思考は、周囲の環境によって大きく左右されます。自分が今いる場所によって、脳は影響を受けるのです。特に屋外では、脳が活発になることが知られています。

実は人類の歴史を振り返ると、ほとんどの時間を屋外で活動してきました。つまり、私たちの脳は屋外環境に最適化されているのです。屋内で仕事をするようになったのは、ここ数百年のことにすぎません。とある調査によると、現代人が屋外で過ごす時間はたった7%だそうです。デジタルデバイスの普及・進化によって、今後もますます屋外で過ごす時間が減っていきそうな予感がします。

ただ、そういう時代だからこそ、意識的に屋外で活動することが脳にとって重要になってくるのです。緑の多い公園や川で過ごすとリラックスできるという人は多いと思いますが、実際に自然豊かな環境で少しの時間を過ごしただけでも、体内のストレスホルモンが減少することがわかっています。

それだけでなく、うつ病のような重度のメンタル疾患を抱えている人の気分を軽くしてくれる効果もあるのです。

さらに、自然は集中力や思考力を向上させてくれます。とある実験では、都市部でウォーキングをしてきた人と比べて、屋外の緑の中で時間を過ごした人の方が、文章の間違いを見つけるテストで好成績を残しました。また別の実験では、自然の中を1時間歩いた人は、交通量の多い街中を歩いた人に比べて、ワーキングメモリのテストで20%も高い得点を取ったのです。

とにかく自然は脳に良い影響を与えまくるので、デスクワークが中心の人は、休憩中に公園で散歩したりするのがおすすめです。私自身も以前読んだ『NatureFix』という本の影響で、定期的に森を散歩するようになりました。改めてこの本を通して、自然のメリットを再認識することができました。(自然の話だけで一つの記事が書けそうなので、今度改めて書くつもりです)

建物の空間を使う

先ほどは自然環境の重要性を強調しましたが、屋内環境にも脳に影響を与える特徴があることがわかっています。ニューロアーキテクチャーという分野では、「脳が建物や内装にどう反応するか」を研究しています。その研究の対象になるほど、建物と脳の関係性が注目されているのです。

例えば、集中力という点でいえば、オープンなオフィスでは周りの雑音や視界が影響し、集中力が削がれてしまいます。一方、壁で仕切られた個室は集中力を遮るものが少ないので、没頭しやすいというメリットがあります。最近ではオープンオフィスが主流になってきていて、一人で没頭できる環境は少なくなっているように思います。

しかし、創造力という点においては、オープンなオフィスの方が適しています。それは「他者とのコミュニケーションが増え、アイデアが生まれやすくなる」という点です。物理的に近くにいる人とのコミュニケーション量が増えるらしく、距離とコミュニケーションの頻度には一貫した関係があるとの説もあります。さらに、会社の共有スペースがコミュニケーションを促進する効果があることもわかっています。

ここ数年はリモートワークの普及によって、物理的に遠い距離で仕事をすることが増えました。当然、オフラインのように人と喋っていてアイデアが湧く機会は少なくなっています。では、オープンオフィスと個室、どちらが良いのでしょうか。私は、これをうまく利用して目的別に空間を使い分けるのが良いと考えます。例えば、集中できる午前中は自宅でタスクを進め、昼はオフィスで同僚とランチに行ったりする。そんな風に、両者の良いとこどりをするのです。

生産性高く働くためには、建物の空間をうまく使うことが重要だとわかったところで、他にも思考力や集中力を高めてくれる空間のポイントを紹介しましょう。

例えば、自分のアイデンティティを表すアイテムが置かれていると、仕事のパフォーマンスが上がることがわかっています。猫好きの人なら猫の写真を飾ったり、バイク好きの人ならバイクの模型を置いたりするのです。そうすることで「自分の空間である」という認識ができるからだそうです。逆に無機質なオフィスでは生産性が下がってしまうので、自分らしさを表現できるアイテムを置くことをおすすめします。

他にも、天井の高い空間にいると抽象的に物事を考えやすくなったり、曲線のものを見ると安心感を覚えたりするのだとか。建物の細部にも、脳への影響が隠れているのですね。

イデアの空間を使う

記憶力の大会で好成績を残す人の多くは、「記憶の宮殿」とも呼ばれる「座の方法」を用いて膨大な情報を記憶しています。これは、自分がよく知っている物理的な場所に覚えたいことを結びつける方法です。例えば、自宅の玄関や寝室を思い浮かべ、そこに覚えたいことを配置するイメージです。人間は空間に関する記憶力に優れているので、その性質をうまく利用しているのですね。

空間と記憶に関して、もう一つ興味深い点があります。感情と場所が密接に関わっているのです。辛い思い出をした場所に再び行くと、その当時の記憶がフラッシュバックするように、空間と記憶には強い結びつきがあります。この性質を上手に利用することで、思考を拡張していくことが可能なのです。

私見ですが、アイデアを出す際に、自分の思考をマインドマップで展開してまとめる方法は、二次元的な空間に思考を広げる効果があるように感じています。頭の中だけで考えるのではなく、目に見える形で思考を外に出すことで、新たな発想が生まれやすくなるのかもしれません。

最後に、ディスプレイの大きさと知的能力の関連性についても触れておきましょう。巨大なディスプレイを使ってタスクを行うと、通常サイズのディスプレイを使う時よりもパフォーマンスが上がるのだそうです。研究者曰く、「身体的に体現されたリソース」を活用できるようになるからだとか。逆に小さなディスプレイでは、概念的な地図を作る際に画面上に広げきれず、頭の中に留めておかなければならなくなるそうです。単に作業領域が増えて効率が上がっただけかもしれませんが、大きなディスプレイを導入するメリットは大きいでしょう。

まとめ

というわけで最後にこれまでのポイントをまとめてみました。

  1. 自然環境の効果

    • ストレス減少
    • うつ病の改善
    • 集中力・思考力の向上
  2. 建物の空間の影響

  3. イデアの空間の活用法

    • 記憶の宮殿:自宅の各部屋に覚えたいことを結びつける
    • マインドマップ:二次元的な空間に思考を広げる
    • 大きなディスプレイ:知的能力が向上する
  4. 環境を利用して思考力を高めるポイント

    • 自然環境を積極的に活用する
    • 目的に応じて建物の空間を使い分ける
    • イデアの空間と思考を結びつける
    • 意識的に環境を選択・設計し、脳の外で考える習慣をつける

私たちの思考は、周囲の環境から大きな影響を受けています。自然、建物、アイデアの空間を上手に活用することが、思考力を高めるカギとなるでしょう。日々の生活の中で、意識的に環境を選択・設計し、脳の外で考える習慣をつけていきたいものです。