Microsoft」カテゴリーアーカイブ

VBAの条件評価式は短絡評価にならない

久しぶりにVBAをせこせこと書いているわけですが、関数の概略とかそういうのを全部自力で書くというのは骨の折れるもので、なんとなくの内容をClaudeに教えて関数を作ってもらいます。

当然、そのままでは動くわけもないのでエラーをつぶしていくわけですが、ぱっと見で何が誤っているのかがよくわからないエラーにぶつかりました

Dim tableNames(5)
For i = 1 to 5
    If i > 2 And tableNames(i) <> tableNames(i - 1) Then

ちょっと内容は端折りますが、2つの条件式があった場合に、一般的なプログラミング言語であれば一つ目の条件式評価の結果、以降の条件式を評価する必要がない場合はそもそも評価が実行されないのですよね。

これによって、Nullチェックや配列のインデックス範囲外アクセスを防いだりします。
ところがVBAでは、すべての条件式が評価されるようです。

初めて知りました。。。

何というか、やっぱりVBAは独特だなぁ。。。と

dyneinを使ってエクセルのデータをDynamoDBへImportする

少し前に紹介したDynamoDBの操作ツールであるdynein。実際に少し使い始めています。

dynein
https://github.com/awslabs/dynein

取り込むデータはExcelで作成して、それを元にCSVファイルを作成、dyコマンドで取り込もうとしたのですが、、、CSVファイルの取り込みがイマイチでした。。。

そもそも、カラムとしてリスト形式の値を持つものもあるので、CSV形式だとちょっと無理があったかもしれませんが、それにしてもCSV形式の取り込みとしては少し癖がありそうでした。

というわけでJSON形式での取り込みに変更しました。

エクセル上のデータをJSONへ吐き出す方法に関しては、VBAで書いたのですが、VBAでUTF-8形式のファイルを作成するのって結構面倒なんですね。。。

Sub SaveFileUTF8WithoutBOM(filePath As String, dataString As String)
    Dim adodb1 As Object
    Dim adodb2 As Object

    Set adodb1 = CreateObject("ADODB.Stream")
    Set adodb2 = CreateObject("ADODB.Stream")

    With adodb1
        .Charset = "UTF-8"
        .Open
        .WriteText dataString
        .Position = 3
        With adodb2
            .Type = 1
            .Open
            adodb1.CopyTo adodb2
            .SaveToFile filePath, 2
            .Close
        End With
        .Close
    End With
End Sub

一度、ファイルストリームを開いてから、BOM分だけずらし、その内容をコピーするという、何というかバイナリ操作が入るような。。。

VBAもいまだにこういうことをしないとUTF-8を書けないのだろうか?という気になります。もうちょっと何とかならんのですかね。

Microsoft Edgeへの移行を検討中

これまで、ブラウザはBraveを利用してきましたが、Microsoft Edgeがここのところ気になる機能を出しているので移行を検討中です。

SplitView

1つ目の気になる機能としてはSplitViewです

今、モニタとしては4年前に購入した29インチのウルトラワイドディスプレイを使用しています

https://amzn.to/42pQgnu

ウルトラワイドなので、ここにブラウザを半々に表示させて作業をしています。
左のブラウザでXを表示させながら右のブラウザでネットを見ていたり、X上で投稿された記事を右のブラウザにアドレスをコピペして表示させるなどですね。

Edgeのスプリットビューは、一つのタブを分割することができるようになります。

ツールバーの上記アイコンを押下することで画面が分割され、

左側のページ上にあるリンクをクリックすると、右側のビューに表示されるような感じ。

どちらのビューにデフォルトとして表示させるのかや、左右の切り替えはビュー右上にある3点リーダーをクリックして表示されるメニューで指定することができる

使ってみてよかったところと注意点

ウィンドウ自体を2つ配置すること自体は、これまで不便に感じたことはそれほどなかった。

ただ、この仕組みを使い始めるとなかなか便利である。
表示するページによっては、画面全体で見たいときもあればそうでなくても問題ないこともある。

タブごとにSplitするかどうかを選択することができ、更に分割位置も調整することができるのでその比率をいい感じにすることができる。

クリックした際に自動的に別ビューに表示されるのでコンテキストメニューから「別のタブで開く」を選択する必要性はない。

