Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? たるいと申します。FPGAファミコンをスクラッチで作ろうと活動しております。本記事はHardware Description Language Advent Calendar 2025 15日目の記事です。 続きかきました↓FPGAファミコンのはじめかた(2) PPU編Githubレポジトリ↓ https://github.com/tarusake/tarunes/tree/hello-cpu はじめに 「レトロゲーム」は、FPGAの活用例としてよく知られている分野の一つです。 中でもファミコン(NES)開発は挑戦者が多く、技術

このドキュメントは、Y.ROMIさんが発行された同人CD「PC88ゲームの世界」 CD-ROM向けに、2000年6月に執筆、脱稿したものです。 その版をもとに記述ミスなどを修正したものを、ここに掲載します。 はじめに 筆者は、PC-88史上に残る名作である(株)日本ファルコムのARPG、「ソーサリアン」をシャープ製パーソナルワークステーションX680x0シリーズへ移植した経験をもつ。この移植は全くのアンオフィシャルなものであり、あくまで個人の範囲内で独自に行ったものであることを予めお断りしておく。 さて、この移植にあたり、筆者らはバイナリレベルで60KBにもおよぶPC-8801mkIISR版「ソーサリアン」のほぼ全プログラムを解析するという作業を行った。この結果、今まで知られていなかった事実や、またソーサリアンのメインプログラマーである木屋 善夫氏(現在、日本アプリケーション(株)に在籍)

A 2025 Survey ofRustGUI Librariesに掲載されているライブラリのそれぞれの特徴や使い勝手、実装のしやすさ、アクセシビリティなどを紹介します。 評価ポイントについて 各ライブラリは以下の基準で評価されました: 動作するか - 基本的な機能が実装できるか スクリーンリーダー対応 -Windows Narratorで内容が読み上げられるか IME対応 -日本語入力(IME)が正常に機能するか(「東京」と入力できるか) 実装の複雑さ - コードはどれだけ簡潔か 主なライブラリの比較と評価 1. Dioxus - WebViewベース DioxusはReactに影響を受けた設計でWebViewを使用してデスクトップアプリケーションを構築します。元記事では、WebView2/WebKitGTKを通じて実装されていると説明されています。 let muttext =

読みやすいコードとは何か 読みやすいコードとは、脳に負荷がかからないコードである。脳に負荷がかからないコードとは、人間の脳の特性に配慮して書かれたコードである。したがって読みやすいコードを書くには、まず人間の脳の特性を把握する必要がある。読みやすいコードの特徴は、この人間の脳の特性から論理的に導かれる。 また、「コードを読む」とは過去から未来への情報伝達、または自分から他者への情報伝達であり、情報理論における以下の2つの数学的原理にも支配される。 頻出する情報には共通の符号を割り当てることで情報を圧縮することができる。 失われた情報を復元することはできない。 この記事に書かれた内容はプログラムに止まらず、ドキュメント、記事の執筆など、プレインテキストによって情報を伝達する際には一般に適用可能である。 もしもこの記事を読むのが面倒であれば、以下の5つだけを覚えておけばよい。 ひとつの処理の単

本記事はJUCE Advent Calendar 2024 の12月1日向けに投稿した記事です。 はじめに本記事は、C++言語向けマルチメディア系アプリケーションフレームワーク『JUCE』の入門者向けの記事になります。記事全体を通して、以下の内容について触れています。 JUCEの紹介、特に技術的特徴やその背景について JUCEの開発環境のセットアップ手順について JUCEでプロジェクトを新規作成する手順について本記事がJUCE入門者のサポートに役立つと幸いです。本記事は過去に投稿したJUCEハンズオン2023 〜JUCEをはじめよう〜の改訂版になります。 過去の記事をベースに、2024年時点での情報を記載しております。 そのため、過去の記事と内容の多くが重複することをご了承ください。本記事で対象とするバージョン JUCE 8.0.4 Visual Studio2022 Xcode

本記事はJUCE Advent Calendar 2024の12月5日向けに投稿した記事です。 はじめに JUCEによるVSTプラグイン作成の初心者向けチュートリアルです。数年前にJUCEに出会ったばかりの自分が、当時こんなチュートリアルがあればなあという内容を書いてみました。 JUCEのチュートリアルは公式のものも非公式のものもすでにたくさんあります。とはいえ、公式チュートリアルを見てみると、プラグインのチュートリアルと、信号処理のチュートリアルと、GUIのチュートリアルが別になっており、現実的なVSTプラグインを作るときの、実装ポイントや全体のワークフローを知りたいという需要には応えられていないように感じていました。 また、他の言語にくらべてC++言語はソースコードが長くなりがちで、相当工夫しないと着目すべき点と、そうでない点が分かりづらくなっていしまいます。JUCEの場合、設定画面の

