シンクス2 オフィスチェアの感想

在宅ワークが始まり、自宅用の椅子を買った人も多いことだろう。

私はかなり長い間パイプ椅子+座布団で頑張っていた。

 

しかし限界を感じ始めて椅子を買った。

 

まず買ったのが今回紹介する「シンクス2」17,490円

f:id:engineer-kiyo:20210328210657p:plain

f:id:engineer-kiyo:20210328210715p:plain

 

会社の椅子はエルゴヒューマンで座面、背面がメッシュで非常に快適。

尻も痺れない。というか会社ではいろいろ動くので血行が悪くはならない模様。

 

このシンクス2も同じく座面、背面共にメッシュなので大丈夫だろうと深く考えずに購入。

 

ただ座ってみると、、、固い、座面が固い!

 

お尻、太ももの裏側が結構圧迫されて痺れてくる。。。

一日座ってると痺れて体調が悪くなってくる。。。

 

レビューでも一部同じような意見があったが、ほとんどは快適というレビューだった。

私のお尻とは相性が悪かった。

 

やはり試座しないで買うのはだめだと思った。 

 

次に購入したのはちゃんと試座してから買いました。また別途レビューするかも。

ファイル名末尾に日時コメント(_YYYYMMDD_HHMM_コメント)を付与するVBScript

 

「ファイル1.xlsx」というファイルを別のバックアップフォルダにコピーして、

「ファイル1_20210327_1839_〇〇.xlsx」という名前にすることがよくあります。「_20210327_1839」は年月日、時分です。〇〇はコメント。

 

私は小心者なのでしょっちゅうバックアップを取るのです。

Ctrl + Sをしばらく押してなくて、エクセルがフリーズしてファイルが復旧できなくなった、新方式を試していたがやっぱり過去のやり方でないとだめだった、とかいろんなことが発生しますので。

 

■問題点

 ファイルをバックアップして、日時を手動入力するのが毎回めんどい

 

■記事を読む価値

 ファイル名に日時をつけるのが超楽になる。

 

■VBS

------------------------------------------------------------------------

Option Explicit

 

Dim objFileSys

Dim strDate

Dim sPath

Dim oFile

Dim Ary

Dim sExt    '拡張子

Dim sNewName

Dim sComment

 

Set objFileSys = CreateObject("Scripting.FileSystemObject")

 

sPath = Wscript.Arguments(0)     'ドロップしたファイルのパス

'日時を取得(YYYYMMDD_hhmmss)

strDate = replace(replace(replace(now,"/",""),":","")," ","_")

 

'10時前の場合、0を付与する

If len(strDate) = 14 Then

    strDate = Left(strDate , 9) & "0" & right(strDate , 5)

End If

strDate = Left(strDate,13)      'YYYYMMDD_hhmmにする

 

'●コメント

sComment = InputBox("コメントをどうぞ","")

If sComment <> "" Then

    sComment = "_" & sComment

End If

 

'●拡張子を取得

Ary = Split(sPath , ".")

sExt = Ary(Ubound(Ary))

 

'●ファイルを取得

Set oFile = objFileSys.GetFile(sPath)

 

'●新ファイル名

sNewName = Replace(oFile.Name , "." & sExt , "_" & strDate & sComment & "." & sExt)

 

'●ファイル名変更

oFile.Name = sNewName

 

'後片付け

Set objFileSys = Nothing

Set oFile = Nothing

------------------------------------------------------------------------

 

■使い方

 このVBScriptを「ファイル名に日時付与.vbs」という名前で保存します。

 

■実行方法①

ファイルをこの「ファイル名に日時付与.vbs」にドラッグ&ドロップ

 f:id:engineer-kiyo:20210327185849p:plain

 

■実行方法②

a. 以下のフォルダに「ファイル名に日時付与.vbs」そのものか、ショートカットを置いておきます。

 C:\Users\[USERID]\AppData\Roaming\Microsoft\Windows\SendTo

b. 日時をつけたいファイルを右クリックし、「送る」-「ファイル名に日時付与.vbs」を選択

f:id:engineer-kiyo:20210327190347p:plain

 

以下のダイアログが表示されるので、コメントが何かあれば入れOKボタンを押す。

※何も入れなくてもよい。キャンセルボタン押下は空白のままOKボタン押下と同じ動作です。

f:id:engineer-kiyo:20210327185209p:plain

 

 ファイル名に _年月日_時分_コメント が付与されます。