注意しないといけないのは、別のリンクをクリックするとビューの内容が更新されてしまう。
そのため、次々と新しいタブを開いていくとい運用は向かずに、一つ一つ読み終えてからリンクを開く必要性が生じてしまっている

まぁ、落ち着いて読んで行けよと言われればそのとおりなので、実際に問題になるのかは使ってみて考えることにする

コレクション

気になったものを保存する先として、お気に入り以外にコレクションと言う機能が追加されている

ツールバーの上記アイコンを押下することでコレクションを表示させることができる。

コレクションは、Webページ全体だけでなく、その中の画像や文字列のみを追加することができるので、ちょっとしたスクラップブックのようなイメージ。

追加したコンテンツは画像であれば画像、文字であれば文字がコレクションに追加されていき、クリックするとその元となったページが表示される。

使ってみてよかったところと注意点

何かしらテーマを持って調べ物をしている際に、面白いなって思ったことをメモ代わりに追加しておけるので、後で読もうかな?という感じでタブを開きっぱなしにするといったことを防ぐことができるかもしれない。

カテゴリごとにコレクションを作って、面白かった記事や文言を抜き出してコレクションに追加していけば、情報収集や整理が楽になりそうな気がする。
追加したコレクションにはメモを残すこともできる

メモを残すことで、対象をなぜコレクションに追加したのかを後から見返した際にすぐに気づくことができるようになる。

一方で、コレクションに追加したものをクリックすると新しいタブで表示されてしまう。

画像をクリックした際には画像を拡大表示する、テキストをクリックした際にはテキストを選択可能にするといったほうが個人的にはいいように感じるけど、そのあたりは情報が更新されている可能性だとか、著作権的になのか、リンクと言う形を取ったほうが安全とかそういうことがあるのかもしれない。

Microsoft Rewards

これまで、Braveを使ってきた一つの理由がBraveのReward機能だ。

Braveは広告のブロックに力を入れていて、Webページ上の広告を自動的に非表示にしてしまう。
一方で、Brave自身が定期的に広告を出すような仕組みを入れている。

このBraveがだす広告による収益は、Braveのユーザに仮想通貨(BAT)として還元される。

つまり、Braveを利用しているだけで仮想通貨を取得することができるのだ

これらに関しては、bitFlyerなど仮想通貨取引所でアカウント作成して連携しておく必要はあります。

さて、これまでの履歴を見てみると。。。

月によって、ものすごいばらつきがありますが、仮に、平均0.5BATとすると、2024/2/4現在

一ヶ月15円くらい・・・・?

うーん、別にこれで儲けようとか思ってはいないですが、これを理由に続けるかどうかはあまりに意味がないですね。

と思っていたら、Edgeにも Microsoft Rewards なるものが。

現在のRewadsポイントはウォレットを表示することで確認することができます。

Rewardsは、Bing使ったりしていると貯まるようで、ちょっとした日々の指定されたアクティビティをすることでも貯めることができる。

ためたRewadsはAmazonギフト券とかと交換することもできるようだが、そのために色々と頑張るのもちょっとバカバカしいので、これはあくまでオマケ機能と思っていたほうが良さそうだ。

しばらく使ってみて判断

まだ、本腰入れて移行するかは決めていないけれど、SplitViewで次々と表示させながら、気になったものをコレクションへ追加するという運用は、良さそうに思える。

XやGMailで届いたものを開いていったり、Kaggleのノートブックを集めていったりと、お気に入りでやってしまうには永続性がないものはコレクションに追加していき、必要がなくなった時点でコレクションごと削除、とか。

BingChatでGPTへの質問とかも気軽にできるようになっているので、しばらく使っていなかったけどEdgeの進化スピードは気づいたらすごいことになっているイメージ。

まだ埋もれた機能もあるだろうから、ちょっと一度しっかりと見てみると生産性がバク上がりするかもしれないな、と思った。

先日、仕事でイベントに参加させていただいた際にOracleが提供している MySQL Heat Waveなるものを知った

Heat Wave

MySQL HeatWaveは、HeatWave In-Memory Query Acceleratorを搭載したフルマネージドのデータベース・サービスです。トランザクション、データウェアハウスやデータレイクをまたいだリアルタイム分析、機械学習を1つのMySQL Databaseに統合し、ETLの重複による複雑さ、レイテンシ、リスク、コストを排除した唯一のクラウド・サービスです。

