全力開発ブログの作り方:textlintとMarkdownlintで品質を維持する

こんにちは、全力開発部の @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の拡張機能「テキスト校正くん」を弊社からリリースしました。無料で利用できます。 ...

Posted 2024-11-17 ·  konoka-iori ·  Tech

開発環境をDev Containerを使ってコンテナー化してみた

こんにちは、全力開発部の @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 ...

Posted 2024-10-16 ·  Konoka-Iori ·  Tech

WordPressからHugoに移行してみた

こんにちは、全力開発部の @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のネットワークに最適化することで、サイトのパフォーマンス向上が期待できます。 ...

Posted 2024-06-23 ·  Konoka-Iori ·  Tech

NVAPIを使ったVRAMの取得

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コンパイラでもコンパイル可能です。 ...

Posted 2020-11-13 ·  Rutsumi-Hinata ·  Tech

今日が祝日かどうかjpholidayを使って判定する【Python】

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日ですので、出力結果は「元日」となります。非常に簡単です。 ...

Posted 2020-08-15 ·  Updated 2024-06-02 ·  Konoka-Iori ·  Tech

スマートフォンでPythonを動かす方法!

スマートフォンでPythonを動かす方法はいくつかありますが、今回は「モバイルC」でPythonを使う方法をご紹介します。 といっても、モバイルCのPythonはおまけ程度の機能であり、 pip install などはできません。 あくまで簡易的なプログラムを組む、試しに実行してみる程度にしておきましょう。 しっかりとしたPythonの開発環境がほしい場合は、Pythonistaなどを使うことをおすすめします。 モバイルCの使い方と簡単なサンプルコード(C言語)はこちらの記事 に書いています。 Pythonのバージョン確認・準備 モバイルCに内蔵されているPythonのバージョンを確認しておきます。 「設定」ボタンから「基本コンパイラ」を選ぶと、「Python」の項目があります。 それをタップすると、Pythonのコンパイラを選ぶことができますが、デフォルトでは Python 3.7.0 しか用意されていないようです。 よってモバイルCで動くのは Python 3.7.0 のみとなります。 ファイルの作成・サンプルソースの入力 まずはモバイルCでファイルを作成します。 この時、拡張子を .c のままにせず、 .py に変更してください。 これで自動的にPythonでソースが実行されるようになります。 では、今回は test.py を作成してみましょう。 print 文の実行 早速、下記のコードを入力して動作を確かめてみましょう。 test.py 1 print("今日も全力開発!") そしてこれを実行すると output 1 今日も全力開発! と出力されるはずです。 モジュールのインポート 次に、モジュールをインポートして質問とURLの表示に間を置いてみます。 test.py 1 2 3 4 import time print("今日も全力開発!") time.sleep(1) print("https://blog.zenryoku.dev") これを実行すると ...

Posted 2020-08-15 ·  Updated 2024-06-02 ·  Konoka-Iori ·  Tech

モバイルC - スマートフォンでC言語が使えるアプリ

