reactのhooksを利用した状態管理ライブラリeasy-peasyを使ってみた

最近reactのhooksが話題になっていますね。 そのhooksを利用した状態管理ライブラリを見つけました。 github.com easy-peasyの意味は、「とっても簡単」というらしいです! 今回はこのライブラリを使用して簡単なgithubのリポジトリ検索機能を作成しようと思…

分割代入でオブジェクトにある特定の値を取得してくる

今回は分割代入でオブジェクトにある特定のキーの値を取得してくる方法を見ていきたいと思います。 経緯 reduxのコードを見ている時に分割代入をしているコードを見かけて挙動が気になった。 従来の方法と分割代入の比較 nameを取得する const person = { na…

ReactのライフサイクルやPureComponentについて

今回はReactのライフサイクルやPureComponent辺りについて紹介したいと思います。 早速ですが、ライフサイクルはMounting、Updating、Unmounting、Error Handlingがあります。(今回の記事ではUnmountingとError Handlingについては紹介しません。) Mounting …

JavaScriptの非同期処理とスコープの関係性について

今回非同期処理とスコープの関係性について紹介したいと思います。 唐突ですが以下のコードをご覧になってください。 function countdown() { let i; for (i = 5; i >= 0; i--) { setTimeout(function() { console.log(i === 0 ? "GO!" : i); }, (5 - i) * 5…

TypeScriptの型の互換性について

今回はTypeScriptの型の互換性について取り上げます。 型の互換性・・・?? 簡単に言うと例えば、ある型の変数であるHogeに、別の型であるFugaが代入できれば、型の互換性があると言えます。逆に代入できなければ型の互換性がないとなります。 この型の互換…

JavaScriptにおけるfor文のまとめ

今回は言語において基本中の基本であるfor文について取り上げます。 for forというのはfor three daysなど期間を表す意味として使われます。 このようにfor文は決められた回数のなかで何か繰り返し処理を書きたい時に使います。これとは対照的なものとしてwh…

Javascriptで簡単な画像プレビュー機能を作成してみる

プロフィール画像をアップロードした時などプレビューできるできると便利ですよね? 今日は簡易的なものですが、作っていきます。 こちらアップロードした後の画面です。 準備 必要なものはブラウザとエディタです。それだけ。 見た目を整える まずは、簡単…

JavaScriptにおけるシャローコピーとディープコピーについて

JavaScriptにおけるシャローコピー(shallow copy)とディープコピー(deep copy)について簡単にまとめました。 shallowは日本語で「浅い」という意味になります。 シャローコピー シャローコピーはざっくり言うと参照元のオブジェクトとコピー先のオブジェクト…

Nodemailerを使ってgmailを送ってみる

タイトルにもあるように今回は、Nodemailerを使って手軽にgmailを送ってみます。railsには標準でActionMailerがあるのですが、nodeにも何か良いライブラリはないのかなーと調べたところありました。 Nodemailerについて nodemailer.com 環境 node v8.11.1 は…

JavaScriptにおけるカンマ演算子について

今回はJavaScriptにおける演算子の中でもカンマ演算子を取り上げたいと思います。 カンマ演算子は、演算対象を左から右へ評価し、最後に評価した値を返します。 簡単な例を示します。 let name = "john", age = 35, personalInfo; personalInfo = (name, age…

JavaScriptの真・偽とみなされる値について

今回はJavaScriptにおける真となる値、偽となる値について説明していきます。 偽とみなされる値 null undefined flase 0 NaN 空文字('') 上記の値以外は真となりますが、その中でも覚えておきたいものをピックアップしたいと思います。 真とみなされる値 オ…

Javascriptのイベントフェーズについて

今回はJavascriptのイベントフェーズについて説明していきたいと思います。 そもそもイベントにはどのようなものがあるのか? イベントの種類 onClick・・・ボタンやリンクをクリックした時 onSubmit・・・フォームの送信ボタンをクリックした時 onKeyDown・…

JavaScriptのプリミティブ型とオブジェクト型って?

最近写経をはじめました。 そこでの気づきや学びを備忘録としてここに残していきます。 おかしなところがあればご指摘ください。 写経する教材はこちらになります。 www.oreilly.co.jp 今回はJavaScriptのプリミティブ型とオブジェクト型についてです。 プリ…

reduxのcomposeが何をしているかちょっと覗いてみた

最近、業務でreactを使用しています。 その中でredux周りのライブラリを使うことが多いです。そんなreduxと仲良くしたいと思い今回はcomposeがどんなことをしているのか見ていきたいと思います。 そもそもcomposeって? composeは任意の数の関数を引数に受け…

ducksというデザインパターンを使ってTodoListを作ってみた

ducksというデザインパターンを使用して簡単なTodoアプリを作成しようと思います。 機能としては以下になります。 タスクを追加できる タスクが終わったかどうかのラベルをつけることができる 環境構築 今回は自分みたいにブログの更新に時間がない方などが…

z-indexで躓いてしまうこと

今回はz-indexで思い悩んでしまうことについて取り上げてみます。 この記事を書く前までz-indexを指定した値の大きな要素ほど前面に配置されると思っていました。 しかしこれは間違いでした。。。 z-indexのことを知らなすぎました。 それでは何を知らなかっ…

storybook+react+typescriptの環境構築

前回の記事でstorybookの簡単な使い方を学んだので、typescriptを導入すると共にstyled-componentsが提供しているThemeProviderを使ってみようと思います。 ThemeProviderをラップすることでどのコンポーネントからもThemeProviderが保持しているthemeにアク…

ReactのUI開発を促進するstorybookを触ってみた

storybookの超基本的な使い方について紹介できればと思います。 今回はコマンド一つでreactの環境を構築できるお馴染みのcreate-reacta-appを使っていこうと思います。 インストールしていない方は事前にしておいてください。 環境構築 ではまずは以下のコマ…

Reactのプロジェクトならstyled-components使うのがいいかも

昨日から自分が所属している会社のユニットメンバー5人日替わりで個人ブログを更新していこうという取り組みをしていくことになりました。 第一回の記事です。 ブログ続かないからちょっと始めてみた#はてなブログブログローテーションはじめてみた - ちゃな…

Vue+Railsでファイルアップロード機能を作成してみる

今回はRailsとVueを使用してファイルアップロード機能について作成したいと思います。 開発環境 vue:2.3.4 typescript:2.2.2 ruby:2.4.2 rails:5.2.0 投稿記事を例に説明していきます。 投稿用のテーブル作成 投稿のタイトル、本文、サムネイル画像用の…

rails+vueの開発環境でフォームのpost通信を行う方法

今回もvue+railsのプロジェクトにおいて自分が実際にハマった?体験を記事にしていきます。 開発環境 vue:2.3.4 typescript:2.2.2 ruby:2.4.2 rails:5.2.0 やりたいこと railsで新規投稿ページや編集ページを作成する場合、よく利用される方法として標準…

railsのプロジェクトにおけるvueを使った開発手法

今回はrailsのプロジェクトにおいてフロントにvue.jsを導入してみたことを記事にしてみました。具体的には下記のやりたいことに書いてあります。 開発環境 vue:2.3.4 typescript:2.2.2 ruby:2.4.2 rails:5.2.0 やりたいこと railsでjavascriptのフレーム…

vue.jsはじめました@超基礎編

最近業務でvueを触る機会が多いので備忘録として残します。 ここで記述しているvueのバージョンは2.5.16です。 v-onについて v-modelについて v-bindディレクティブについて イベント修飾子 親→子へ値を渡す方法 子→親へ何かをするとき v-onについて v-onデ…

rubyのmoduleについて

今回はrubyのmoduleについて説明していこうと思います。 この記事を書こうと思った経緯としては、業務においてソースコードを読んでいる時にmoduleという単語が出てきたのでJavaScriptユーザーの自分としては何ぞや?となったからです。 moduleの役割として…

Vue.jsの単一ファイルコンポーネント用の環境構築をしてみた(Pug+Sass+Typescript導入編)

今回は前回の記事↓の続きとして、pug、sass、typescriptを導入しようと思います。 top-men.hatenablog.com それでは早速必要なパッケージをインストールします。 pugをインストール npm i -D pug sass関連のパッケージをインストール npm i -D node-sass sas…

Vue.jsの単一ファイルコンポーネント用の環境構築をしてみた

Vueでの開発には欠かせない単一ファイルコンポーネント用の環境構築をしていきます。本当に最小構成になりますのでご了承ください。 vue-cliを使用すれば爆速で構築できると思うのですが、初心者であるからこそ環境構築の部分は時間をかけて理解していきたい…

SQLの内部結合の結果をexpressを使ってブラウザに表示してみた

今回は内部結合について紹介したいと思います。 そもそも内部結合とは、2つのテーブルを結合してデータを取得する手法のうち、指定したテーブルのカラムの値が一致するデータだけを取得する方法です。 内部結合をした結果を実際にブラウザに表示するところま…

初めてのKotlin

Kotlinを触ってみようと思います。 今までフロントネタが多くを占めていたのですが、実際の業務でKotlinを使用することが増えることが予想されるので。 この記事では実際にKotlinの開発環境を準備して お馴染みのHello Worldを出力するところまでやっていこ…

JavaScriptのimportとrequireの違いって?

JavaScriptで開発をしている時に、自分で作成したファイルやnodeモジュールなどを読み込む時にimportやrequireを使う時があると思います。 そういえばこの二つの違いってなんだろうと疑問に思ったのでその違いを探っていきたいと思います。 結論を先に述べる…

Reactとaxiosを使ってgithubのAPIからデータを取得してみる

今回はReactとaxiosを使ってgithubのAPIからデータを取得しようと思います。 まず、初めにプロジェクトフォルダを作ってください。 作成後、プロジェクトフォルダに移動して以下のコマンドを実行してください。 create-react-app プロジェクト名 create-reac…