f:id:engineer-kiyo:20210327191355p:plain

 

私は実行方法②の方でよく使っています。

お風呂タイムにゆっくりPC。動画視聴、読書等

f:id:engineer-kiyo:20210210170755j:image

 

●やりたいこと

・風呂でPC。調べもの、勉強、kindle読書、ブログ執筆、動画視聴

 

●継続期間

・かれこれ1年はやってる。今のところは何も壊れてない。なるべく濡れないように気を付ける。濡らしたらすぐに拭く。

 

●必要なもの

①風呂の蓋

東プレのラクネス

・10cmくらいで折りたためるのがいい。これを写真のように折りたたんで机にする。

 

タブレット

・今はFujitsuのStylistic Q702を使っている。安いけどそこそこ動く。

 リモートデスクトップでデスクトップマシンをリモート操作してるので性能はあまり関係ない。

・壊れたら嫌なのであまり高価ものでなくていいと思う。 

 ・バッテリーはリモートデスクトップでやっていても1h30mくらいでバッテリー切れになるので自動長湯防止効果が期待できる。

 

③A4のジッパー付き袋

・セリアで100均で購入。袋をしていてもタッチ操作問題なくできる。

・ちょっとぼろくなったり穴が開いてきたらすぐ交換。

・1個1000円とかのタブレット専用のごつい物も買ったことあるが、タッチが反応悪くなったりであまりよくなかった。100均ので十分。

 

④キーボード

・以前紹介したやつ

engineer-kiyo.hatenablog.com

・防水のは使いにくそうなので全然防水じゃないやつを使っている。壊れたらまた買えばいいと思っている。

・幅が小さくて軽くて気に入っている。 

 

⑤マウス エレコムM-BT12BR

 ・これも全然防水じゃないBluetoothマウス。2000円くらいなので壊れたらまた買えばいいと思っている。

・電池の蓋のところは一応透明のテープを貼って電池にダメージが行きにくいようにはしてる。

・いろいろ試したがこれは風呂蓋の上でも全く問題なく使える(優秀)

・あとこのマウスは畳の上でもかなり使える(優秀)

・再接続も早くていい(優秀)

・これより新しいBluetoothマウス(エレコムM-BY10BR)も持ってるが接続がわずかに遅いし風呂の蓋の上で使いにくいし、畳の上もだめだった。

 

あくまで私のやりかたです。真似するのは自己責任でお願いします。

 あと注意ですが、充電しながらPC、スマホを風呂の中で使っていて感電死したという事例もあるようなのでくれぐれも充電しながらはやめましょう。



正規表現で日付のYYYYMMDDをYYYY/MM/DDに手軽に変換

●問題点

 ・日付のYYYYMMDD形式をエクセルで「=MID(A1,1,4) & "/" & MID(A1,5,2) & "/" & MID(A1,7,2)」とかやってるが、もっと手軽にテキストエディタでできないものか、と思っている。

 ・(\d{4})(\d{2})(\d{2})とかのめんどいのは嫌だ。もっとサクッと簡単にして!

 

●この技マスターにより

 ・日付形式の変更はテキストエディタのみで可能。

 

●検証

 ・サクラエディタで検証済

 

以下のようなテキストの日付形式を変換する。

f:id:engineer-kiyo:20210203234616p:plain

置換前→(....)(..)(..) 

置換後→$1/$2/$3

f:id:engineer-kiyo:20210203234809p:plain

↓置換後

f:id:engineer-kiyo:20210203234838p:plain

はい、この通りお手軽に日付形式を変換できます。

YYYY-MM-DDにしたいなら、「$1-$2-$3」に置換

DD/MM/YYYYにしたいなら、「$3/$2/$1」に置換

他にもいろいろ応用できるでしょう。

エクセルを持ち出して変換するよりも早いです。

 

正規表現解説

「.」(ドット)は任意の1文字を表すので(....)で最初の4文字を変数$1にキャプチャ

次の(..)で5,6文字目を変数$2にキャプチャ。

次の(..)で7,8文字目を変数$3にキャプチャ。

 

キャプチャできたらあとは並べ替えたりは自由自在!

この単純さなら置換前文字列を手入力するのも全然苦になりません。 

 

キャプチャの仕組みを使ってますが、詳しいことは以下の書籍で勉強しましょう!!非常にお勧め!

はじめての正規表現 for Web Creator Kindle版

 

 

 

 

 

 