iPhoneやAndroid端末でプログラミングできるアプリをご紹介。スマホで簡単にC言語で書かれたプログラムを実行したい人におすすめです。 概要 対応OS 価格 iOS(App Store) 無料(有料版あり) Android(Google Play) 無料(有料版あり) それぞれOS名をクリックするとダウンロードページに飛びます。また、価格は記事投稿時点のものです。 有料版と無料版の違いですが、アプリ内では「広告なしで使うことができる」としか書かれていません。違いがよくわからないので、基本的には無料版でじゅうぶんでしょう。 対応している言語は下記の通りですが、言語によっては動作が不安定なので注意が必要です。また、複数コンパイラがある場合は好きな方を自由に選ぶことができます。 C(CPP1.2.10、Clang6.0.0) C++(Clang6.0.0) JavaScript(Duktape2.2.0) Python(Python3.7.0) Lua(Lua5.3.4) 「モバイルC」というアプリ名なので当然C言語がメインに取り扱われていますが、PythonやJavaScriptなどにも対応しています。 とりあえずC言語で何か実行してみる ものは試し、とりあえずC言語で何か書いて実行してみます。まずはファイルを作成してみましょう。 ファイルの作成 トップ画面の上を見ると、何やら4つボタンが表示されています。 番号 説明 ① ファイルを作成 ② フォルダーを作成 ③ 設定 ?マーク ヘルプ まずは、①をタップしてファイルを作ります。 ファイル名は test.c にでもしておきましょう。 このとき、C言語ではなく他の言語を使いたい場合は拡張子を .py にしたり .js にしたりすればその言語で処理されます。 今回はC言語でプログラムするので拡張子は .c にします。 迷子対策に、ユーザーファイルの場所を記載しておきます。画面右下の家マークをタップしてもジャンプできます。 ユーザーファイル:data / CCR / UserFiles キーボードの使い方 編集画面になったら、画面の適当な場所をタップしてキーボードを表示させます。 デフォルトではモバイルC独自のキーボードが表示されます。 このキーボードに慣れるとまあまあ入力が早くなるので、とくにこだわりがなければこのキーボードを使いましょう。 キーボードの上には、ツールバーが表示されています。これが使いやすい。コピペ、切り取りなどが簡単にできます。 番号 説明 ① キーボードを閉じる ② OSのキーボードに切り替える ③ コピー・カット・ペースト ④ カーソル移動・選択 ⑤ 元に戻す・やり直し ⑥ 実行(コンパイル) ⑦ キーボード拡張 「モバイルCのキーボードがいやだ!」という人は②のボタンをタップしていつものキーボードに戻すこともできます。 ...

Posted 2020-08-05 ·  Updated 2024-03-19 ·  Konoka-Iori ·  Tech

ConoHaVPSでMinecraftのサーバーを立てた話

昨今の情勢から私も例に漏れず自宅待機が続いており、暇な時間を少しでも有効活用するために、以前から使ってみたかった「VPS」で何かをやってみようと思い、 ConoHaVPS を使ってMinecraft(Java版)のサーバーを立ててみました。 サービスを利用できるようにするまで まずはサービスを利用するために必要な登録を行います。 以下の画像を使って説明します。 法人でなければ書く必要がありません。 自分自身の個人情報を入力してください。 メールアドレスを入力してください。 パスワードを入力してください。 Tip ConoHaにログインすると「ログインしましたよ」メールが届き、不正ログインなどに気づくことができるので頻繁に使うメールアドレスにした方がセキュリティ上良いです。 4のパスワードも、なるべく強固なものにしておいた方が良いでしょう。 完了したら、5のボタンをクリックして支払い画面に飛びます。 今回、私はこの記事を書く上で登録を終えてしまっているので多少操作に差があるかもしれませんが、支払い方法を説明します。 青いチャージボタンをクリックすると、チャージ金額とチャージ方法が出てきます。 チャージ金額は必要な分を入力して、あとの記入欄に自分のカード情報を入力して、青い「決済」ボタンをクリックすることによってチャージされます。 VPSをレンタルするまで さて、ここまで来たらあとはレンタルするだけです。 Important ConohaVPSはサーバー起動中のみに料金が発生するのでは無く、サーバーをレンタルしている間、使用料金が発生します。 私はこのことを知らなかったため、少しだけ料金が高くついてしまったことがあります。注意してください。 サーバーの追加を行うためには、真ん中の「追加」か横にある「サーバー追加」をクリックすると下のようなページに飛ばされます。 私は知人と集まれる時間だけMinecraftサーバーを開きたかったので「VPS割引きっぷ」は利用しないをクリックして必要なスペックのサーバーをレンタルしました。 そしてイメージタイプを選びます。はじめてであれば「OS」を選んで、保存イメージがあるのであればそこから選択してサーバーを立てることができます。 root パスワードはメモ帳などで下書きしてからコピーをして貼り付けるのが良いでしょう。 Warning この root パスワードを忘れると保存したイメージを復元できなくなりますので注意してください。 VPSの設定 VPSサーバーにはSSHを利用して接続します。個人的には下記のソフトウェアがおすすめです。 Releases · TeraTermProject/teraterm - GitHub Contribute to TeraTermProject/teraterm development by creating an account on GitHub. ...

Posted 2020-03-04 ·  Updated 2024-06-14 ·  Rutsumi-Hinata ·  Tech