2021年1月第4週レポート

インプット

📝 State of JavaScript 2020のまとめ記事を読んだ

State of JavaScriptは世界の開発者約2万4000人を対象に、JavaScript関連の技術についてのアンケートを取りその結果をまとめたものだそうです。その結果まとめ記事を読んだので、アンケート結果の中で個人的に気になった技術ワードをまとめておきます。

利用されている言語としてはTypeScriptが安定の第一位ですね。ランキングに入っている中でちょっと気になるのはelmですが、今のところ取り組むモチベーションがあまり湧かないというのが正直なところです。

フロントエンドフレームワークについてはここ数年はReact、Angular、Vue.jsが安定してランクインしているようです。この中ではVue.jsしか使えないのですが、その他については必要となったときに勉強すればいいかなぐらいの気持ちです。それよりも気になるのが第四位に入っているSvelteです。私の観測範囲内で盛り上がっているので気になっているのですが、記述量が少なくコンポーネント指向で書けるということでReactやVue.jsへのカウンターになるのかな、と注目しています。ちょっとしたWebアプリを作るときに使ってみよう。

バックエンドフレームワークについてはちょっと分類が大雑把すぎやしないかとも思うのですがExpressが第一位となってますね。その後にNext.jsGatsbyNuxt.jsと続くのですが、それらを一緒くたにまとめるってどうなんだろ?って気がします。私はExpress + Nuxt構成で作ることが一番多いですが、この分野で気になるのは以前にも話題に出したFastifyですかね。

テストについては自分も大変お世話になっているJestが第一位。気になるところだとE2EテストのフレームワークとしてランクインしているCypressPlaywrightでしょうか。E2Eテストは課題というか自分自身かなり弱いところではあるので、今年上半期中に何かしらの手を打ちたい分野です。

元記事

📝 ボタンのラベルや配置順序のベストプラクティスとは

OK/キャンセルボタンの配置の順序ってデファクトはどうなっているんだろうか?というのがきっかけで調べてみました。

ボタンのラベルや配置順序のベストプラクティスとは

ボタンの順序についてはAppli/GoogleとMicrosoftによってガイドラインが違うので明確にどちらがいいとは言えない、どちらの方法も何かしらの理論が伴っているので決定づけることもできない、といったところでしょうか。

ボタンの配置順序については結論はでなかったのですが、記事中にはボタンのラベルに何と書くか、視覚的な差異によってユーザはどう感じるか、などUIを考える上で参考になる情報が記載されているので一読しておく価値はあったかと思います。

📝 リーダーシップとは?

目に入ったので読んでみた。

リーダーシップとは?定義や必要なスキルを具体例で簡単に理解

感想としては、タイプわけについてはなるほどな、といったところです。リーダというロールについて必ずしもタイプのいずれかに分類できるというわけではなく、各側面を兼ね備えることもある、タイプというよりはパラメータに近いかなと思います。

強圧型なんか忌避しそうな、現代の流行にそぐわないようにも見えますが、そういった振る舞いが活きる場面というのは確かにあると思うので、どれか一辺倒になるのではなくそれぞれ行動を起こす/判断を下すときの選択肢として持っておくのがよいのかなと(記事でもそのような書き方になっているかと)

📝 Node.jsのBufferクラスは2GBまでしか扱えない

BufferとBufferをがっちゃんこしてごにょごにょうするコードを書いていて装具したのですが、Bufferで2GB以上のバイナリを扱おうとすると例外がスローされました。

公式ドキュメントをみてみたところ、64bitアーキテクチャでは2GBまでしかBufferは扱ってくれそうにないです。

Node.jsにはStreamでデータを使った方がメモリの使用効率の面から見ても有用なので、大人しくそちらを使うことにしました。

アウトプット

🛠️ mixpaceの新バージョンをリリースしました

3D CAD/BIM・3DCGファイルのAR/MRみえる化ソリューション「mixpace」に、「位置指定ARマーカー機能」を追加

こちらは仕事の話になるのですが、私が担当しているmixpaceいうサービスのアップデートをリリースしました。今回のリリースのメインとしては「位置指定ARマーカー機能」と銘打った機能の公開でして、こちらは3DモデルをAR/MR表示するときに、ARマーカーを使ってその表示位置を指定するための機能となっています。

extension

私はバックエンドとWebフロントの実装を担当しました。mixpaceでコンバートしたBIM/CADファイルをWebの画面上に表示して、ARマーカーとの位置関係をGUI or 数値入力で設定できるようなものとなっています。動作イメージとしては以下の動画で少し確認することができます。

WebフロントのフレームワークとしてはNuxt.jsを、3Dのエディタ部分についてはThree.jsを利用しています。動画を見てもらえるとわかる通り、Vueコンポーネント部分と3Dのエディタ部分については独立しているわけではなく、それぞれの入力がもう一方のコンポーネントに反映されるリアクティブな作りとなっています。3D部分はThree.jsを使っている都合上Vueの世界観とは外れるのですが、そのコンポーネント間のメッセージングにはRxJSを利用しています。Three.js部分をVueコンポーネントでラップしてやって、Vue.jsのAPIだけで実現することもできたとは思うのですが、RxJSのオペレーターによるイベント操作を使うことによって柔軟により宣言的に書けたので、技術選択としてはとりあえず良かったのかなと思います。このあたりの話は改めてどこかで整理できるといいなと思っています。

🛠️ RustでNESエミュレータを作っている

先週はほとんど手をつけられなかったので、このままではエターしてしまうことになりかねないと思い、ほんの少しでもいいから手をつけようとしています。今週は目にみえるような成果はないのですが、CPU周りの実装に手を加えています。

Rustの学習も兼ねているということなので、目にしたテクニックはとりあえず取り入れてみようというスタンスなので成果物に進化が見えないのですが、学習が主目的であるのでとりあえずは現状維持で触る時間を設けることを念頭に置いて取り組んでいこうかと。

今週は割り込み周りの処理を実装していく予定です。

Profile
d_yama
元Microsoft MVP for Windows Development(2018-2020)
Sub-category : Windows Mixed Reality
Search