サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
blog.webcreativepark.net
Node.jsでバリデーションを行うには sharpがよく利用されますが、libvipsで書かれたsharpは環境によってはうまくインストールできないことがあります。 今回、AWS Lambdaで画像のバリデーションを行うにあたりインストール時にハマってしまったこともあり、sharpではなく Pure JavaScriptで書かれた Jimpを利用しました。 利用方法はnpmでパッケージインストールを行い。 npm install jimp ファイルの冒頭などで読み込んでおきます。 const jimp = require('jimp') 今回のバリデート内容はファイルの実体が画像種であるか、画像のサイズが1000x1000以下かです。 フロントでも同様のバリデートを行っているためこれらのルールから外れる場合は強制的に処理を中断します。 // 画像データのバリデート const image
AstroでgetStaticPathsの返り値としてpropsが指定できます。 export async function getStaticPaths() { return [ { params: { id: "foo" }, props: { text: "abcd" }, }, { params: { id: "var" }, props: { text: "efg" }, }, ]; } TypeScriptで型指定を行いたい場合に、この場合はporpsの方は{ text:string }なのでファイル中に以下のような型定義を行えば型の指定が可能です。 export type Props = { text: string; } propsはgetStaticPathsの返り値として定義されているので頑張ればのgetStaticPaths返り値の型推論として取り出すこともできます。
IE11が終わる日 Microsoftが「Internet Explorer は Microsoft Edge へ – Windows 10 の Internet Explorer 11 デスクトップアプリは 2022 年 6 月 15 日にサポート終了 - Windows Blog for Japan」というリリースを行いました。 よくよく読み進めていくと、これまでの「セキュリティアップデートを行なわない」といったサポート中止とは異なるすごく強制力のある発表で事実上来年以降にIE11を使った開発がほぼできなくなってしまうのではないかと感じました。 サポート終了後 にどうなるかというと FAQによるとMicrosoft Edge にリダイレクトされてしまうとのことでIE11は起動すらできなくなってしまうようです。 Windows 10における Internet Explorer デスクトッ
Next.js + TypeScript においてgetStaticPropsの型を定義する方法はいくつか存在します。 getStaticPropsの型を定義したいモチベーションとしてはNextPageのPropsとして受け取る値とgetStaticPropsが返すpropsの値を揃えたいという観点が一番でしょう。 import type { NextPage } from 'next' type Props = { aaa:string bbb:string } const Home:NextPage<Props> = (props) => { const {aaa,bbb} = props return ( <div>page</div> ) } export const getStaticProps = async () => { return { props:{ aaa:"aa",
Next.js で Storybookを利用しようとした際にsass-loaderがエラーを出したのでまとめてみました。 まずは以下のコマンドでNext.jsをインストールして npx create-next-app 次に以下のコマンドでStorybookをインストールします。 npx sb init これで以下のコマンドでStorybookが起動できるようになります。 yarn storybook ひとまずNext.jsのReactコンポーネントが表示できるか確認するため、stories/Home.stories.jsxに以下のファイルを作成してStorybookに表示できるか確認します。 import React from 'react'; import Home from '../pages/index'; export default { title: 'Example/Home'
Next.jsのアプリケーションのデプロイにGithub Actionsを利用していたところ以下のような警告が出ているのに気づきました。 warn - No build cache found. Please configure build caching for faster rebuilds. Read more: https://err.sh/next.js/no-cache info - Creating an optimized production build... Attention: Next.js now collects completely anonymous telemetry regarding usage. This information is used to shape Next.js' roadmap and prioritize features. Yo
next/routerを利用しているコンポーネントを単体でテストする場合にはNext Routerのモックを事前に作成しておく必要があります。 以下のようにnext/routerを利用している場合に import { useRouter } from 'next/router'; export const Component = () => { const router = useRouter(); return (<h1>{router.pathname}</h1>) } 次のようなtestを書くと、router.pathnameがundefindになるとエラーになってしまいます。 import React from 'react'; import { render, screen } from '@testing-library/react'; import Component fro
GitHub Actionsを利用するとNuxt.jsやNext.jsなどで作成したWebアプリケーションを簡単にAWS S3にデプロイすることができます。 AWS S3にアップできるIAMユーザーを作成する まずはAWSの管理画面からAWS S3にデプロイ可能なIAMポリシーとIAMユーザーを作成しましょう。 IAMポリシーは作成画面でJSONを指定することで、当該S3バケットを操作可能なポリシーを作成します。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::[バケット名]", "arn:aws
これまでAWSのS3にアップした静的ファイルにBasic認証を設定するには CloudFront経由でLambda@EdgeでBasic認証を指定する必要がありましたがCloudFront Functionsの登場によって、CloudFront Functionsを利用して少しだけ簡単に設定できるようになりました。 CloudFront FunctionsはCloudFrontのサイドバーの「関数」から作成できます。 関数ページでは右上の「関数を作成」から適当な名前をつけてBasic認証用の関数を作成します。 CloudFront Functions はLambda@Edgeと違いECMAScript 5.1相当のJavaScriptしか記述できないので注意が必要です。 function handler(event) { var authUser = 'user'; var authPas
Microsoftが「Internet Explorer は Microsoft Edge へ – Windows 10 の Internet Explorer 11 デスクトップアプリは 2022 年 6 月 15 日にサポート終了 - Windows Blog for Japan」というリリースを行いました。 よくよく読み進めていくと、これまでの「セキュリティアップデートを行なわない」といったサポート中止とは異なるすごく強制力のある発表で事実上来年以降にIE11を使った開発がほぼできなくなってしまうのではないかと感じました。 サポート終了後 にどうなるかというと FAQによるとMicrosoft Edge にリダイレクトされてしまうとのことでIE11は起動すらできなくなってしまうようです。 Windows 10における Internet Explorer デスクトップ アプリケーション
昨年12月に引っ越してから自宅のネットワークがすごく貧弱だなと不満を持っていたところに、緊急事態宣言を受けて強制的にテレワークの実施を余儀なくされてしまいました。 研修等のお仕事もフルオンラインに切り替わり、私の自宅回線が貧弱だと色々と迷惑をかけてしまうので自宅ネットワーク高速化を色々とトライしました。 結論はIPv6化したというお話ですがそこに至るまでの足取りを記録しておきます。 当初のネットワーク環境 光回線を引いているのですがマンションがVDSL方式のためベストエフォートで100Mbpsとそれほどの速度が出ません。ここを変えるには大掛かりな工事が必要でもっと小手先の対応でどうにかしたいというのが本エントリーの趣旨です。 プロバイダーは申込みの後の確認電話で勧められたぷららを契約してました。本記事の最後ではぷららを契約したことがプラスに繋がります。 プロバイダーから貸与されたモデムにル
Reactではevent設定時にSyntheticEvent(合成イベント)が生成されネイティブのイベントと設定した関数の中継ぎをします。 ReactのSyntheticEvent 例えば下記のようにinput要素のonChangeイベントにhandleChange関数を設定した場合直接ネイティブのChangeイベントがhandleChange関数を実行するのではなく間に生成されているSyntheticEventを仲介してhandleChange関数を実行がされます。 通常は気にすることはないのですが、SyntheticEventはパフォーマンスの観点からイベントオブジェクトを保持しておらず非同期処理の場合には注意が必要です。 下記のようにhandleChange関数内で非同期処理をおこないイベントオブジェクトにアクセスした場合にエラーになってしまいます。 これを防ぐにはハンドル関数内で
もう、SP用のWebデザインを倍の解像度で作るのをやめよう デザイナーがコーディングできるべきかという議論がSNS上で白熱していますが個人的にはあまり興味がなく、コーディング経験の有無に関係なくWebに適したデザインデータを作ってもらえたらあとはフロントエンドの領分であると思っています。 とはいえ、Webに適したデザインデータをつくれないデザイナーが多いのでああいった議論が白熱するのではないかとも思っています。 Webに適していないデザインデータとはどういったものかというと、古くから言われているものではPhotoshopの『乗算』を使うとCSSで表現できないためダメというものがあったりします。 CSSでもmix-blend-modeという機能で対応できるけどブラウザの対応状況を鑑みるに、よほどの理由がないかぎりPhotoshopの『乗算』を使っていはいけないのが今の現実です。 参考:mix
デザイナーがコーディングできるべきかという議論がSNS上で白熱していますが個人的にはあまり興味がなく、コーディング経験の有無に関係なくWebに適したデザインデータを作ってもらえたらあとはフロントエンドの領分であると思っています。 とはいえ、Webに適したデザインデータをつくれないデザイナーが多いのでああいった議論が白熱するのではないかとも思っています。 Webに適していないデザインデータとはどういったものかというと、古くから言われているものではPhotoshopの『乗算』を使うとCSSで表現できないためダメというものがあったりします。 CSSでもmix-blend-modeという機能で対応できるけどブラウザの対応状況を鑑みるに、よほどの理由がないかぎりPhotoshopの『乗算』を使っていはいけないのが今の現実です。 参考:mix-blend-mode - CSS: カスケーディングスタイ
Reactでは作成したアプリケーションはwebpackにより全てのコードが1つのJavaScriptファイルにバンドルされます。 小さなアプリケーションならよいですが大きなアプリケーションですと初期表示に読み込むJSファイルが増加していく問題を抱えています。 React.lazy は JavaScriptファイルを分割して利用しているコンポーネントが呼び出されたタイミングでロードするための機能です。 React.lazyの利用 次のように記述すると遅延読み込み用のコンポーネントが作成されます。 const SomeComponent = React.lazy(() => import('./SomeComponent')); React.lazyはReact.Suspense と一緒に利用して、このコンポーネントが呼び出されたタイミングで通信を行いコンポーネントファイルを取得します。 co
続:AngularでChangeDetectionによるパフォーマンスチューニング 前回(AngularでChangeDetectionによるパフォーマンスチューニング)は、ChangeDetectionStrategy.OnPushによるチューニングについて解説しましたが今回はその続きです。 @Input()などで親コンポーネントから値を受け取るケースでは注意が必要です。 プリミティブ値の場合 @Input()で渡す値がプリミティブ値の場合は問題なく特に気にする必要はありません。 サンプル @Component({ selector: 'child1', template: ` <p>{{message}}</p> `, }) export class Child1 { @Input() message: string; } @Component({ selector: 'child2'
WordPressのRest APIのユーザー情報に項目を追加する必要があったのでその際のメモ書き。 具体的には以下のようなスタッフ一覧のページを作成したかったですがデフォルトでは役職の表記や各種SNSアカウントなどの項目に対応できなたかったのでカスタマイズをしました。 ユーザー情報に項目を追加 Rest APIに限らずWordPressでユーザー情報に項目を追加する場合は以下の内容をfunctions.phpに追加します。 function my_user_meta($wb) { $wb['position'] = '役職'; $wb['twitter'] = 'twitter'; $wb['facebook'] = 'facebook'; $wb['github'] = 'github'; $wb['instagram'] = 'instagram'; return $wb; } ad
株式会社トゥーアールの2018年を振り返る 今年の最終営業日なので一年を振り返ってみたいと思います。 トゥーアールは2016年の2月に設立をしていますので設立後の1年10ヶ月〜2年10ヶ月までの状況です。 スタッフ数 スタッフは4名からプラス3名の7名に増加しました。 取締役副社長として@ANTON072に参画いただき会社としての可能性がすごく広まったと感じた1年でした。 来年も3名ぐらい採用して10名の規模を目指したいですね。(1月から1名増えるのは確定済み) いったん中止していた求人も来年から再開する予定です。 事務所とか働き方 スタッフの増加にともなって事務所を増床しました。 この時の状況はnoteに記載しています。 このときは計算上15人まではいると書いていましたが、実際は8名ぐらいの座席を用意したタイミングで手狭になり結構きつくなってきました。 引っ越しなどはすこし面倒くさかった
AngularのBehaviorSubjectでコンポーネント間の情報を共有する コンポーネント間で情報共有ですが、ReactならReduxやMobXなどがあり、VueならVuexがあり、Storeを作成することでどのコンポーネントからも共通の情報にアクセスすることが可能です。 Angular にはデフォルトではそういったFlux機能は提供されておらず、コンポーネント間で情報を共有するには RxJS のBehaviorSubjectを利用する方法がよく利用されます。 Subjectとは? そもそもRxJSのSubjectとはなにかから解説します。RxJSのSubjectは Observerとしても Observable としても動くクラスです。 ObserverとObservable 通常、RxJSではObservableクラスを通して、ストリームを購読できるObservableとストリー
会社設立時の物件探し 株式会社トゥーアールを作って2年がたち、当時のことを色々と忘れだす時期なので備忘録がてらに正解だったこと失敗だったことなどを記事にしていきたいと思います。初回は「会社設立時の物件探し」。 設立時の最大の壁 会社設立時に1番問題になってくるのは会社を登記する住所です。 とりあえず自宅で登記としたいところですが、個人で契約している賃貸マンションに法人登記するというのは多くの場合は契約違反になってしまいます。 理由としては、そもそも個人と法人で賃貸契約の課税方式が異なり、個人の場合は非課税なのですが法人の場合は課税対象なので消費税がかかってきてしまいます。 そのため個人契約のまま法人登記(事業として利用する可能性がある)というのは不動産業者からは嫌がられ、契約上できないことにしているのが大半です。 賃貸物件を法人契約に切り替えれば上記の問題はクリアされるのですが、この時点で
新潟グラム2018 Vol.1で「動きのデザインとフロントエンドの連携」というお話をしてきました。 2017年3月9日に新潟で行われたイベント、新潟グラム2018 Vol.1「デザイン & CSS & マイクロインタラクション!」で行なったセッション「動きのデザインとフロントエンドの連携」の講演資料です。 けっこう口頭で補足をしていることが多く、単純にスライド内の動きを採用すればよいということではないのですが、検討の候補にあげていただくにはよいかと思います。 最後になりますが、運営スタッフの皆様、ご来場いただいた皆様すばらしいイベントをありがとうございました。 スポンサードリンク to-Rについて JavaScriptやCSS、React/Angularなどのフロントエンド情報を発信しています。 書いてる人 西畑一馬 (株式会社トゥーアール) 代表取締役/フロントエンドエンジニア 株式会社
[書評] 超速Webページ速度改善ガイド 最近のブラウザやWebサイトの機能はどんどんと進化しており、古い高速化テクニックは逆にページ低速化の原因にもなってしまいます。 本書「超速Webページ速度改善ガイド」は、そんなWebサイトの高速化を行うための最新TIPSが詰まった一冊です。 特徴 この本の特徴は「推測するな、計測せよ」をコンセプトに、単なる改善方法だけではなくGoogle Chromeを利用した測定方法にも紙面が多く分かれているのが特徴。 内容的には難度の高いものから、すぐにでも実務で活用できるもの、ブラウザの実装状態がまだ芳しくないテクニックまで幅広く網羅されています。 そのため1読すれば今時点だけでなく少し先の高速化TIPSまでも知ることができます。 内容は以下の通り 目次 第1章 Webページの速度 第2章 ネットワーク処理の基礎知識 第3章 ネットワーク処理の調査と改善 第
プロジェクトによりnodenvとndenvを切り替える 最近、プロジェクトにより「nodenv」を利用しているプロジェクトと「ndenv」を利用しているプロジェクトがあり使い分けがうまくいかないという問題がよく発生するようになりました。 最初に説明しておくと本記事は「nodenv」と「ndenv」を切り替えるのではなく、.node-versionファイルに記述されているバージョンのnodeを起動する方法です。タイトル詐欺ですね。 何が問題なのか 前提として「nodenv」と「ndenv」では.node-versionに記載されるバージョンの表記が違います。 ndenvを利用して ndenv local v8.5.0 のコマンドで生成される.node-versionには「v8.5.0」とバージョン情報が記載されます。 nodenvを利用した場合 nodenv local 8.5.0 のコマン
「秋のJavaScript祭 in mixi 2017」で「RxJSで始めるリアクティブプログラミング」というお話をしてきました。 「秋のJavaScript祭 in mixi 2017」で「RxJSで始めるリアクティブプログラミング」というお話をしてきました。 最初に会場でRxJSを仕事で利用したことがある方と聞いて、100人ほどの会場で5名ぐらいしか挙手がなかったのが印象的でした。Angularそれほど流行ってないんですね。。 わたしは、ここ1年ずっとAngularの開発をしているため、否応なしにRxJSを触っているのですがRxJSの学習コストはかなり高いと感じております。 すこしでも学習の取っ掛かりとなればと、なるべく伝えることを絞って説明いたしました。参考になれば幸いです。
Angularによるスライドアニメーション Angularでいわゆるスライドアニメーションを実装するための方法です。 Angular 4 +での初期設定 Angular4 よりanimation系は@angular/coreより除外されていますので、@NgModule内で@angular/platform-browser/animationsより取得したBrowserAnimationsModuleをimportsに設定しておき、@angular/animations より trigger, state,style, transition, animate, keyframesをimportしておきます。 import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; . . . @NgModu
AngularでChangeDetectionによるパフォーマンスチューニング AngularでChangeDetectionによるパフォーマンスチューニングを行う方法です。 ChangeDetectionとは? AngularではChangeDetectionと呼ばれる更新機構を持ってコンポーネントの情報が変更されるとページの再描画が行われます。 くわしい仕組みに関しては以下を参考にしてください。 Angular2のChange Detectionについて - Qiita Angularのデフォルト設定では、全てのコンポーネントの変更に対して、このChangeDetectionによる更新が毎回走るようになっている。 例えば以下のようなコンポーネント構成時、つまりAコンポーネントの子コンポーネントとしてBコンポーネントとCコンポーネントが配置されているようなケースで、Bコンポーネントに対し
[書評] Webディレクションの新・標準ルール ディレクションのお仕事というのは立場や規模によって千差万別です。本書「Webディレクションの新・標準ルール」はそんなディレクションの仕事を体系的かつ網羅的に抑えた一冊です。 最近のWebサイト制作では目的が多様化しており、抑えておかなくてはいけないポイントが増加しています。 UX設計やAWSなどのクラウドサービス、InstagramなどのSNS対策、MA(マーケティングオートメーション)など数年前までは考慮しなくてよかったことが当たり前のように求められることも多くなりました。 「Webディレクションの新・標準ルール」では「企画」、「設計」、「制作進行」、「運用改善」のテーマで様々な内容が書かれています。 目次を読むだけでお腹いっぱいになる内容です。 【目次】 ---------------------------------------- ■
SystemJSでAngular 2の環境を構築する SystemJSはwebpackやBrowserifyのようなJavaScriptファイルの依存関係を解決するためのモジュール管理ツールです。 Angular 2ではquickstartではSystemJSを利用したコンパイル環境を、Angular CLIではwebpackを利用したコンパイル環境を提供しています。 今回は用意されている環境を利用せずに0ベースでSystemJSの環境を構築していく方法を解説します。 (quickstartの設定内容を最小限にして順序立てて解説しています) package.jsonの作成 まずはターミナルなどで以下のコマンドを入力してpackage.jsonの作成を行います。 npm init -y ローカルサーバーの構築 SystemJSではAjaxでファイルの取得などを行うためローカルサーバーの設定が
次のページ
このページを最初にブックマークしてみませんか?
『[to-R]JavaScriptやSEO対策、CSS、Movable Typeなどの情報を発信』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く