正規表現置換で行末のスペースを消す

よく私が使っている正規表現の小技を紹介します。

 ※サクラエディタ onigmoで動作確認済 たぶんほとんどの正規表現が使えるエディタで使えるはず

 

↓こんな風に行末にスペースが入っているのがかっこ悪いので消したいことがある。画像の黄色い箇所が消したい半角スペース。

f:id:engineer-kiyo:20210126105415p:plain

これを手で消していってもよいが、スマートに一発で消す方法がある。

\s+$

をnullに置換する。

f:id:engineer-kiyo:20210119012030p:plain


置換後。行末のスペースがきれいに消えた。

f:id:engineer-kiyo:20210126105603p:plain

この例の行数ぐらいなら手で消してもいいが、行数が1000行とかたくさんあると手作業では時間もかかるし漏れも出る。正規表現置換なら一瞬な上に漏れがない。

 

正規表現の解説

\s は半角スペース。\s+ で半角スペース1個以上の繰り返し。$は行末。

これで行末の1個以上のスペースというのを検出できる。

 

はじめての正規表現 for Web Creator Kindle版

 

 

 

 

 

 

 

超軽量135g!BluetoothキーボードiClever IC-BK06Lite

またキーボードの紹介です。コンパクトで軽量で使いやすいキーボードを探して沼にはまってます。

 

今回はこれ

iClever 新型 Bluetoothキーボード 折りたたみ式 軽量 薄型 ワイヤレス ブルートゥース キーボードレザーカバー 財布型 充電式IOS/Android/Windows に対応 スマホ用 スタンド付 日本語説明書18月保証付き IC-BK06Lite

 

 

●対象となる人

 ・持ち運び用に軽量なキーボードが欲しい。
 ・変則的なキーがあっても気にしない。
 ・数字はブラインドタッチしなくてもいい。

 ・常にデスク上で使う。膝の上で使ったりしない。

 ・英語配列でも全然OK

 

このように中心で折れ曲がります。それ故に平らな台を必要とします。膝の上で使うとかは困難。

f:id:engineer-kiyo:20210119003247j:image

二つ折りにすると157mm X 104mm X 14mmで超コンパクト
f:id:engineer-kiyo:20210119003534j:image
f:id:engineer-kiyo:20210119003526j:image

 ●良いところ

・とにかく軽い。135gなのでカバンに入れても重さが気にならない。

・折りたたむとサイズが小さくてよい。

ローマ字入力はブラインドタッチできる。

 

●悪いところ

 ・数字キー(ファンクションキー)が小さくなっており、英字と同じ調子でブラインドタッチができない。慣れればできるかもしれないが。

・「・」のキー位置がなんと十字キーの右にある。

 私はこの字よく使うのでちとつらい。。。

英語配列なのでWindowsの設定で英語配列にしなければならない。そうするとこのキーボードは正常に使えるが、他の日本語キーボードが正常に使えなくなる。

・このキーボードを日本語配列のまま使用するとアンダーバーが入力できない。

Bluetoothのキーボード全般に言えるが、再接続に2、3秒かかってしまう。

 

ということでしばらく使ってみたんですが、英語配列に設定しなければならないのがネックで使わなくなってしまいました。 初めて使ったパソコンが英語配列だったのである程度慣れていたんですが、変則的なのが加わってずっと使おうとはなりませんでした。

 

超パフォーマンス改善!遅いExcelVBA処理を8倍高速化!2次元配列技

●読者対象は以下のような状況を改善したい人

・エクセルVBAの処理時間が長い。

・最初は早かったがデータが段々と多くなり時間がかかるようになった。

 

●この記事の技をマスターすると

・8倍高速なエクセルVBA処理を作れる。

 ※実際は縮まらない処理があり、大体1/4くらいに落ち着くと思われる。

 

 

エクセルVBAで物を作っていてある程度規模が大きくなってくると必ず、処理時間の壁にぶつかる。

初心者向けの解説では1セルずつ処理していくのが基本となっている。この方法はとても遅い。

 

1セルずつでなく一気に処理すれば約8倍の速さで処理できる。

具体的な例を示そう。

 

A列、B列の1~1,048,576行まで値が入っている。

A列、B列の値を少し加工してC列、D列に入れる処理を考える。

f:id:engineer-kiyo:20210116190242p:plain

A列の値の頭に"c"を追加してC列に書き込み