HeatWave – 組み込みのMLによるインメモリ・クエリ・アクセラレータhttps://www.oracle.com/jp/mysql/heatwave/

ということで、DBとDataLakeが合体したような感じなのかしら。
OracleCloudだけでなく、AzureやAWSでも動作するとある。
そういう意味ではSnowFlakeの対抗になるものなんだろう

そう思ったら、あからさまに対抗意識を燃やしている記事があった

5 reasons why MySQL HeatWave on OCI is better than Snowflake
https://www.oracle.com/mysql/heatwave/heatwave-vs-snowflake/

こういった公式で出している比較がどれほど意味があるのか。
都合がいい条件での比較担っている可能性もあるので、なんとも言えないところはあるけど、AWSでも動作するというのであれば試してみても面白いのかもしれない。

ただし、こちらの記事を読むと、AWSで使う場合にもOracleCloudの契約が必要になるようだ

東京リージョンにやってきた MySQL HeatWave on AWS を試す (1) 初期設定編https://qiita.com/hmatsu47/items/8f202eef64ea57e7d948

うーん、それは結構面倒そうだ。

OracleとMicrosoft

色々とHeatWaveに関して調べていると、こんな記事も見つけた

Ellison氏は、OracleとMicrosoftの連携についても改めて語った。「Oracle Cloud」とAzureのマルチクラウドでは、データのイグレス/エグレスの料金がかからないほか、AzureのアプリケーションとOracle Cloudのデータベース間は非常に低遅延だという。また、Oracle Cloud/Azureにおける大半のサービスは双方のコンソールからアクセスできる

「ウォールドガーデンは崩壊した」–エリソン氏が語る、顧客を“庭の主”にするマルチクラウド
https://japan.zdnet.com/article/35194867/

マルチクラウドで業務を回しているユーザーも、なんでそうなったのかはベンダーがそれぞれそう構築したという後ろ向きな理由も多分にあるだろうが、それなりに増えている気がする。

その中で、クラウド間でのデータ連携は日常で発生していることを考えると、こういう動きというのは歓迎されるべきもので、現状で他はどうなんだ?というのは気になるところだけど、うまく見つけることができなかった。

OCI(Oracle Cloud Infrastructure)はこれまであまり気にしてこなかった面もあるので、ちょっと気に留めておいてもいいかもと、思ったです。

ちなみに、OCIと聞くとどうしてもOracle Call Interfaceを思い浮かべてしまうんですよね。。。あれ、今でもあるよね、きっと。

今週はイベントが重なっている

GWが終わってからちょっと忙しい日々が続いてしまった。忙しくなると色々なものが手につかず、本来であれば進めたいはずだったものが止まってしまうのが非常に悪いところ

「忙しい=時間がない」という図式は成り立つことが多いのは当たり前だけど、「忙しい→疲れる→やる気が削がれる→時間を無駄に過ごす=時間がない」となることのほうが多いと感じる

詰まるところの結論は変わらないが、中間を効率化もしくは、やる気を出す工夫によって結論を変えられるとは思っている

また、忙しさの質をもう少し上げることができればとは思う。
忙しいけれど退屈だなと言う状態からエキサイティングな忙しさに変えることができないかということ

まぁ、言うは易く行うは難しということではあるけれど、何かしら行動を変えてみて、自分に揺さぶりをかけてみることにして、新卒入社時の同期を20年ぶりくらいに飯に誘ってみた。

そんな話もありつつ、今週は大規模イベントが目白押しでございます。
自分の備忘録も兼ねて、気になったセッションをざっと洗い出してみた

Microsoft Build 2022

Microsoft Build

今年もオンライン開催となったMSのBuild。
正直、少しAzure案件に関わったことはあるけどそこまで触ってはいないし、仕事で関わる頻度としてはないんだよね。
というわけで、ローコードやTeams周りをチョイスしてみようかと考えている

結構時間被っている&深夜すぎる。。。

なんてのも面白そうだ。
いずれにしてもLiveで見るのは仕事に支障をきたしそうなので、後で見るという形になるだろう

と、ここで気づいた。日本語での日本時間帯セッションがある

Spotlight on Japanの中からいくつか

