k01ken’s b10g

He110 W0r1d!

Electronを使ってみる

開発環境は、Windows 10 Pro(64bit) + node v14.17.0 + npm 6.14.13。


1.公式サイトへアクセスし、ヘッダー部分のDocsをクリック
f:id:k01ken:20210704112700p:plain

2.Quick Startのリンクをクリック
f:id:k01ken:20210704114120p:plain

以下、Electron DocumentationのQuick Startに基づいて、やっていきたいと思います。

3.コマンドプロンプトを立ちあげてElectron用のディレクトリを作成する
※ここでディレクトリ名にelectronとすると、インストール時にエラーになるので、それ以外の名前をつけましょう。

cd c:\ && mkdir electron-app && cd electron-app

4.コマンドプロントでpackage.jsonを作成する

npm init -y

5.package.json内を修正
mainの欄は、index.jsからmain.jsに変更。
authorとdescriptionの欄は、空文字から、適当な文字を入力して変更。
scriptsの欄は、 "start": "electron ."を追加。
そして、以下のようにしました。

{
  "name": "electron-app",
  "version": "1.0.0",
  "description": "Hello World",
  "main": "main.js",
  "scripts": {
		"start": "electron .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "koiken",
  "license": "ISC"
}


6.コマンドプロンプトからElectronをインストールする

npm i -D electron


7.main.js、preload.js、index.htmlの3つのファイルを作成します。

main.js

const path = require('path')
const { app, BrowserWindow } = require('electron')

function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', function(){
    if(BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// Mac OS以外(Windows, Linux OS)だと、ウィンドウを消すと、バックグラウンドのプロセスも終了する
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

preload.js

window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector)
    if (element) element.innerText = text
  }

  for (const dependency of ['chrome', 'node', 'electron']) {
    replaceText(`${dependency}-version`, process.versions[dependency])
  }
})

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using Node.js <span id="node-version"></span>,
    Chromium <span id="chrome-version"></span>,
    and Electron <span id="electron-version"></span>.
    <script src="./renderer.js"></script>
  </body>
</html>


7.コマンドプロンプト上で、以下のコマンドを入力

npm start

実行結果が下になります。ウィンドウが先に表示されて、時間差で、HTML部分が読み込まれます。
f:id:k01ken:20210704135554p:plain

VBA(Excel)で印刷の設定を行う

開発環境は、Windows 10 Pro(64bit)。動作テストは、Excel 2019。

印刷範囲の設定

With ActiveSheet.PageSetup
  .PrintArea = "$A$1:$BT$37"
End With

タイトル行の設定

With ActiveSheet.PageSetup
  '1枚ごとに毎回、タイトル行が印刷される
  .PrintTitleRows = "$1:$3"
End With

余白の設定

With ActiveSheet.PageSetup
  '上下左右に1cm、ヘッダーとフッターに0.5cmの余白設定
  .LeftMargin = Application.CentimetersToPoints(1)
  .LeftMargin = Application.CentimetersToPoints(1)
  .TopMargin = Application.CentimetersToPoints(1)
  .BottomMargin = Application.CentimetersToPoints(1)
  .HeaderMargin = Application.CentimetersToPoints(0.5)
  .FooterMargin = Application.CentimetersToPoints(0.5)
End With

向きの設定

With ActiveSheet.PageSetup
  '縦
  .Orientation = xlPortrait
  '横
  .Orientation = xlLandscape
End With

拡大/縮小

With ActiveSheet.PageSetup
  '100%
  .Zoom = 100
  '65%
  .Zoom = 65
End With

すべての列を1ページに印刷

With ActiveSheet.PageSetup
  .Orientation = xlPortrait
  .Zoom = False
  .FitToPagesWide = 1
  .FitToPagesTall = False
End With

すべての行を1ページに印刷

With ActiveSheet.PageSetup
  .Orientation =  xlLandscape
  .Zoom = False
  .FitToPagesWide = False
  .FitToPagesTall = 1
End With

ヘッダーの右部分にページごとの文字の追加

With ActiveSheet.PageSetup
  'フォントサイズを36に設定している
  'フォントサイズを設定する際は半角スペースを空けること
  '4枚印刷するつもりで、1枚目ならば、 『1 / 4 ページ』のように表示される
  .RightHeader = "&36 &P / &N ページ"
End With

フッターの右部分にページごとの文字の追加

With ActiveSheet.PageSetup
  '下線を引いて太字でフォントサイズを36に設定している
  '4枚印刷するつもりで、1枚目ならば、 『1 / 4 ページ』のように表示される
  .RightFooter = "&U&B&36 &P / &N ページ計"  
End With

垂直方向の改ページ

With ActiveSheet
  '垂直方向の4列目の後で改ページ
  .Columns(4).PageBreak = xlPageBreakManual
  '垂直方向の4列目の後の改ページを削除
  .Columns(4).PageBreak = xlPageBreakNone
End With

水平方向の改ページ

