サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 17
qiita.com/teradonburi
サーバーサイドGTM 始めにサーバーサイドGTMというのはGoogleの公式用語ではないです。 用語だけ独り歩きしている感じがあるのですが、 実態は要素技術の組み合わせでしかありません。 Google公式ではサーバサイドタグと呼ばれています。 この記事を書いた動機 サーバサイドタグは要素技術の集合と冒頭で書きました。 情報が断片的だったり、情報自体が古かったりして設定方法が変わっており、 設定箇所も多く、総合的なwebの知識が必要でハマりどころがかなり多かったため、まとめたかったのが動機です。 (そもそもサーバサイドタグの導入ガイド的なものの情報があまりない…) なぜサーバサイドタグが必要なのか? 皆さんも一度は目にしたことがあろう、EUのウェブサイトを中心としたCookie許可のバナー。 これらは広告トラッキング用のサードパーティcookieを許可するかの確認バナーです。 (※画像はst
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
まずはじめに Reactはユーザインターフェース構築のためのJavaScriptライブラリです。 React は、インタラクティブなユーザインターフェイスの作成にともなう苦痛を取り除きます。アプリケーションの各状態に対応するシンプルな View を設計するだけで、React はデータの変更を検知し、関連するコンポーネントだけを効率的に更新、描画します。 React公式より Reactのプロジェクトである程度規模が大きくなっていくと問題になっていくのは きちんと設計しないとビジネスロジック、コンポーネントのステート、表示 これらが入り混じって数百行の巨大なコンポーネント(モノリシックなコンポーネント)ができてしまう場合があることです。 確かにReactはユーザインタラクティブなViewの作成には強力な力を発揮しますが、 綺麗なコンポーネント設計に関しては利用者に委ねられています。 (Reac
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Promiseは何時呼ばれるのか? 使う分には今まであまり意識してこなかったのですが、async/awaitを呼ぶことで処理がブロッキングされるのではないかというのを懸念していたのと、そもそもどのタイミングでPromiseのcallbackがされるのか気になったので今更ですが調べてみました。 Promiseが呼ばれる仕組みについては先にEventLoopとmicrotaskについて知る必要があります。 先に結論から書くと以下の感じです。 PromiseはEventLoop内のmicrotaskキューでFIFO実行される。 Timer系の
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? window.onload = function() { var img = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAC0CAMAAAB4+cOfAAAApVBMVEX///9FhPA5abtYkPE9gPA1Z7pGcr9liMgwZLkoYLiOr/W+y+WIoNE1fO/R4PtBgvAweu+nwPfy9v73+v7s8v1glPLg6fzl7f1+pvQ+bb5Jhe3M2/q7z/l1ofPF1vra5fyYt/a90fmUtfavx/ijv/dqmvJ9p
{ "presets": [ [ "babel-preset-gatsby", { "targets": { "browsers": [">0.25%", "not dead"] }} ] ], "plugins": [ "@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-class-properties" ] } gatsby-config.jsにgatsbyのプラグイン関連の設定を記述します。 スタータ構成のプラグイン設定から足したものは TypeScript、ESLint、Material-UIテーマサポートのプラグインです。 TypeScriptサポートのgatsby-plugin-typescriptプラグイン、 TypeScript形チェックのgatsby-plugin-typescript-c
Gatsbyは静的サイトジェネレータフレームワークです。 フロントエンドを作成するときは最近はReactやvueなどのJSフレームワークを使って作成することが多いです。 メリットも大きい反面、webpackやparcelでbundle.jsを作成し、動的に仮想DOMツリーを生成するSPAの欠点として以下のことが挙げられます。 bundle.jsのファイルサイズが肥大化する(Code Splittingをして適切な分割読み込みや先読みである程度は回避できるが、依存ライブラリのファイルサイズが増えると厳しい) そもそも仮想DOMツリーの構築に初回のJS実行時間がかかる(SSRでもバックエンドでJSによる動的にDOM構築をするため、遅い) TwitterやFacebookシェアのOGPを実装しようとするとSSRの実装に迫られる(SSRは複雑度を増すのでSPAとしてはあまりやりたくない・・・) 静
初心者向けにモダンJavaScriptの開発で必要になる CommonJSとECMAScriptでのモジュールの違い、babelとwebpackの知識に関してまとめておきます。 CommonJSとECMAScript JavaScriptの歴史的経緯にもなるのですが、 実はJavaScriptには サーバサイドのNodeJS(CommonJS)とブラウザのJavaScript(ECMAScript) の大まかに2つの言語仕様があります。1 元々のJavaScriptの欠点としてJavaScript内でモジュール化されたJavaScriptファイルを外部参照するという言語機能がなかったことが起因しています。 (かつてはHTMLのscriptタグでグローバル参照するというやり方が従来だった) モジュール機能が先に言語仕様として策定されたのがCommonJSでECMAScriptのモジュール機能
動機 Web上で3D表現するにはUnityかWebGLの選択肢に大体落ち着くと思います。 Unityに関してはとても素晴らしいフレームワークなのですが、 Web上で動かすにはプラグインが必要なのと、Unity自体の仕組みやライセンスにロックオンされるのが個人的にあまり好きではなかったので、オープンな仕様でプラグイン不要なWebGLのほうが好きです。 WebGLのフレームワークもA-Frameとか最近色々増えてきましたが古参でライブラリが充実しているThreeJSでちょっと本気でアクションゲームぽいものを作ってみました。 アクションゲームを作ろうとした時に厄介なのが、3Dオブジェクトの当たり判定だと思います。 その辺に関してまとめられてる情報が少ない気がしたので、 今回はAmmo.js(物理エンジン)を使ってキャラクターを地形に沿って移動できたり、落ちてくる物体を動かせたりできるようにしまし
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? レビューガイドライン(Review GuideLine) ここで述べているレビューはピアレビューについての方法です。 (作業成果物の欠陥と改善の機会を探すレビュー) 「最悪を最初に」を基本としてレビューすべき、 たとえば、仕様やアルゴリズムに欠陥があるのに、typoにこだわってもしょうがないので、なにが最悪かを考え、それを防ぐための物からレビューをします。 誤りがプロダクト全体に影響し、手戻りのコストが高くつく、あるいは失敗するようなリスクがないかを考慮にいれてレビューの対象を選択します。 たとえば、基本的な初期フェーズの要求仕様や、ク
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? アニメーションの使い所 イケてるアプリケーションやウェブサービスはアニメーションをうまく使っています。 アニメーションを入れることでユーザの注目を集めたり、自然な体験をしてもらうことができます。 アニメーションは視覚効果が高いため、使い所を見極めないと逆にUXを下げてしまうことに注意が必要です。 アニメーションの主な使い所としては次の箇所でしょう 画面遷移のアニメーションはユーザを自然な感じで次の画面へ誘導する(導線の手がかりを与える) ピンポイントで目立たせたい所(押させたい所)に使う ローディング時のアニメーションはユーザの離脱を防
yarnでJSライブラリのパッケージ管理を行っている場合、 しばしばbranch間でconflictする場合があると思います。 dependabotなどでライブラリのバージョンアップをしたり、githubの脆弱性チェックなどで yarn.lockを直接書き換えたりした場合などに発生したりします。 ただし、その場合でも手動でyarn.lockを編集することは非推奨となっています。 (yarn.lock自体に正確なパッケージの依存関係が記載されているため、直接編集すると簡単に壊れる) yarn.lockのconflictを解消する 詳細は下記記事を参考にしてください https://www.jakewiesler.com/blog/merge-conflicts-in-yarn-lock/ 作業前にmasterを最新にしている前提です。 masterから派生したコンフリクトしているブランチで次
ブラウザで動くWebページのプログラミング実装をフロントエンドと呼びます。 最近はJSON色つけ係と呼ばれてたりしますが、 Web開発未経験・初心者向けに最低限知っておいたほうが良い基礎知識とテクニックに関して体系的にまとめておきます。 (CodePenによる動作例付き) 環境構築に関しては(兎に角)早くプロトタイプを作る技術(初心者向け)を参考にしてください。 HTML、CSS、JavaScriptはブラウザ自体の実装に依存します。 この記事では比較的汎用的に使える書き方やHTML、CSS、JSを記載したつもりですが 最新のJavaScript APIやCSS3の機能によってはブラウザによってサポートされていない機能もあります。(特にIE) 各機能に関してはCan I useで現在のブラウザの対応状況を確認することができます。 HTML HTML(Hyper Text Markup La
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? とにかく早くプロダクトのプロトタイプを作るための技術についてまとめます。 この技術は運用しやすく作る技術とはまた別の技術です。 (綺麗に作るのは後でやる) かなり偏った考え方もあると思いますがご容赦ください。 プロトタイプを作る上でやらないことを決めます。 実はやることよりもやらないことを決めることの方が難しいです。 UXに基づいて後回しにするという意思決定が必要です。 プロトタイプでやるべきこと コンセプトの決定/チャネルの調査: なぜ作るのか、誰をターゲットとして作るのか、競合プロダクトの調査 コア機能の実装: ユーザの苦痛を解消さ
JavaScriptの文法を理解している人を対象にTypeScriptの導入と型の基本文法の習得をできることを目的とします。 この記事では簡易のため、ts-nodeを使ってTypeScript環境の構築と動作確認を行います。 TypeScriptについて TypeScriptはマイクロソフトによって開発されているオープンソースのプログラミング言語です。 TypeScriptはJavaScriptに対して、省略も可能な静的型付けとクラスベースオブジェクト指向を加えた厳密なスーパーセットとなっています。(JavaScriptの文法を完全包括していて、JavaScriptに後付で型定義ができます。) C#のリードアーキテクトのアンダース・ヘルスバーグがTypeScriptの開発に関わっています。 TypeScriptはクライアントサイド、あるいはサーバサイド (Node.js) で実行されるJa
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 最近自分の中でWeb開発はReactJS、モバイルアプリ開発はFlutterが良いという結論がでました。 Flutterでの実装はDart言語で行います。 基本的なモダン文法をサポートしているため、他言語から入ってくる人には入りやすい言語だとは思います。 とはいえ、日本語情報でステップバイステップでDart文法がまとまっているところは少ないので まとめてみようと思ったのがこの記事です。 Flutterがよい理由 【翻訳記事】なぜFlutterにおいてDartを使用するのか? ・hot reloadが高速(AOT、JITの2段階のコンパイ
先に結論 axiosを使ってる人は脆弱性があるのでv0.18.1以降に上げましょう axiosを使っていない人は関係ないのでブラウザバックして大丈夫です。 axiosはJavaScriptのメジャーな通信系のライブラリです。 xhrで実装されているため、レガシーなブラウザやマルチブラウザに対応しています。 https://github.com/axios/axios GitHub上でセキュリティアラートが・・・ GitHub上でセキュリティアラートが上がっていました。(2019/05/30確認時点) どうゆう脆弱性? Axios up to and including 0.18.0 allows attackers to cause a denial of service (application crash) by continuing to accepting content afte
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 個人開発で声を売買できるマーケットプレイスを作ったので そのときに苦労した話とどのような経緯で作ったのか公開します。 vov - 声から生まれるマーケットプレイス https://smartvov.com/ Twitter運用アカウント(フォローしていただけると泣いて喜びます) https://twitter.com/smartvov 今回リリースタイミングで KANEさん主催のpodcastの三日月ラジオというチャンネルに出演させていただきました。 そこでもvovの開発秘話を語らせていただきました。 結構長いので時間があるときや、通勤
ついノリで気づいたらアドベントカレンダーに登録していて割と後悔しています。 最近WordPressの記事をReactで表示することをやったので(Headless CMSというらしいです。) そのときに苦しんだことを一通り書いておこうかなと思います。 多分いうほど闇ではないし、ReactよりもWordPressの話メインです。(フロント側はReactでなくてもできる) ちなみに弊社の闇の魔術の対抗術の先生は今年も不在です。 みなさまもクルーシオ(苦しめ)! ちなみにReactメインの闇じゃない記事はこちら お前らのReactは遅い Headless CMS Headless CMSとはAPI経由でCMSのデータを取得して フロントエンドの描画を別のシステムで行う仕組みを指します。 今回はCMSはWPなので記事の編集はWP側で行い、 WP REST API経由で記事データを取得して 別サーバに
煽りタイトルですみません。 最近、Reactのプロジェクトのページを動かしていて、 もっさりしてる(レンダリングの負荷が高いな)と思ったので どうやったら無駄なレンダリングを減らせるか思考錯誤したことをまとめました。 preactとか別ライブラリの話はしません。 よかったらこちらもどうぞ ReactJSで作る今時のSPA入門(基本編) 2019年07月06日追記: ブラウザのレンダリングの仕組みに関して良記事があったので先に一読しておくことをおすすめします。 良記事1:実際のところ「ブラウザを立ち上げてページが表示されるまで」には何が起きるのか 良記事2:ブラウザレンダリング入門〜知ることで見える世界〜 1ピクセルがブラウザに表示されるまで:Life of a Pixel 2018 この記事に関してはReactのDOMツリー(レイアウト)レンダリングに関する最適化戦略です。 2020年02
何番煎じかわかりませんが、0からJSプログラミング始める人向けに よく使うJavaScriptの基本文法をまとめた資料を上げておきます。 ( ・ω・)つ旦~ ドゾー 変数、3項演算子、論理演算子、変数文字列展開 let, constを使いましょう const:再代入を防ぐ let:varよりも変数の寿命が厳密({}内)なので間違った範囲から参照されない // 関数 function test() { // ES6 let b = '局所変数' // ES6 const c = '定数' // 定数は途中代入不可 //c = '代入エラー' // let変数とvar変数はスコープが違う for (var i = 0;i < 1; ++i) { // なんか処理 } for (let j = 0;j < 1; ++j) { // なんか処理 } console.log(i) // varはf
React ComponentとRedux(action、reducer)のテスト ReactのComponent周りとReduxのaction周りのCIテストを行いたいと思ったので Jest+Enzymeで単体テストを書いてみました。 JestはFacebookが開発しているReactJS単体テスト用のライブラリです。 単体テストに加え、Reactのレンダリング結果をスナップショットとして保存することもできるため、 レンダリングの差分テストを行うこともできます。 EnzymeはAirbnbが開発しているReactのUnitテスト用ライブラリです。 propsにパラメータを渡したり、stateの変更を行ったりできます。 ReactJSを実践で使う時は Redux、 Matarial-UI、 redux-formを組み合わせることが多いと思います。 今回はMatarial-UI、redux-
CloudFrontのアクセスログ集計 サービスを構築するときにCDNであるCloudFrontを前面においてインフラ構築することが多いと思います。 この構成の場合、全てのアクセスはCloudFrontを経由するため、 CloudFrontのログ解析が極めて重要になります。(アクセスログがCloudFrontに集約される) AWS Athenaを使うことで出力されたアクセスログファイルに対してSQLでのデータ集計が可能になります。 Athenaに関してパーティショニングがほぼ必須なのですが、 CloudFront+Athenaのパーティショニング構成に関して今ひとつまとまっている情報がなかったので この記事にまとめておきます。 次図のような構成を想定しています。 CloudFrontにてアクセスログファイルをS3バケットに格納するように設定します。 この例の場合、S3のlogs-cloud
サンプルコード:GitHub React Nativeを使って楽にスマホアプリを作ろうぜってことでまとめてみようと思います。 ReactJSで作る今時のSPA入門(基本編)の続編です。 ReactJSの基本がわかっている前提で説明します。 ちなみに楽と書いたのはネイティブコードでアプリを作るよりは楽という意味です。 (後は開発サイクルが早く回せるという意味で) React Nativeのアーキテクチャ 参考:React Native Architecture : Explained! React Nativeの構成はざっくり次の図のようになっています。 JavaScriptCoreと言われるWebkitにも使われているJavaScriptエンジンでJavaScript Runtime Environmentが作成されています。React NativeのJavaScriptコードはJavaS
はじめに 今回のサンプルは以下に用意しました。 Apollo Server & Apollo Clientサンプル 以前こんな記事を書きました。 React(+Redux)+gRPCで実現するクリーンアーキテクチャ+マイクロサービス構成 BFFのフロントエンドAPI部分に関して、次の記事を見てクライアント通信の部分をGraphQLで実装できるとより柔軟で堅牢な気がしたので試してみました。 世のフロントエンドエンジニアにApollo Clientを布教したい REST API、 GraphQLの違いに関しては下記を参考にしてください アプリ開発の流れを変える「GraphQL」はRESTとどう違うのか比較してみた GraphQLを導入するメリットはざっくり以下の通りです。 APIのインタフェース定義(送信パラメータのデータ型定義)ができる(それにともない、データの型定義によるAPIパラメータの
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 設計がしっかりしていないまま開発をしてしまうとビジネスロジックとライブラリが密結合となりがちです。 密結合度が高いほど修正が困難となり、継続的な開発の難易度が上がっていきます。(技術的負債) またプロジェクトが大きくなってくると扱うデータ量も多くなり処理速度もデータ量に比例するため、計算量オーダーの影響を受けます。 プロジェクトのそれぞれの機能に対して 再利用可能 テストしやすい 機能追加しやすい ビジネスロジックとライブラリ、REST API(+マスターデータ)を分離できる となっていれば継続的な開発がしやすいです。 最近で
次のページ
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く