B列の値の頭に"d"を追加してD列に書き込み

f:id:engineer-kiyo:20210116191815p:plain

●まずは1セルずつ処理していく方法

Public Sub OneByOne()

    Dim i As Long

    Dim nLastRow As Long

   

    ' C,D列の値をクリア

    Sheet1.Columns("C:D").Clear

 

    Debug.Print Now & " start"

   

    ' 最終行を取得

    nLastRow = Sheet1.Range("A1").End(xlDown).Row

 

    For i = 1 To nLastRow

        'A列の値を少し加工してC列にコピー

        Sheet1.Range("C" & i).Value = "c" & Sheet1.Range("A" & i).Value

        'B列の値を少し加工してD列にコピー

        Sheet1.Range("D" & i).Value = "d" & Sheet1.Range("B" & i).Value

       

        If i Mod 10000 = 0 Then

            Application.StatusBar = i

            DoEvents

        End If

    Next i

 

    Debug.Print Now & " end"

    Application.StatusBar = ""

End Sub

処理時間は160秒

セルの読み取りに2,097,152回シートにアクセスし、さらにセルに書き込むために2,097,152回シートにアクセスしている。

 

●次に2次元配列を使う方法

Public Sub twoD_array()

    Dim i As Long

    Dim nLastRow As Long

    Dim v1 As Variant

   

    ' C,D列の値をクリア

    Sheet1.Columns("C:D").Clear

 

    Debug.Print Now & " start"

   

    ' 最終行を取得

    nLastRow = Sheet1.Range("A1").End(xlDown).Row

 

    ' ■■■■■■■■■■■■■■■■■■■■■■■

    ' ■ 2次元配列にA,B列の内容を取得         ■

    ' ■ ※1 セル1個ずつ取得するよりも超高速! ■

    ' ■■■■■■■■■■■■■■■■■■■■■■■

    v1 = Sheet1.Range("A1:B" & nLastRow)

 

    ' ■■■■■■■■■■■■■■■■■■■■■

    ' ■ 加工処理                             ■

    ' ■ ※2 メモリ内での処理なので超高速! ■

    ' ■■■■■■■■■■■■■■■■■■■■■

    For i = 1 To nLastRow

        v1(i, 1) = "c" & v1(i, 1)

        v1(i, 2) = "d" & v1(i, 2)

    Next i

 

    ' ■■■■■■■■■■■■■■■■■■■■■■■

    ' ■ 2次元配列の内容をC,D列に挿入         ■

    ' ■ ※1 セル1個ずつ挿入するよりも超高速! ■

    ' ■■■■■■■■■■■■■■■■■■■■■■■

    Sheet1.Range("C1:D" & nLastRow) = v1

 

    Debug.Print Now & " end"

End Sub

 処理時間は19秒

セルの読み取りに1回シートにアクセスし、さらにセルに書き込むために1回シートにアクセスしている。

 

 ということで同じことをやっているにも関わらず処理時間は1/8以下になっている。 

 

私は大体以下のステップで処理を作る。このように作れば高速なExcelVBA処理になる。

※場合によって①はなく2次元配列を自分で定義する場合もよくある。

①エクセルシートから2次元配列を作る

 (1ステップ)

②2次元配列上で加工等を実施する

 (メモリー上での操作なので高速)

③2次元配列をエクセルシートに書き戻す

 (1ステップ)

 

時間のかかるエクセルシートへのアクセスがたったの2回である(これ重要)

エクセルシートへのアクセス回数はコストが高いので最小限にするべき。

 細かいソースの解説はしないが、ソースをじっくり見ていただければわかることだろう。

 

 ●注意点

・セルの数がもっと膨大になるとエラーになる場合がある。その場合10万行ずつ処理する等の対応が必要な場合がある。

 ・この2次元配列を導入する以前にセル結合をまずなくすのが先決である。セル結合があるとこのやり方も本領発揮してくれません。

セル結合しない方がExcelVBAは超高速パフォーマンス! - engineer-kiyoの日記

  実はセル結合ありまくりの状態からこの2次元配列を導入すると処理時間1/64も夢ではない。

事実8時間たっても終わらなかった処理が2分で終わるようになったこともある。←この時は他にもいろいろ改善したんだけども。

 

是非この記事を参考に高速なVBA処理を作り上げて貴重な時間を無駄にしないようにしてほしい。

 

直接教えてほしい方はツイッターから連絡ください。

→@EngineerKiyo