JavaScript関連のことを調べてみた2020年09月10日

JavaScript関連のことを調べてみた2020年09月10日
目次

JavaScriptの変数定義

JavaScriptの学習を始めたのでその日学んだことをアウトプットしていきます。

JavaScriptとはプログラミング言語の1つで、ページを移動せずに画面の表示を切り替えたり

画面を更新せずに、サーバーと通信することができます。

本題の変数の定義方法ですが、var、const、let、といった3つ存在します。

① var

varとは再定義、再代入が可能な書き方です。

例(定義方法)
![スクリーンショット 2020-09-09 21.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698652/f14ea9d8-9921-9ab1-288d-96a011159912.png)

console.log(sample)とするとおはようが出力されます。
![スクリーンショット 2020-09-09 21.30.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698652/233ad3df-8

元記事を表示

【Nuxt.js+Firebase】ログイン不要!気軽に投稿できるオススメのカレー共有サイトを作りました!

#カレーの時代到来

近年、カレーブームがますます加速しているように思われます。

ちょうど今、西武池袋で行われてる[カレーイベント](https://www.sogo-seibu.jp/ikebukuro/topics/page/1468377.html)では連日行列が続き、
売り切れ商品も多数あるとのこと!

かくいう私も、カレーフリーク。
カレー専用の[Instagram](https://www.instagram.com/tawa.tawa.tawa/)を開設し、食べ歩いたカレーを投稿しています。

今回、静的サイトを作る練習として、__Nuxt.jsとFirebaseを使って、カレー屋さんの共有サイトを作ってみました!__

食べログやInstagramと違い、アカウントは不要、匿名で気軽に投稿できるのが特徴です♪
下記にリンクを貼っているので、ぜひ投稿してみてください!
#カレー共有サイト「Curry Freak」

__サイトURL ▶▶▶ https://curryfreak.ml/__

「新しいCurryを追加」のページから、投稿画面が確認できます。
[![Ima

元記事を表示

え!? わずか3分でローカルにTypeScriptの実行環境を!?

できらぁ!(様式美)

ということでローカルにTypeScriptの実行環境を作ります。すぐできます。

TypeScriptを使うだけなら、[TypeScript playground](https://typescript-play.js.org/)等を使えばいいと思うのですが、「○○のパッケージを試したい。ついでだからTypeScriptも使いたい」という欲張りさんはローカルに環境構築したくなることもあるでしょう。え? codesandbox? 知らんなぁ。

とにかくローカルにTypeScriptの実行環境を作っていきます。ゴールは「コンパイルして出来たjsファイルをnodeコマンドで実行するところ」までです。

# 事前準備
以下は事前に準備できてるとします。出来てない方は適当にググってください。

– node, npm(yarn)

# ローカルにTypeScriptの実行環境を作成
ここから本題です。
あと私はyarn派なのでyarnを使います。

## プロジェクトの作成
プロジェクトディレクトリを作成して、package.jsonを作りましょう。

“`bash

元記事を表示

DOMとは

#プログラミング勉強日記
2020年9月9日
JSについて調べていくうちにDOMを知り、JSを扱う上で絶対に知らないといけない仕組みだと思ったのでまとめる。

#DOMとは
 Document Object Modelの略で「ドム」と呼ばれ、HTMLやXML文書を取り扱うためのAPI。つまり、プログラムからHTMLやXMLを自由に操作するための仕組み。([APIについてはこちらでまとめている](https://qiita.com/mzmz__02/items/ad2bf8ed8015ebb33c75))
 DOMではHTMLやXML文書をノードと呼ばれる階層的な構造として識別し、JSなどの様々なプログラミング言語やスクリプトから扱いたいノードを特定して操作できるようにする仕組みを提供する。

#特徴
DOMに以下の3つの特徴がある。

– ツリー構造と呼ばれる階層構造を持つ
– それぞれノードで説明される
– WEBページとJSなどのプログラミング言語をつなぐ

##階層構造をとる
 階層構造は組織図的なもの。
 HTMLの階層構造は以下のようになる。以下の例では``を頂点

元記事を表示

【Nuxt.js + Firebase】写真を投稿するとAIがハッピー指数を測定してランキング付けするリア充向けのシステムを作ったよ

##作ったもの

タイトルの通り、写真を投稿すると、どれくらいハッピーなのかAIがハッピー指数を算出します。
![スクリーンショット 2020-09-09 22.48.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/1431262c-6fe2-a184-0fa0-b986cd776622.png)
写真は[パクタソ](https://www.pakutaso.com/)さんより

※「ハッピー指数」としましたが、これって「指数」って言ってもいいものだろうか不安になりましたが、頭の悪そうな語感が気に入ったのでこのまま「ハッピー指数」とします。

そして、同時にハッピー指数のランキングを表示します。

![スクリーンショット 2020-09-09 22.57.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/43561bfc-49da-81f1-060e-e5e

元記事を表示

みんなで物語をつくりながら連想力を鍛えてアイデア発想力を磨こう

# アイデア発想力とは?

アイデアとは、**情報と情報の掛け合わせである**と言われています。
その掛け合わせるために必要な力が、**連想力**です。

例えば、情報Aと情報Bの関連性を発見したり、情報Aと情報Bをベースにホップ・ステップ・ジャンプで飛躍してみたりするような連想によって、新しいアイデアを生み出していきます。

なので、アイデアを生み出す力を磨くには、連想力を磨くことが大事です。

じゃあ、どうやると磨いていけるのか?

# 言葉遊びゲーム「空文字アワー」とは?

その1つの方法が、言葉遊びゲーム「空文字アワー」です。

このゲームは、ある一文から連想した情報を文に追加することで、
新たな物語をつくっていきます。

まあやってみるとわかると思うので、
詳細は[こちら](http://kotoba-game.tk “こちら”)をご覧いただき、
ぜひ最新の文に情報を追加してみてください。

# 使った技術

・nuxt.js
・Vue.js
・FirebaseのCloud Firestore

# 実装の仕方

今回は、初めてnuxt.jsってやつを使いました。
正直使

元記事を表示

importを使ってみる

環境
初書:2020/09/10

# 前書き
javascriptにも名前空間というのがないのか調べていたところ、importというのを見つけたので、
名前空間ではないがそれっぽい動作になりそうなので使ってみる。

# 前提条件
・import / exportはES6以降でしか対応していない。そのため、IE対応のHPを作成しようと考えている場合は使えない。
・import / exportを使用した場合、宣言に関わらず[strict モード](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode)になる。
・ローカル環境では動作しない。(httpもしくはhttpsから始まれば使える。Finderなどでhtmlファイルダブルクリックで開くようなものは動かない、らしい)

# 記述方法
## ライブラリ側
ライブラリとして提供したいものにexport関数を付ける

“`js:lib.js
export function id(val){
return document.getEle

元記事を表示

FirebaseのCloud Firestoreと連携して掲示板を作る【nuxt.js】

FirebaseとNuxt.jsで掲示板を作りました。削除ボタンが機能しなかったり未完成の部分があります。

この記事は

– **Firebase**を活用してみたい
– **Nuxt.js**でアプリ作ってみたい

という人向けに書いてみました。
**「こんな感じでやれば短時間でFirebaseと連携できます」**的なものを記事にしました。作っていく際に参考にした記事と躓いた点も書いていきます。中途半端な出来ですが初心者向けに書いてみました!

##Firebaseとは何?
Firebaseはリアルタイムでデータ同期ができるモバイルプラットフォームです。Firebaseを使うとサーバを立てたり、管理や保守がいらなくなるのでフロントサイドの作成に集中できます。

##NuxtJSとは何?
NuxtJSは、Vueファイルで記述できるフレームワークです。モジュール構造で拡張でき一部分から徐々に採用することが可能で、静的なページから複雑なwebアプリケーションまで、**あらゆるものの作成に使用できます。**

>以下[公式](https://ja.nuxtjs.org/guide/)から抜

元記事を表示

Expo x React Native DebuggerでUIデバッグ

## 概要

SimulatorでWeb開発でやるようなInspectを出来るようにする方法を書いておきます。

## React Native Debuggerをインストール

caskで`react-native-debugger`をインストールします。

“`
$ brew update && brew cask install react-native-debugger
“`

## React Native Debuggerの設定をExpo用に変更

React Native Debuggerを開いて、`Debugger` > `Open Config File`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19716/58f2e15f-7b61-9cec-7281-dfa4b8b98241.png)

`.rndebuggerrc`という設定ファイルが開かれるので、`defaultRNPackagerPorts`をExpo用に`19001`に変更します。

元記事を表示

Ajaxの非同期通信の考察

Ajaxの非同期通信の考察

同期通信では一度のデータ通信で全てのデータが更新されていた。
非同期通信では一部のデータのみでデータ処理を行なっている。

何が違うのか。。。?

◆Railsの同期通信

URIもしくはPermitを元に、MVCでactionによる処理を行い、データ通信をしている。全体の更新を必要とする。

◆非同期通信

DOMでHTML(←階層構造)から作ったDOMツリー(←も階層構造)の先っちょにあるURLパラメーターを元に、XMLHttpRequestにより設定したリクエストとレスポンスの方法により、必要な一部分だけでデータ通信している。

全体を更新しなくても一部の処理を一部だけで行えるようになる!

◆ URIパラメーター達

・queryパラメーター

http://sample.jp/?name=kii
の?以降の情報。
HTMLの要素のことを表してる?

・pathパラメーター

http://tweets.jp/tweets/1
のようなパラメー

axios を async/await で書き直した時の課題をメモ

## 概要
request が deprecated になっており、トレンドも axios に移っているようだ。

* [axios vs request | npm trends](https://www.npmtrends.com/axios-vs-request)

なので、コードの置き換えを検討している。async/await にすると可読性があがるかもと試した内容を記載する。

## 結論

結論からいうと因果関係のある処理を async/await に置き換えると異常でも後続する処理が動くため微妙。
因果関係がある場合、論理的にも入れ子で正しいし、今回検証したパターンだと入れ子のままでいいと思う。

## サンプルコード: then()を使う

ユーザー認証をして得たトークンを元にリクエストをする例。
簡単すぎるコードでは検証にならないのでやや複雑なコードになっている。

“`javascript
‘use strict’

const axios = require(‘axios’);

axios(
{
url: ‘https://httpbin.org/

Google Shopping Listにいつも買うものを自動で追加する

# あらまし

Google Shopping Listにいつも買うものをワンクリックで追加する、テンプレート機能的なものを実装するために以下のスクリプトを書きました。

[Function to a given item to Google Shopping List. Paste the code in the DevTools’ console!](https://gist.github.com/igrep/a41d2f9678621b5bb5e5e0d7c79ae6e5)

適当に編集してブックマークレットにするなりして用法用量を守りながらお使いください。

# 動機

コロナ禍によって外出をできるだけ減らす努力をした結果、食料の買い出しが週一回程度になった。
➡️ 毎度決まって買うものがはっきりしてきた。
➡️ 同じものを繰り返し買い物リストに追加するのは面倒だし、テンプレート機能的なのがほしい。
➡️ Google Homeから使うのが一番楽なのはなんやかんや[Google Shopping List](https://shoppinglist.google.c

【JavaScript】関数における、引数値を定数で定義することの利点

同じ変数を用いる複数の関数を実行したい場合、引数値を定数で定義すべき、という内容。

例)

“`js
//関数1
function intro(name, food) {
console.log(`私の名前は${name}です。好物は${food}です。`);
}

//関数2
function lunch(food) {
console.log(`今日の昼ごはんは${food}を食べます。`);
}
“`
どちらの関数も、仮引数`food`を使っている。

これらに対して、引数で定義し出力をする場合は、

“`js
intro(“田中”,”カレー”); //仮引数(name,food)に引数を与え、関数の実行。
lunch(“カレー”); //上記と同様。
“`

となる。
一方で、引数で定義するのではなく、定数で定義し出力する場合は、

“`js
const name = “田中”; //定数nameに文字列”田中”を代入。
const food = “カレー”; //上記と同様。
intro(name,food); //仮引数(name,food)に定数(na

jscodeshift with TypeScript

# はじめに

以前、[jscodeshit](https://github.com/facebook/jscodeshift)という `JavaScript`および`TypeScript`コードのリファクタリングツールの紹介記事を書きました。

[JavaScriptのリファクタリングツール「jscodeshift」の使い方](https://qiita.com/toshi-toma/items/93f1dfdf0a820fe6fccc)

このツールは、ASTベースでコードを自在に変換でき、とても便利です。`jscodeshift`は、Transform File(変換処理を記述するファイル)として変換処理を書くのですが、これまで`JavaScript`で変換処理を書くことが多かったです。

しかし、Transform Fileは`TypeScript`で書くことが可能です。

最近、`TypeScript`で変換処理を書いた際、その開発体験がとても良かったので紹介します。ASTベースのコーディングに`TypeScript`の型推論や補完があると、開発が快適になることは想像しや

AngularとCesium.jsを使って3Dモデルを動かすところまでやってみた

Cesium.jsをAngularアプリケーションの中で使うことになったので、知見を共有しようと思います。
割と基礎的な内容ですが、英語のドキュメントを読むのに辛い思いをしたので備忘録を兼ねて投稿します。願わくば誰かの役に立たんことを……。
# Cesium.jsとは?
Cesium.jsの説明についてはこちらの記事で基本的なところは解説しているので、省きます。
https://qiita.com/keijipoon/items/615ebaf7561a27d744f5

# 準備
まずは新しいAngularのプロジェクトを作ります。
`ng new cesium-project`

プロジェクトに移動し、ng serveでサーバが起動しているかを確認します。
`cd cesium-project`
`ng serve`

確認したらサーバを停止し、AngularCLIからライブラリを追加。ここまでやったら準備は一旦完了です。
`ng add angular-cesium`

npmコマンドでマニュアルインストール可能だが、設定が面倒くさい。何かの理由でマニュアルインストールする場合は

アイデアの相互評価ができるidea streamerを作りたかったああああ

#アイデアの評価むつかしい問題
最近世の中でアート思考だとかデザイン思考だとかがもてはやされるようになった気がします。
でも誰か知り合いが出したアイデアって、__忖度なしで評価するの結構難しい__と思うんですよね。
例えば上司のアイデアだったら「いいですね!」と言ってしまいそうですし、斬新なアイデアであっても、「こいつ生意気やんけ」といって評価を下げてしまう人もいるかもしれません。

今回は「__ひたすらアイデアを投稿しまくって__」「__それを知らない誰かに評価してもらえる__」__idea streamer__というプラットフォームを作ってみました。
途中バグがあったり画面遷移がうまくいかなかったりで、超未完成ですが一旦振り返りの意味で投稿してみたいと思います。
「__アイデアの相互評価__」という意味で面白い仕組みだと思うので、何か刺激になればなと思います。

アプリは[こちらから入って、](https://idea-takusan-dasunjai.ml/)途中で画面遷移が切れるのでアイデア評価からは[こちらからお願いします!](https://idea-takusan-das

JavaScriptを学ぶ:スラスラ読めるJavaScript Chapter1

# はじめに
[@kuromailserver](https://twitter.com/kuromailserver?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor)さんの『会津わろ法則』に参加。
その中で紹介された学習書の中でとりかかりやすく読破できそうな『スラスラ読めるJavaScript』をチョイス。
この投稿は本書を読んで自分なりのノートとしてまとめていく。

注:本書では表なども使って丁寧に解説されているがそれを持ってこれないので他サイトのリンクを載せている。

# 文字の表示

プログラミングの第一歩、画面に文字を表示。
コンソールへの表示は**console.logメソッド**(メソッド=コンピューターに対する命令文)を使用。
`console.log(‘表示させたい文字’);`で表示させたい文字がコンソールに表示される。

“`JavaScript:コンソール
console.log(‘Hello’);
“`

>Hello

コンソールにHelloの文字が表示された。

# 演算子を使って計算

人が

@babel/parser を console.log デバッグする

気軽に `console.log` デバッグがしたかったときのメモ。

Prettier と違って Flow で書かれてるのでそのまま Node.js では動かないのでビルドする必要がある。

“`sh
$ make watch
“`

で変更を監視してビルドして、`/packages/babel-parser/lib/index.js` を見れば良い。

なんか適当なファイルを作って

“`js
// tmp.js
const { parse } = require(“./lib/index.js”);

const code = `const foo = “foo”;`;

const result = parse(code, { plugins: [“typescript”], errorRecovery: false });

console.log(JSON.stringify(result));
“`

とか好きな内容にして

“`sh
$ node ./tmp.js
“`

すればうごく。最初はビルドするのがめんどくさいから flow-node で実行しようと

javascriptで関数をwrapする

javascriptで関数をwrapしたいときー
例えば、非同期処理の完了を待つまでなんかしたいときとか

“`javascript
const wrapper = function(func) {
/*** なんか処理 ***/
let result = func();
/*** なんか処理 ***/
};
“`

async/awaitバージョン

“`javascript
const wrapper = async function(func) {
/*** なんか処理 ***/
let result = await func();
/*** なんか処理 ***/
};
“`

普通ですね

つかうときー

“`javascript
// 引数を取らない関数の場合
wrapper(funcA)

// 引数を取る関数の場合 ここが特殊!
wrapper(funcB.bind(null, “unko”))
“`

[JavaScript] 文字列のアルファベット大小文字考慮した辞書順ソート

# アルファベット順、大文字小文字無視したソート

次のようなコードがよく紹介されていました。

“`js
var source = [‘a’, ‘B’, ‘A’, ‘b’, ‘aa’, ‘Aa’, ‘AA’, ‘aA’, ‘aB’, ‘ab’, ‘Ab’, ‘AB’]
source.sort((a, b) => {
a = a.toLowerCase();
b = b.toLowerCase();
if (a < b) { return -1; } else if (a > b) {
return 1;
}
return 0;
})
console.log(source);
// [ ‘a’, ‘A’, ‘AA’, ‘aA’, ‘aa’, ‘Aa’, ‘aB’, ‘ab’, ‘Ab’, ‘AB’, ‘B’, ‘b’ ]
“`

このコードだとある程度は文字列を並び替えられるのですが、大文字と小文字は同一視されているので、どちらかが優先されることがないです。

いわゆる辞書順を考えると、大文字を優先するか、小文字を優先するか、を判断したいとこ