全力開発部は、@konoka-iori が率いる開発チームです。
全力開発部のメンバーが日々の開発で得た知見や情報を、備忘録を兼ねて発信していきます。
全力開発部は、@konoka-iori が率いる開発チームです。
全力開発部のメンバーが日々の開発で得た知見や情報を、備忘録を兼ねて発信していきます。
こんにちは、全力開発部の @konoka-iori です。 今回からしばらくの間、「全力開発ブログの作り方」シリーズの記事を投稿します。 このシリーズでは、 メンバーがどのようにして全力開発ブログに記事を投稿しているか 記事を投稿するにあたって、守るべきルールやコーディング規約にはどんなものがあるのか 全力開発ブログのリポジトリの構成や運用方法はどのようなものか 全力開発ブログのカスタマイズについて など、全力開発ブログの裏側についてご紹介いたします。 今回の記事では、全力開発ブログで導入されているlintツールについてご紹介します。 以前の記事では、WordPressからHugoに移行した経緯などをご紹介しました。ぜひこちらもご覧ください。 WordPressからHugoに移行してみた - 全力開発ブログ textlint導入までの道 textlintは、主にMarkdownファイルに対してルールベースでテキストをチェックするlintツールです。 全力開発ブログでは、誤字脱字や表記揺れなどをチェックするためにtextlintを導入しています。 きっかけ 執筆環境の更新に伴い、Markdownで記事を執筆することができるようになりました。 VS Codeなど馴染みのあるエディターを使って執筆できる一方で、誤字脱字のチェックがしにくく、結果的に誤字脱字や表記揺れが増えてしまいました。 このままレビュー工程に入ると修正箇所が多くなり、レビューにかかる時間が増えて執筆者もレビュアーも負担が増えてしまいます。 そこで、執筆段階で誤字脱字や表記揺れを機械的にチェックできるtextlintを導入することにしました。 Node.jsの壁。拡張機能で代用 textlintによる自動チェックを行いたいと思いつつも、当初は執筆環境がしっかり統一されておらず、各自がリポジトリをクローンしてローカル環境で執筆していたため、Node.jsが必要なtextlintを導入することは難しいと考えました。 そこで、VS Codeの拡張機能として提供されている テキスト校正くん を使うことで、Node.jsを使わずにある程度のチェックを行うことができるようになりました。 開発元による「テキスト校正くん」の紹介記事はこちらです。 素晴らしい拡張機能をありがとうございます! 文章作成・メール作成に役立つ! VS Codeの拡張機能「テキスト校正くん」を公開 - ICS MEDIA - ICS MEDIA 文章の校正チェックを自動で行うVisual Studio Codeの拡張機能「テキスト校正くん」を弊社からリリースしました。無料で利用できます。 ...
こんにちは、全力開発部の @konoka-iori です。 みなさん、GitHub Copilot使っていますか。 私はもはやこれなしで開発できないほど活用しています。 さて、先日我らがVS Codeにアップデートがありました。 Visual Studio Code October 2024 - Learn what is new in the Visual Studio Code October 2024 Release (1.95) このアップデートでは、Copilot Chatが右側のSecondary Side Barにお引越ししたようです。 詳細 個人的には、Copilot Chatは左側のPrimary Side Bar(「エクスプローラー」や「ソース管理」などがあるパネル)に表示されている方が使いやすかったので、右側に移動されると少し不便に感じました。 Copilot Chatを左側に戻す方法を調べてみたものの、日本語での情報があまりなかったので備忘録を兼ねて記事にします。 私と同じように、Copilot Chatは左側に戻したいという方はぜひ参考にしてみてください。 Copilot Chatを左側に戻す方法 実は超簡単です。 まず、VS Codeを開いて、Secondary Side Barを開きます。 Tip Secondary Side Barが表示されていない場合、右上にあるアイコン(下の画像の青枠で囲っている部分)をクリックすると表示されます。 ...
全力開発ブログの @Rustumi-Hinata です。 4カ月以上も前のことですが、執筆環境が一新されたので最近あった事でも書きます。 できごと 4月、新規にノートPCを購入して、セットアップ時にログインが必要になり困ってしまいました。 昨今のWindowsはセットアップ時にMicrosoftアカウントが必要になることを完全に忘れて、Wi-Fiを接続した後にログインを求められてしまい、「困ったな」とネットで調べたがあまり情報が無かったので残します。 状態 ネットにあるような方法で再起動を行ったが、Wi-Fiが接続されたままなので、ローカルアカウントを作ることができない。 ローカルアカウント設定の順序 Shift + F10を押してコマンドプロンプトを表示する cd oobe をディレクトリに移動する BypassNRO.cmd で再起動される セットアップ画面で「インターネットに接続していません」を選択 ローカルアカウントを作成 流れはこのような形だが、ノートPCの場合Wi-Fiに接続されていると強制的にログイン画面に飛んで、この方法が通用しない。 解決策 現状ではWi-Fiで繋がっているので、インターネットが接続できる状態になっているWi-Fiをコマンドプロンプトで切断してやれば、問題が解決できる。 手順 Windowsの netsh コマンドを使ってWi-Fiを切断します。 Shift + F10を押し、コマンドプロンプトを表示する netsh wlan delete profile name="SSID名" で接続を切断する 上記ローカルアカウント設定の順序で再起動をする netsh参考: Netsh コマンドの構文、コンテキスト、形式 - netsh コンテキスト、サブコンテキスト、netsh 構文に加え、Windows Server または Windows クライアントを実行しているローカル コンピューターとリモート コンピューターで netsh コマンドを実行する方法について説明します。 ...
こんにちは、全力開発部の @konoka-iori です。 2024年に入ってからDockerとDev Containerを使った開発環境のコンテナー化に興味を持ち、実際に開発中のプロジェクトに導入してみたので、その過程で得た知見等をまとめていきたいと思います。 きっかけ 私は主にPythonで開発を行っており、Pythonではpipenvを使って仮想環境を構築し、プロジェクトごとに依存関係を管理していました。 しかし、PCごとにインストールされているPythonのバージョンが異なっており、さらに別の言語やフレームワークを使ったプロジェクトもあるため、開発環境の構築に手間がかかるようになっていました。 そこで、開発環境丸ごとコンテナー化できないものかと考えるようになり、DockerとDev Containerを使った開発環境のコンテナー化を試してみることにしました。 Dev Containerとは Dev Containerは、VS Codeの拡張機能で、開発環境をコンテナー化して開発するためのツールです。 以下のリンクからインストールできます。 Dev Containers - Visual Studio Marketplace - Extension for Visual Studio Code - Open any folder or repository inside a Docker container and take advantage of Visual Studio Code's full feature set. Dev Containerの使い方や設定方法については、以下の公式ドキュメントを参照してください。 Developing inside a Container using Visual Studio Code Remote Development - Developing inside a Container using Visual Studio Code Remote Development ...
こんにちは、全力開発部の @konoka-iori です。 今回、WordPressからHugoにブログを移行したので、移行を決断した理由や技術の選定、記事の移植、移行後の運用、これからの課題などを書いていきます。 なぜWordPressからHugoに移行したのか この項目では、なぜWordPressからHugoに移行することを決断したのか、その理由を説明します。 WordPressの運用における課題 まず、WordPressからHugoに移行する理由の前に、WordPressをどのように運用していたかを説明します。 独自ドメインを取得。 日本国内のレンタルサーバー上にWordPressをインストール。 Team Parity のサイト部門に所属する2~3人程度で記事の執筆・公開。 Note 現在Team Parityはサイト部門を全力開発部に統合し、活動を終了しています。 作業フローとしては、次のような感じです。この間、常にTrelloやGuildedなどで情報共有や意思疎通が行われていました。 Trelloで新しい記事を申請し、承認をもらう。 WordPressにログインして記事を作成し、レビューを依頼する。 担当者がレビューする。 レビューが通れば公開する。 ほかにも記事の執筆や公開に関するルールやガイドラインがあり、それらの管理は Guilded やストレージサービスで管理していました。 このように外部サービスを多用していたため情報が分散してしまい、管理が煩雑になるだけでなく、記事を執筆する際にも複数のサービスを行き来する必要がありました。 運用面では、WordPress本体の更新やプラグインの更新、テーマの更新、バックアップ、セキュリティ対策など、WordPressを安全に運用するためには多くのコストがかかり、もはや技術的な負債となっていました。 Hugoに移行するメリット そこで、WordPressからHugoに移行することで、次のようなメリットがあると考えました。 GitHubでほぼすべてを管理・完結できる。 高速かつセキュアな静的サイトを構築でき、運用コストを削減できる。 お馴染みのMarkdown形式で記事を書けるため、記事の執筆がしやすくなる。 これらのメリットに惹かれて、WordPressからHugoに移行することを検討しはじめました。 懸念事項 一方で、次のような懸念事項もありました。 Hugoをはじめとする静的サイトジェネレーターに関する知識・知見がない。 WordPressのプラグインで実現していた機能をどのようにHugoで再現できるかわからない。 作ったサイトをどこでホスティングすればよいかわからない。 やはり、WordPressの強みはなんといってもプラグインの豊富さと、視覚的に管理がしやすいことです。これらをどこまでHugoで実現できるかが重要だと考えました。 技術選定 これらのメリットと懸念事項に悩みつつも、Hugoに移行するためにはどんな技術が必要なのかを洗い出しました。 Hugo: メインの静的サイトジェネレーター。 GitHub: サイト本体のバージョン管理。 記事のバージョン管理。 CI/CDの実行。 Cloudflare: ドメインの取得・管理。 サイトのホスティング。 静的サイトジェネレーターとしてHugoを選択した理由は、単純に有名で情報量が多いからです。 サイトの作成や記事の執筆・管理がGitHubで完結するからという理由もあります。 バージョン管理やCI/CDの実行にGitHubを選択した理由は、日頃愛用しているのがGitHubだからという理由もありますが、GitHub Actionsを使ったMarkdownの自動チェックなどを行えるからです。 ドメインの取得・管理やサイトのホスティングにCloudflareを選択した理由は、無料で利用できる機能が豊富に揃っているからです。 Cloudflare Registrar : .dev ドメインが格安で取得できる。 Cloudflare Pages : GitHub Actionsと連携して、静的サイトを無料でホスティングできる。 Cloudflare Fonts : Google Fontsよりもプライバシーやパフォーマンスに優れたフォントを読み込める。 Cloudflare Email Routing : 疑似的に独自ドメインでメールを送受信できる。 ほかにも、さまざまな機能が無料で利用でき、 HTTP/3(QUIC) などの最新技術にも対応していて、非常に魅力的でした。 Cloudflareのネットワークに最適化することで、サイトのパフォーマンス向上が期待できます。 ...
Discord Nitroを買う機会があり、せっかくなので使用感をレビューしてみよう!ということで備忘録を兼ねて書きたいと思います。 Discord Nitroを買うか迷ってる方、どんな機能があってどんな風に使えるのか気になる方、これからDiscord Nitroを買おうと思っている方、Discordよく使ってる方などなど……。参考になればと思います。 Note Discordからの案件ではありません。案件お待ちしております。 本題の前に…… この記事はあくまで私個人のDiscordの使い方による評価です。 この記事だけを鵜呑みにせず、一度 自分がどのように どのくらいDiscordを使っているか どんな機能がほしいのか Discordでどんなことをしたいのか などをしっかり考えてから購入することをおすすめします。 1か月無料でお試しできるキャンペーンをやっていることもあるので、それらを使ってみて継続するかどうか決めるのもありです。私の場合は、まず1か月分を購入して「どんなもんかな~」とお試ししました。 Discord Nitroの機能 機能ごとに説明と、個人的な使用率やおすすめ度などを書いていきます。 ただ、今回はDiscord Nitroのレビューであり、Nitro Basicのレビューではないので注意してください。 どこでも使えるカスタム絵文字・カスタムスタンプ おすすめ度 使用率 ★★★★★ ★★★★★ サーバーごとに登録できるカスタム絵文字やカスタムスタンプをどこでも使えるようになるという機能。 本来ならカスタム絵文字・カスタムスタンプを登録したサーバー内でしか使えない機能です。 しかし、Discord Nitroなら別のサーバーやDM、カスタムステータス、プロフィールなどでも使えるようになり、さらにアニメ絵文字(動く絵文字)も使えるようになります! 個人的にはかなり使っていますし、おすすめできる機能です。 ただ、これだけならNitro Basic(安い方)で十分かなとも思います。 たくさんのNitroスタンプがどこでも使える おすすめ度 使用率 ★★☆☆☆ ★☆☆☆☆ こっちは「カスタムスタンプ」ではなく、Discordが用意してくれたNitro限定スタンプです。 正直そこまで使っていません。 個人的にはスタンプ名が英語で検索しにくいのと、入力中に候補が出てこないのがつらいですね。 いちいち英語で検索かけたり候補を表示させたりするのも地味に面倒です。 種類が多く、さらにスタンプが動くので楽しいのですが、あまり使いどころがないなーという感想です。 ちなみにこの機能もNitro Basicで使えます。 500MBまでのデカファイルが送信できる おすすめ度 使用率 ★★★☆☆ ★★☆☆☆ この記事を書いている段階では、デスクトップ版とiOS版でしか対応していないみたいですが、500MBまでの大きいファイルを自由に送信できます。 デフォルトの8MBまでだとまともに動画を送信できませんが、Discord Nitroならゲームのリプレイ動画なども送信できるようになりますので、使いどころはあると思います。 個人的にはそこまで使っていません。Nitro Basicの50MB上限くらいまででいいかな。 まあ大は小を兼ねるって言いますからね、不満はないです。 Warning Discord Nitroの特典を使って長い動画を送ろうとしている方、注意してください。 100MBを超える動画を送信すると、アプリ内で再生できませんでした。 つまり動画を見たい場合はダウンロードする必要があるということです。 これは非常に不便です。送信する動画はできるだけ100MB以下にしておくことをおすすめします。 4K・60fpsの画面共有ができる おすすめ度 使用率 ★★★★☆ ★★★★☆ Discord Nitroなら最大で4K・60fpsの画面共有(Go Live)ができます。 ...
NVAPIって知っていますか? NVAPIとはNVIDIA社が提供しているAPIです。 NVIDIA社が提供している有名なAPIとしてはCUDAが存在しますが、CUDAとは違いNVAPIは搭載されているハードウェアの情報を取得することが主な使用用途だと思われます。 さて、私はGPUを酷使する機会が多少ながらもあり、その時にVRAMがどの程度使用されているかどうかを取得するためのNVAPIのコードを紹介します。 NVAPIをダウンロード まずは、NVAPIを以下のリンクからダウンロードしてきます。 今回この記事で利用しているNVAPIのバージョンは「R450」です。 Developer Tools Download Center - NVIDIA Developer ダウンロードが終えたファイルの中には nvapi.h などのヘッタファイルがあり、ライブラリが入っているファイルが確認できます。 NVAPIファイルを、プログラムを作成する作業フォルダー内に配置してください。 VRAMの取得を行うコード C言語 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <stdio.h> #include "NVAPI/nvapi.h" #if _M_AMD64 #pragma comment(lib, "NVAPI/amd64/nvapi64.lib") #else #pragma comment(lib, "NVAPI/x86/nvapi.lib") #endif int main() { NvAPI_Status nStatus = NvAPI_Initialize(); if (nStatus == NVAPI_OK) { NvPhysicalGpuHandle hGPUHandles[NVAPI_MAX_PHYSICAL_GPUS] = {0}; NvU32 count = 0; nStatus = NvAPI_EnumPhysicalGPUs(hGPUHandles, &count); if (nStatus == NVAPI_OK) { printf("GPUS:%d\n", count); } else { printf("ErrorCode:%d\n", nStatus); } NvPhysicalGpuHandle hGPUHandle = hGPUHandles[0]; NV_DISPLAY_DRIVER_MEMORY_INFO_V1 MemoryInfo; MemoryInfo.version = NV_DISPLAY_DRIVER_MEMORY_INFO_VER_1; nStatus = NvAPI_GPU_GetMemoryInfo(hGPUHandle, &MemoryInfo); if (nStatus == NVAPI_OK) { printf("VRAM Total:%.5lf[GB]\n", (double)MemoryInfo.dedicatedVideoMemory / 1048576); printf("VRAM Can Use:%.5lf[GB]\n", (double)MemoryInfo.availableDedicatedVideoMemory / 1048576); } else { printf("ErrorCode:%d\n", nStatus); } } return 0; } 今回使用するコンパイラはMSVC(cl.exe)を使用します。clangコンパイラでもコンパイル可能です。 ...
今回はDNS暗号化の重要性、DNS over TLSとDNS over HTTPSの違い、とiOS 14でDNSを暗号化する方法などを解説します。 iOS 14では、ウィジェットが追加できるようになったことや、デフォルトのメールアプリやブラウザを変更できるようになったことなどが注目を集めていますが、実は裏でひっそりiOS 14ではDNSの暗号化をネイティブサポートしていたのです。 DNSの危険性と暗号化の重要性 WWDC 2020でAppleはこのように述べています。 Enable encrypted DNS Your devices are using DNS every time you access the internet. When your app accesses a website, the system asks a question, a DNS query, to turn that name into a set of addresses. Generally, the question is sent to a DNS server configured by your local network. So where does privacy come into the picture? One concern is that DNS questions and answers are usually sent over an unencrypted transport, UDP. That means that other devices on the network can not only see what names you’re looking up, but they can even interfere with the answers. The other privacy concern is that you may not trust the DNS resolver on your local network. If you’ve joined a public Wi-Fi network, your internet usage could be tracked or blocked. ...
Pythonで今日が祝日なのかどうか判定する方法を備忘録もかねて書いておきます。 タイトルの「今日が祝日かどうか判定する方法」だけを知りたい方は「今日が祝日かどうか判定する」という項目からお読みください。 使うモジュール datetime jpholiday まず、pipで jpholiday というモジュールをインストールします。 shell 1 pip install jpholiday これでモジュールの準備は完了です。 jpholiday の使い方 まずは、基本的な使い方をマスターしていきましょう。 ちなみに、jpholiday のGitHubリポジトリはこちら です。 指定した日付の祝日名を取得 あらかじめ指定した日付の祝日名を取得します。 python 1 2 3 4 5 6 7 8 import datetime import jpholiday # 2020年1月1日の祝日名を取得する holiday_name = jpholiday.is_holiday_name(datetime.date(2020, 1, 1)) # 祝日名を出力 print(holiday_name) output 1 元日 指定した日付が1月1日ですので、出力結果は「元日」となります。非常に簡単です。 ...
一部のMacには、T2セキュリティーチップ(以下、T2チップ)というものが搭載されている機種があります。 このT2チップとはいったいなんなのか、役割とメリットをまとめてみました。 T2チップとは? 「セキュリティーチップ」というのだから、「セキュリティーに関わる何かをしている」というのはなんとなく想像がつきます。 本題へ入る前に、T2チップとは何者なのか見てみましょう。 T2チップとは、Appleが自社製造したARMベースのプロセッサで、iPhone7シリーズに搭載されているA10 Fusionと構造が同じで、性能も同等程度。 しかし、MacにはCPUが搭載されていますから、T2チップはCPUがやらない作業を担当します。 セキュリティー関連のほかにも オーディオ 電源管理 Hey Siri 動画のエンコード・デコード など、幅広く活用されています。 搭載されているMac T2チップを紹介しているApple公式サイトでは、T2チップを搭載している機種も併記されていました。下記の機種はT2チップを搭載しています。 iMac Pro Mac Pro(2019年モデル) Mac mini(2018年モデル) MacBook Air(2018年以降のモデル) MacBook Pro(2018年以降のモデル) 自分のMacが搭載しているか調べる方法 「option」キーを押しながら、 Appleのロゴマークをクリックします。 「システム情報」をクリックします。 サイドバーから、「コントローラー」または「iBridge」のどちらかをクリックします。 コントローラー情報に「Apple T2チップ」と記載されていてば、T2チップを搭載しています。 T2チップの役割 では、T2チップがどんなことをしているのか見ていきましょう。 Touch IDの管理 Touch ID(指紋認証)が搭載されているMacでは、T2チップが登録した指紋のデータなどを管理しており、システムや悪意のあるプログラムが指紋情報にアクセスするのを阻止しています。 これは製造元であるAppleですらアクセスできないようになっており、厳重に扱われています。 もう少し専門的に書くと、Secure Enclaveと呼ばれるTouch IDやFace ID(顔認証)の情報を管理しているプロセッサがT2チップには含まれており、OSが直接アクセスできない特殊な領域に情報が保存されるため、安全性が保たれるという仕組みです。 ただ、今のところMacにはFace ID搭載機種はないため、T2チップのSecure Enclaveが管理しているのはTouch IDの情報のみとなります。 「Hey Siri」が使えるようになる T2チップによってMacでも「Hey Siri」と呼びかけることでSiriを起動できるようになりました。 T2チップが「Hey Siri」という言葉に反応し、Siriを起動させるという仕組みです。 iPhoneなどではお馴染みの機能が、Macでも使えるようになったのは嬉しいですね。 私はHey Siriを使わないので設定で無効化しています。 Macを安全に起動させる 「セキュアブート」という機能があります。 これはOS起動する前に、システムが安全かどうか、OSは改竄されていないかどうかなどをチェックして、OSの起動と同時に悪意を持ったプログラム(マルウェア)が起動するのを防ぎます。 これによって、不正なシステムが起動できなくなります。 万が一起動しても、ユーザーが正しいIDとパスワードを入力しなければMac内のデータにアクセスすることができないという仕組みです。 リアルタイム暗号化(オンザフライ) Macに搭載されているストレージをリアルタイムに暗号化しながら保存する(書き込みする)機能で、ストレージの安全性を高めることが目的です。 ストレージには暗号化されたデータが保存されているので、万が一盗難や不正アクセスを受けたとしても、正しいIDとパスワードを入力しなければ中身を解読することはできません。 マイクを物理的に遮断する これはT2チップが発表された時に注目を集めた機能です。 MacBookに搭載されたT2チップは、MacBookの蓋が閉じると物理的にマイクを遮断するため、どれだけ精密に作られたプログラムでもマイクにアクセスすることは物理的に不可能となります。 これにより盗聴を防ぐことができますから、これも非常に強力なセキュリティー機能です。 ...