同僚が書いたGo初学者へのコードレビューでよくあったコメント20選 では、Go初学者へのコードレビューでよくあったコメント20選を紹介しました。 今回は私がコードレビューでよくお願いするコメント追加のお願い について紹介します。 前提:コメントを書いて欲しいわけコードレビューでコメントを書いて欲しい理由は以下の通りです。 プロダクト、サービスの持続可能な開発を支えるため 人が入れ替わっても開発の迷いを可能な限り減らすため 具体的なコメントの追加パターン ①変数やパラメーターの説明を書く コードを書く人にとっては必要があって構造体や変数を定義しているので自明ですが、第三者からすると解釈に悩むことがあります。 そのため誰が見ても自明でしょうという変数以外については注釈をいれます。 たとえば、User 構造体における ID は自明(どのような採番ルールか?みたいな疑問は出るが、ID を入力

2023年10月6日(金)に開催された「SIG-AUDIO #21 サウンドプログラマーのお仕事」へ、ご参加いただいた皆様、ありがとうございました。公開可能な範囲での講演スライド・映像を共有いたします。 ご講演いただきました、株式会社スクウェア・エニックス 藤原 達也様、株式会社Prismaton 木幡 周治様に改めて御礼申し上げます。 講演:サウンドプログラマーになろうスライド アンケート結果参加者によるアンケート結果の一部を掲載させていただきます。 参加登録:238名 アンケート回答:61名 ご講演へのコメントより抜粋サウンドプログラマーになろう:調べてもなかなか知ることができないサウンドプログラマ関係のお話を聞けて大変勉強になりました。こういった公演は大変貴重ですので、次回も楽しみにしております。 非常に参考になりました。共通認識や問題点を聞くことができて、嬉しかったです。ありがとう
![[報告] SIG-AUDIO #21 「サウンドプログラマーのお仕事」が開催されました|IGDA Japan SIG-Audio](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f6600bde0ba035f7c0a7dbfbfa226fdfa56b08a74%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fassets.st-note.com%252Fproduction%252Fuploads%252Fimages%252F120139310%252Frectangle_large_type_2_e0b13e3475645ed5ada7be7d6bb9f6b4.png%253Ffit%253Dbounds%2526quality%253D85%2526width%253D1280&f=jpg&w=240)
はじめに こんにちは!ソフトウェアエンジニアの種岡です。 私たちのチームでは、TypeScriptを使用して開発を行っており、Prettierというコードフォーマッターを利用し、チーム内でコーディングスタイル統一に大変重宝しています。 そんなフォーマッター界隈で、Rust製で爆速で動作すると噂のdprintが良いということで試してみたところ、驚くべきことが起きました! Prettierでは、コードフォーマッティングに 7.69秒 かかっていたのですが dprintを使うことでわずか 0.47秒 で完了するようになりました🚀🚀🚀 なんと、 10倍以上速い とういう結果に! コードフォーマットは、Gitのpre-commitフックやGitHub Actionsで日々活用しており、普段の開発作業の裏側でコードの品質を支えてくれているありがたい存在です。 この速度改善により、開発プロセスの中
はじめに 最近、若手のコードレビューをしていて例外の使い方を教える機会があったので、ブログの方にもまとめたいと思います。今回はバッチ編。オンラインだとまた少し違う観点があると思います。また、言語はJavaを前提していますが考え方は例外機構をもつ言語ならあまり変わりません。 TL;DR 例外は原則キャッチしない。バッチは速やかに殺せ 個別箇所でログを出さずに必要な業務情報はExceptionを入れ子にして乗せる 長いバッチのためにはスキップもやむなし 原則、例外はキャッチしないJavaにはErrorとExceptionが存在し、OutOfMemoryErrorとかプログラム上ではどうしようもないものがエラー、ファイルが存在しない(FileNotFoundException)とかプログラム側でハンドリングするもの、と教科書では習うと思います。なのでException系はキャッチするものと、と

はじめに 日本語プログラミングの議論が続いていますが気分転換にこんな奇抜なプログラムはどうでしょうか。 経緯 木村 明さん 1 の傑作かつ芸術的な日本語プログラムに「ポエム(Poem)」があります。 1986年に作られました。当時はPC-9801やFMRなどMS-DOS環境のPCが全盛で、このプログラムもPC-9801向けに書かれていました。プログラムは大変面白いのですが、そのような事情で現在では実際に動かすことはできず長いこと眠っていました。 一方で、Mindのほうは長らく開発していたGUI版が動き始め、Poemが使うグラフィック描画もできるようになったことから、Poem を実際に動かしてみたくなりました。9801グラフィックの互換処理を差し込むことでなんとか動かすことができました。動いたときは「ああ、こんなプログラムだったな」とちょっと感動しました。 公開について 氏の許可を得てソース

コンピューター上でプログラムを動作する際に必要になるのがメモリです。プログラム自体をメモリに読み込む必要があるのはもちろん、プログラムが行う動作はほとんど「メモリから値を取りだして計算し、メモリに保存する」であるといっても過言ではありません。プログラムが動作する際にメモリがどのように管理されているのかについて、ベテランプログラマーのサム・ローズさんがブログで解説しています。 Memory Allocation https://samwho.dev/memory-allocation/ C言語の標準ライブラリには「malloc」と「free」という2つの関数が用意されています。この2つはなんと1979年のUnix v7から存在している歴史ある関数で、mallocがメモリの割り当てを担当し、freeがメモリの解放を担当しています。サム・ローズさんの解説は「この2つの関数の中身を自分で実装する」

Kernel/VM探検隊online part6 で Rui Ueyama 氏による『リンカー moldをいろんなターゲットに移植した話』のセッションを視聴し、普段は接点のないCPUやpsABIといった低レイヤーの世界を覗き見したので、メモを残しておきます。 動画 発表スライド Ruiさんは、LLVMのリンカlldの作者でもあり、過去には同勉強会のPart 2でもリンカについて発表されています。 超高速リンカmold 1/2 - ログミーTech 超高速リンカmold 2/2 - ログミーTech 今回も、前日に発表が決まったとはとても思えない、非常に濃い発表でした。本テーマは筆者の普段の業務と大きく異なります。間違いなどがあればコメントで指摘していただけると助かります。 以下の様なキーワードが頻出します。 リンカ psABI ELF QEMU ISA RISC/CISC エンディアン

Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基本的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであってもリ

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く