- 1. Google Sheets APIで誰でも編集できるスプレッドシートを作成する(Node.js / TypeScript)
- 2. JavaScriptで解決の順序を問わないasync/awaitでは、Promise.allを使う
- 3. querySelectorAllとgetElementsByClassName
- 4. Node.js ExpressのテンプレートエンジンでFailed to lookup viewエラーになった時はどうすればいいか?
- 5. WSH/JScript は Underscore.js で関数プログラミングの夢を見るか?
- 6. ACDLを提唱します。その3
- 7. NCMBとFramework7を使った情報リスト画面コンポーネントの紹介と使い方
- 8. Webの勉強はじめてみた その35 〜Sequelizeを使った実装〜
- 9. Webの画面をPDFにしようとしてすべてが無に帰した話
- 10. React + TypeScript: Apollo Clientのリアクティブな変数(reactive variables)で複数コンポーネント間の状態を管理する
- 11. 【個人開発】全部おれの声!?2歳娘のために簡易ゲームをつくった【React】
- 12. 【Vue.js】画像を圧縮、リサイズ、リネームしてダウンロードする
- 13. 【JavaScript】Date オブジェクトのタイムゾーンを差し替えてテストする
- 14. Temporalで和暦にローカライズさせて表示する
- 15. JavaScript学習 – 値の型・計算関連
- 16. Vue.js 超入門
- 17. ツイートの画像だけを引用するブックマークレット等
- 18. ACDLを提唱します。その2
- 19. Reactについて簡単なまとめ
- 20. 複数選択のチェックボックスは順位付きにしないか?
Google Sheets APIで誰でも編集できるスプレッドシートを作成する(Node.js / TypeScript)
## 結論
Google Sheets API だけじゃなくて、Google Drive API も使う
“`typescript
const sheets = google.sheets({ version: “v4”, auth: oAuth2Client });
const drive = google.drive({ version: “v3”, auth: oAuth2Client });// スプレッドシートを作成する
const createdSheet = await sheets.spreadsheets.create();// Google Drive APIでスプレッドシートの権限を作成する
await drive.permissions.create({
fileId: createdSheet.data.spreadsheetId,
requestBody: {
type: “anyone”,
role: “writer”,
},
});// 誰でも編集できるスプレッドシートのURL
console.log(cre
JavaScriptで解決の順序を問わないasync/awaitでは、Promise.allを使う
# はじめに
JavaScriptにおける非同期処理は、APIを叩いたり、データベースへのアクセスな度を行う際に頻繁に用いられますが、コールバック関数をはじめとした非同期処理の構文は複数ある上に、仕組みそのものがやや難解な部分が多いと思います。今回はそのうち、async/awaitを使った非同期処理において、より迅速な処理を行うために[Promise.all](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)を使うパターンについて記録したいと思います。# async/awaitについて
async/awaitは、ES8(ECMAScript2017)から導入された、非同期処理をより簡潔に記述するための記法です。async/awaitについて、MDNでは、以下のように説明されています。### async
> async function キーワードは、式の中で async 関数を定義するために使用できます。
> 非同期関数は、 async funct
querySelectorAllとgetElementsByClassName
Javascriptで要素を取得する為の方法としてquerySelectorAllとgetElementsByClassNameがあることを知ったがどのように使い分けるかを考えられていませんでした。
・**getElementsByClassNameで得られるものはHTMLCollection**
・**querySelectorAllで得られるものはNodelist**
とのことで同じものではないがやっぱり何が違うかはわからない。以下のブログでそれぞれの違いについてまとめて下さっている方がいらっしゃたので参考にさせていただきました。
https://javascript-k.hatenablog.com/entry/javascript_htmlcollection_nodelistキーポイントとしては動的 or 静的という点で先日自分が使用したケース(静的なwebサイト内の文章の日本語⇆英語の切り替えるだけ)であればquerySelectorAllで問題ないかなと納得できました。
仮に、文章の要素が増えるなどダイナミックになる場合はgetElementsByClas
Node.js ExpressのテンプレートエンジンでFailed to lookup viewエラーになった時はどうすればいいか?
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/nf2f1d837666e
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**
## 補足
ソースコード全体は以下。https://github.com/yuta-katayama-23/post-restaurant-reviews/commit/8f808e48df501d8f12e99cf284bba7b405e50f31
WSH/JScript は Underscore.js で関数プログラミングの夢を見るか?
WSH/JScript + Underscore.js の環境で、オブジェクトが Recordset オブジェクト (ADO) かどうかをテストすることになった。
とりあえず一番最初に書いたバージョン
“` isAdoRecordset_take1.js
function isAdoRecordset( o ) {
if( _.isUndefined( o.CursorType ) ) return false;
if( _.isUndefined( o.LockType ) ) return false;
if( _.isUndefined( o.BOF ) ) return false;
if( _.isUndefined( o.EOF ) ) return false;
if( _.isUndefined( o.Fields ) ) return false;
return true;
}
“`“`typeof(o.CursorType)===’undefined’“`
の代わりに“`_.isUndefined“` 使っただけ。まあこれはこれで
ACDLを提唱します。その3
# 概要
ACDLとは、アプリは、クラウド、大切なデータは、ローカルです。
plunkerで、jsonを読み込み、書き込みしてみた。
vuetify使ってみた。# サンプルコード
“`
new Vue({
el: ‘#app’,
vuetify: new Vuetify(),
data() {
return {
search: ”,
logJson: [],
items: []
}
},
methods: {
async loadLog(event) {
const files = event.target.files || event.dataTransfer.files;
const file = files[0]
if (!this.checkFile(file))
{
alert(“ファイルを読み込めませんでした”)
return
}
const logData = await this.getFil
NCMBとFramework7を使った情報リスト画面コンポーネントの紹介と使い方
NCMBはモバイルアプリ開発におけるバックエンド機能(認証、データストア、ファイルストア、プッシュ通知など)を提供しています。バックエンドなのでAPIベースで利用するのが基本で、UI(アプリ側)は各自で開発する仕組みになっています。
現在、数多くのアプリが存在し、その中には定番とも言える機能があります。そうした定番機能を各フレームワークごとに実装しておくことで、再利用性高くNCMBが利用できるかと思います。
今回はFramework7で作った情報リスト画面コンポーネントを紹介します。Monacaアプリでも利用可能です。
## UIについて
コンポーネントは1つのHTMLだけで実装されているのが特徴です。そのため、基本的には以下の方法で導入・利用ができます。
1. 必要なSDKの読み込み
1. 必要なキーの取得
1. NCMBの初期化
1. 情報リスト画面の設置用意されている画面(機能)は次の通りです。
## 情報リスト画面
;const Schedule = sequelize.define(
‘schedules’,
{
scheduleId: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false
},
scheduleName: {
type: Da
Webの画面をPDFにしようとしてすべてが無に帰した話
先日こんなことを言われました
Webの画面をそのまんまPDFにして
DLしたい!!!「(え、Webの画面なら印刷画面開いて
PDFDLしたらよくない・・・???)
わかりました!!!」ということで考えていく
1.画面を画像として保存
2.メモリに保存した画像をPDFに変換これで行こうと思ったのですが
画面の比率がひどいことになりました
原因は画像化する際に解像度が著しく落ちるためです
画像なんてひどくて
見れたもんじゃない初期の白黒のテレビくらい画像がぶれています
現代っ子の僕にはとても見れたものではないじゃあ
JavaScriptでごり押しできないか・・・?調べたらたくさんありました
そういう便利なやつ方法としては
Html2canvasでcanvasに画面を画像として保持
jsPDFでPDF出力
というお手軽簡単!!
キューピーもびっくり!!!ということでやっていきましょう
以下はHTMLに埋め込むスクリプトです
“`javascript
function [任意の名前](){
html2canvas(document.queryS
React + TypeScript: Apollo Clientのリアクティブな変数(reactive variables)で複数コンポーネント間の状態を管理する
[Apollo Client](https://www.apollographql.com/docs/react/)はReactで使える状態管理ライブラリです。ローカルとリモートのデータをGraphQLで扱えます。本稿が解説するのは、GraphQLのクエリは用いず、ローカルの状態を複数コンポーネントの間でどう共有するかです[^1]。具体的には、リアクティブな変数(「[Reactive variables](https://www.apollographql.com/docs/react/local-state/reactive-variables/)」)の使い方になります(「[Local State Management with Reactive Variables](https://www.apollographql.com/blog/apollo-client/caching/local-state-management-with-reactive-variables/)」参照)。
# `useState`で状態をもつ簡単なカウンター作例
まずは、Apollo Clientは用
【個人開発】全部おれの声!?2歳娘のために簡易ゲームをつくった【React】
## はじめに
全国のパパ・ママエンジニアのみなさん。こんにちは。
2歳〜3歳くらいの子どもって動物大好きですよね?わたしには2歳8ヶ月の娘がいるのですが、特にカピバラが大好きです。
そんな動物大好きっ娘のために簡易ゲームをつくりました。## つくったもの
[Animal Sounds 〜おとあてげーむ!いきものどーれだ?〜](https://animal-sounds.cocoroworks.net/)
内容はとってもシンプル。
動物の音が流れるので、その音に合う動物(いきもの)を選択肢の中から選ぶゲームです。## 作った目的(解決したい課題)
2歳といえば、いろいろなものに興味が湧いてくる年頃。
わたしの娘も例外でなく、まいにちさまざまなものに興味を示しています。中でも、最近いちばん好きなのが動物。
毎晩のように動物図
【Vue.js】画像を圧縮、リサイズ、リネームしてダウンロードする
# 使用したライブラリ
browser-image-compressionhttps://github.com/Donaldcwl/browser-image-compression
file-saver
https://www.npmjs.com/package/file-saver
ここでは上記の2つのライブラリを使用する。
# ライブラリのインストール
npmもしくはyarnでインストール。
“`
npm install browser-image-compression
or
yarn add browser-image-compression
“`“`
npm install file-saver
or
yarn add file-saver
“`# 画像圧縮・リサイズ・リネーム・ダウンロードの流れ
1. フォームでの画像の選択時、画像をscriptで受け取る
2. 受け取った画像を圧縮・リサイズ・リネームする
3. 自動で画像をダウンロードする“`vuejs:ImageResize.vue (template部分)
【JavaScript】Date オブジェクトのタイムゾーンを差し替えてテストする
## Date が絡んだコードのテスト
JavaScript の [Date](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date) オブジェクトは [getFullYear()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear) や [getHours()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours) など、地方時に基づいた値を返すメソッドを持っています。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
このようなメソッドを利用した処理のテストは少々厄介です。
次のよう
Temporalで和暦にローカライズさせて表示する
## はじめに
:::note warn
Temporalは現状 TC39 proposal stage 3 のものを使用しています
今後APIが変わる可能性もあるのでご注意ください
:::TC39 proposalのTemporalをいじってみて、以下2つのような記事を書いたのですが、和暦の扱い方についてピックアップしてまとめます。
https://qiita.com/kyntk/items/6a5a30357c285dfd3387
https://qiita.com/kyntk/items/8daee17a82c6535332d9
## 暦について
Temporalでは和暦のようなグレゴリオ暦以外の暦も扱うことができます。こちらについては別記事で説明しています。
https://qiita.com/kyntk/items/8daee17a82c6535332d9
## 和暦への変換
例えば、2022年3月6日の和暦の年号を表示したいということもあるかと思います。
このときに、グレゴリオ暦と和暦の対応表を作って、何月何日から何月何日は和暦だといくつみたいなかなり
JavaScript学習 – 値の型・計算関連
## JavaScript データの種類・計算関連
JavaScript学習のアウトプット、兼自分用メモとして作成。
今回は値の型・計算関連についてです。
前の記事はコチラから↓↓https://qiita.com/Kiku-cha/items/1bd1f80febd9d0a610fb
:::note warn
**目次**
[01_データの種類について](#01_データの種類について)
[02_計算関連](#02_計算関連)
└ 四則演算
└ 余りの計算
└ べき乗
└ 計算の優先順位について
[次回の予定](#次回の予定):::
## 01_データの種類について
JavaScriptのデータの種類は、以下の6種類。
| 種類 | 表記 | 説明 |
|:———–: |:———–:|:————:|
| 文字列 | String | 「あいうえお」や「Hello」など |
| 数値 | Number | 数字(1,2,3,4,5…) |
|
Vue.js 超入門
## はじめに
こんにちは、kakutekiと申します。初投稿です。
今回は、森 巧尚さんの書かれた[「動かして学ぶ! Vue.js 開発入門」](https://www.amazon.co.jp/%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6%EF%BC%81Vue-js%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E6%A3%AE%E5%B7%A7%E5%B0%9A-ebook/dp/B07KPTGZ4C)でVue.jsを勉強したのでまとめておきたいと思います。
サンプルプログラムは配布できませんので自分で作成したものを書いていきたいと思います。## vue.jsとは
JavaScriptのライブラリの1つでシンプルで、とても分かりやすく簡単です。
## 最低構成
vue.jsを動かす為には以下のコードが最小構成になります。
“`HTML:最小構成サンプル
ツイートの画像だけを引用するブックマークレット等
## ツイートの画像だけを引用する
### ブックマークレット
“`text
javascript:(function()%7Bvar%20a%3Dwindow.location.href.match(RegExp(%22%5Ehttp%5Bs%5D%3F%3A%2F%2F(%3F%3A%5B%5E%2F%5D%2B%5C%5C.)%3Ftwitter%5C%5C.com%2F(%5B%5E%2F%5D%2B)%2F%5B%5E%2F%5D%2B%2F(%5C%5Cd%2B)%22))%3Bif(null!%3D%3Da)%7Bvar%20b%3DencodeURIComponent(a%5B0%5D%2B%22%2Fphoto%2F1%22)%3Bwindow.location.href%3D%22https%3A%2F%2Ftwitter.com%2Fintent%2Ftweet%3Ftext%3D%22%2Bb%7Delse%20alert(%22failed.%22)%3B%7D)()
“`### 使用方法
1. Web 版の Twitter にログインする
1.
ACDLを提唱します。その2
# 概要
ACDLとは、アプリは、クラウド、大切なデータは、ローカルです。
plunkerで、jsonを書き込み、読み込みしてみた。# サンプルコード
“`
var line = {
“maker”: {
“name”: “on”
},
“genkin”: {
}
};
var json = JSON.stringify(line);
var blob = new Blob([json], {
type: “text/json”
});
var url = URL.createObjectURL(blob);
document.getElementById(“export”).href = url;
var uploadFile;
document.getElementById(‘jsonFile’).addEventListener(“change”, function() {
var reader = new FileReader();
reader.onload = function(e) {
Reactについて簡単なまとめ
## ■Reactとは
・Facebook社(現Meta社)が開発したJavaScriptライブラリ(フレームワークではない)
・Reactが利用されているサービスには「Facebook」「Instagram」「Yahoo!」「Netflix」などがある## ■Reactの特徴
・JSX記法(JavaScriptの中にHTMLのような記法で記述可能)である・仮想DOM(Virtual Document Object Model)というレンダリング機構が備わっているため高速動作可能
→従来のDOM構築 …ページ内の変更が一部でもDOM全体を再構築し画面描画する
→仮想DOMを利用したDOM構築 …ページ変更前後を仮想DOMで比較し変更差分だけDOMに反映する・コンポーネント指向である
→ReactではHTMLの一部を切り取って部品として定義することで、その内容を簡単な記述だけで呼び出すことが可能
→部品として定義することで再利用が可能となり、コードの記述が簡素化されメンテナンスコストを下げることに繋がる## ■Reactのデメリット
・先進的な機能を導入したり発展
複数選択のチェックボックスは順位付きにしないか?
# 順位・順序って大事でしょ
何かと優先順位を付けたがる割に、チェックボックスには順位がない。なもんで、第一希望・第二希望って質問項目を並べて、長ったらしいアンケートになったりする。
と思って、順位付きチェックボックスを作ってみました。

“`php