うーん、日本語なのは魅力的なのだが、セッション内容としては、聞いてみないとなところはありそう。

AWS Summit Online 2022

AWS Summit Online 2022

さて困ったことに完全にBuildと日程がかぶっているが基本的に日本時間なのがありがたい。いや、結局録画見るんだろうけど。
ちなみに、セッションのURLはまだないっぽい?気になったのをいくつか。

  • SaaS の認証認可について改めて考える〜 アーキテクチャーパターンと実装例 〜(AWS-33)(5月 26日 | 3:30pm – 4:00pm)
  • AWS Lambda Performance Tuning Deep Dive〜本当に知りたいのは”ここ”だった 〜(AWS-46)(5月 26日 | 1:15pm – 1:45pm)
  • マルチリージョンでディザスタリカバリ(DR) 戦略を検討するためのポイント(AWS-50)(5月26日 4:15 午後 – 4:45 午後)
  • アーキテクチャ道場!(AWS-51)(5月26日 5:00 午後 – 5:30 午後)
  • AWS CDK で CI/CD つきの Web アプリを作ろう!開発風景を Live Coding でお届けします(DEV-04)(5月25日 3:30 午後 – 4:15 午後)
  • 最小限のコーディングでフルスタックアプリ開発を!Amplify Studioを活用したアプリ開発Live(DEV-06)(5月26日 12:30 午後 – 1:15 午後)

先にも書いたように、最近夜になかなか勉強なり頭を動かすことができていないんだけど、どこかで転換点を作って動き出さないとですね。

今週も頑張ろう

Microsoft Ignite 2021

Microsoft のイベント Ignite が始まっています。

Microsoft Ignite
https://register.ignite.microsoft.com/

Amazon に Microsoft に Apple に Google と、それぞれイベントをやって次々と新しい製品やサービスを世の中に出していくのはとても面白いことではあるんだけど、特定のサービスやプラットフォームを追いかけていない身としては、これら全てを見ていくのは正直辛いものがあって、全然追いついていない。

それでも、AWSにしろGCPにしろAzureにしろ、ある程度のベースとなる知識は持っておきたいという思いから、軽くでも目を通そうとしています。

Microsoftに関していうと、一番気になっているんはPower Platoform。ローコードやノーコードの分野や、日常の業務シーンで有効なものがありそう。
というわけで、PowerPlatform周りのセッションをちらほら見ていこうかと思います。
とりあえず、SessionSchedulerで気になったのはこのあたりかな

Low Code, No Code, No Problem – A Beginner’s Guide to Power Platform
https://myignite.microsoft.com/sessions/bf38988a-900b-47ce-bc28-51f0e21b39a6?source=sessions

Empower data backed decision making with Power BI, Power Automate and Azure Synapse Analytics
https://myignite.microsoft.com/sessions/26dceb94-694f-46aa-9ab6-8ae52c4eb903?source=sessions

Table Topic: Power Platform Best Practices
https://myignite.microsoft.com/sessions/4d622939-f483-421f-8234-10eff1254fda?source=sessions

Ask the Experts: Accelerate innovation with low-code applications using Power Platform
https://myignite.microsoft.com/sessions/3760a752-e069-4d08-96de-2240c4379ce6?source=sessions

CloudSkillsChallenge

いつもあるのかわからないけれど、IgniteにLearningZoneというものが用意されていて、MS Learnのコンテンツを消化していけば認定試験のバウチャーが手に入るというものが用意されてました。

Microsoft Ignite Cloud Skills Challenge November 2021
https://csc.docs.microsoft.com/ignite/registration/fall2021?wt.mc_id=ignite21fall_nav_webpage_esc

Power Platform に関するものも用意されているのでいい機会なんだけど、Power Platform はOffice365などのBusiness版が必要だったりと、個人的に学習するのは正直辛い。
いや、会社のPCでやればいいという話ではあるんだろうけれどね。

というわけで、Azure Developer チャレンジをやってみようと思う。
何気に33個ものコースを終了させる必要があるので結構大変そうだけど、逆に考えれば認定資格の勉強がこれで出来るわけなので儲けものである。

チャレンジ自体は12月1日まで有効となっているので、これをやってみて手ごたえを感じたら、PowerPlatformもやれるだけ頑張ってみたいところ。