With ActiveSheet
  '水平方向の5列目の後で改ページ
  .Rows(5).PageBreak = xlPageBreakManual
  '水平方向の5列目の後の改ページを削除
  .Rows(5).PageBreak = xlPageBreakNone
End With

改ページを削除

With ActiveSheet
  .ResetAllPageBreaks
End With

VBA(Excel)でセルのアルファベットと数字を相互に変換させる

開発環境は、Windows 10 Pro(64bit)。動作テストはExcel 2019。

アルファベット→数字

For文で処理しやすいように、アルファベットを数字にしたい場合があります。
そういう時は、以下のように、アルファベットから数字に変換して処理します。

Debug.Print(Columns("AE").column) '31
Debug.Print(Columns("BT").column) '72

数字→アルファベット

逆に、数字を見て、アルファベットの何にあたるのかを知りたい場合は、
以下のように、数字からアルファベットに変換します。

Debug.Print(Columns(31).address) '$AE:$AE
Debug.Print(Columns(72).address ) '$BT:$BT

'Split関数で抽出する
Debug.Print( Split(Columns(31).Address(False, False), ":")(1) ) 'AE 
Debug.Print( Split(Columns(72).Address(False, False), ":")(1) ) 'BT 


■参考リンク
【ExcelVBA】列名のアルファベットと列番号の数字を相互変換する
https://qiita.com/11295/items/c26017eb21cb319fd29d

VBA(Excel)でピボットキャッシュを生成する際のエラーについて

開発環境は、Windows 10 Pro(64bit)。

ピボットキャッシュを作成する際に「型が一致しません」というエラーが出現することがある。
作成したExcel(Excel 2019)では問題なかったが、バージョンの古いExcel(Excel 2010)で動作させると、上記のようなエラーメッセージが表示されてしまった。その場合は、以下のように、CurrentRegion.Addressと指定することで解決できた。エラーが発生した時には、CurrentRegion.Selectと書いていた。
Addressは、CurrentRegionで指定した、その範囲の絶対参照のアドレスを取得できる。

  Dim ピボットキャッシュ As PivotCache
  Set ピボットキャッシュ = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=Worksheets(1).Range("A1").CurrentRegion.Address _
  )

■参考リンク
『ピボットキャッシュがエラーになる時がある。』(yuma)

AI(人工知能)関連の記事のリンクまとめ

コンピュータの用語の自分用メモ

プロセス

・処理の単位。
・PID(プロセスID)と呼ばれる数字で管理される。
・メモリ空間はプロセスごとに保護されているので、プロセス間で情報を共有したい場合は、プロセス間通信を行う必要がある。ただ、速度が遅いので、パフォーマンスが低下する。

スレッド

・OSがCPUの実行時間を割り当てるための単位。
・1つのプロセス内に1つ以上のスレッドができる。
・同一プロセス内のスレッドであれば、メモリやその他リソースを共有している。

Nuxt.jsを使ってみる

開発環境は、Windows 10 Pro(64bit) + node v14.17.0 + npm 6.14.13。

1.Cドライブ直下にnuxtという名前のディレクトリを作成し、カレントディレクトリしておく

cd c:\ && mkdir nuxt && cd nuxt

2.公式サイトへアクセスし、はじめるボタンをクリック
f:id:k01ken:20210628203447p:plain

3.create-nuxt-appを使うために以下のコマンドを入力し、パッケージをインストール
※npxはnpm 5.2.0以降だとデフォルトで入っている

npx create-nuxt-app hellonuxt

4.対話モードになって、Project name:と表示されるので、ここは、入力したプロジェクト名であるhellonuxtのままで良いので、Enter。

5.Programming language:で、TypeScriptを選んで、Enter。

6.Package manager:で、Npmを選んで、Enter。

7.UI framework:でVuetify.jsを選んで、Enter。

8.Nuxt.js modules:で、特に何も選ばずに、Enter。

9.Linting tools:で、特に何も選ばずに、Enter。

10.Testing framework:で、Jestを選んで、Enter。

11.Rendering mode:で、Universal(SSR /SSG)を選んで、Enter。

12.Deployment target:で、Server (Node.js hosting)を選んで、Enter。

13.Development tools:で、何も選ばずに、Enter。

14.Continuous integration:でNoneを選んで、Enter。

15.Version control system:で、Gitがすでにインストールされているので、Gitを選んで、Enter。ここで、再び、インストールが開始されるので、しばらく待つこと。

16.インストールが終了したら、以下のコマンドを入力し、サーバーを実行し、localhostにアクセスすする。

cd hellonuxt
npm run dev

サーバーが以下のように実行したら、
f:id:k01ken:20210628212153p:plain
localhost:3000にWebブラウザでアクセスする。ここから、クライアント側とサーバー側の両方でバンドルが始まり、ちょっと時間がかかります。終了すると、以下のように表示されます。
f:id:k01ken:20210628212545p:plain


■参考リンク
Learn Nuxt.js by Building a Real World App
Nuxt.jsのビデオコースです。