yhara.jp
フィード

Idle Planet Minerにドはまりしていた
yhara.jp
Idle Planet Minerが一段落したのでプチ攻略を書く。Idle Planet Minerとはスマホ向けの放置/incrementalゲーム。宇宙で鉱石を掘り、アイテムを作成して、銀河全体の価値を上げていき、いいところで売却してアップグレートを得る。その繰り返し。単純だけどいろいろ良くできてて楽しかった。やめた理由プラチナリーグまで到達し、ゲーム進行がだいぶ緩やかになってきたからYour Chronicleを始めたのでそれどこでなくなった一番やってたときのスケジュール土日にPvPイベントがあるので、毎回参加するPvPではあるが攻撃とかはないので、淡々とプレイするだけ。ときどき順位を見て上がってると嬉しい週に2回Challengeモードをやる最大24時間でどれだけスコアを稼げるかというモード。報酬がおいしい終了後3日間のクールタイムがあるが、12時間以内で切り上げることで週に2回プレイできる上記のPvPと同時にはできない土曜の昼~月曜の昼くらいでPvPをやり、終わったらChallengeを開始。月曜夜に切り上げて金曜夜くらいまで継続。金曜夜に2回目のChallengeを開始。というのが効率がよい、と気づいたのは公式Discordを見てからで、それまではPvPはあんまり参加してなかった。システムが分かってきてからでもよいと思う。逆に、モチベが高くて効率を最大化したいなら月~金の間に何度か売却を挟むほうがよいのかもしれない(あんまり分かってない)。翻訳について日本語も選べるが、「Smelt」(精錬する)が「ワカサギ」になってる箇所があったりして変だったので英語でプレイしてた。情報ソース海外Wiki https://idle-planet-miner.fandom.com/wiki/ItemDiscord (ゲーム内ヘルプから飛べる)課金このゲームが気に入って少し課金してもいいかと思ったなら、まずは広告を外すオプションを買うのがいい。広告がなくなるだけでなく、デイリーボーナスがもらえるようになる。あとはイベント期間中だけ強化が入るやつとかいろいろあるけど、永続するやつが何個かあったと思うので、先にそっちをチェックしよう。
12日前

A Solitaire Mystery 簡易解説&攻略&プレイログ
yhara.jp
『A Solitaire Mystery』の簡易解説とプレイログです。主にバージョン1.5.6あたりで書いていますA Solitaire MysteryとはあのBABA IS YOUの作者による変形ソリティア集。その前の変形倉庫番集みたいなやつはできる気がしなくてスルーしてたんですが、ソリティアならできるかも…?ということでチャレンジ。ルールはまだ英語版しかないですが、翻訳してくれた方がいるので参考にどうぞ。TAP SOLITAIRE公式難易度:★★★ 体感難易度:★★+ 重ねられる条件:降順(スート関係なし)カードを「タップ」して土台にできるソリティア。BABA IS YOUのキャラがあしらわれたかわいいカードですね。「B」はBABAのB、「K」はKEKEのKみたいにキャラ名がついたカードが通常のエースなので、まずはこれを右のゴールエリアに置くことを目指そう。BABATAIRE公式難易度:★★★★ 体感難易度:★★+ 重ねられる条件:降順(スート関係なし)『BABA IS YOU』と合体したソリティア。これも4キャラがスートになっているが、「IS」のようなルールカードもあり、例えば「BABA IS KEKE」を縦に作るとBABA(スート)がKEKE(スート)として扱われるように変化する。IS ON SAME:同じスートなら数字関係なく積めるようになる。IS ANY SUIT:スート関係なく積めるようになる。IS OPPOSITE:数字が逆になる(10が1になるなど)IS +5:数字が+5される(10以上は1に戻る)同じスートはまとめて持てるので、ON SAMEがとにかく強かった。ELDRITCH INVASION公式難易度:★★ 体感難易度:★★ 重ねられる条件:折り返しあり、同スート不可モンスターを倒すソリティア。ゴールエリアはなく、全てのモンスターを倒しきれればクリア。枠が紫なのがモンスターカードで、開いた瞬間に襲ってくる。モンスターの右に2枚のカードを置き、合計が一致すると倒すことができる。つまりエースは1ダメージしか与えられない…と思いきや、エースに限りスートが一致すると特攻ダメージ(7点)が出る。カード枚数的に最低1回は特攻を出さないとクリアできないらしい。ソリティアに夢中になっていると、戦闘枠が埋まっているのにモンスターを開けてしまい食べられてしまいそ
2ヶ月前

ObsidianとLogseqのオーバーレイで、日誌をうまく扱う
yhara.jp
ObsidianとLogseqはどちらもローカルMarkdownファイルを扱うツールなので、実は一つのリポジトリをObsidianとLogseqで同時管理することができる。同時管理?なぜそんなことをしたいかというと、僕の場合はこういう事情だ。家ではメモの管理にObsidianを使っている。仕事でも仕事メモの管理にObsidianを使っている。仕事用PCでも、家庭メモを編集したい場合がある。Obsidianを2個起動すると操作がわずらわしい(というかそもそもできるのかも知らん)ということで、仕事用PCで家庭メモを編集するときだけLogseqを使っている。やり方は簡単で、単にLogseqを起動してObsidianの保存フォルダを開くだけ。日誌これでだいたいいいのだが、デイリーのメモの管理だけ少し工夫が必要だった。ObsidianもLogseqも、日次のメモファイルを自動で作るような機能がある。が、普通にやるとそれぞれ別の場所にファイルを作ってしまうので、できれば統一したい。これに関してはLogseqの方が設定が貧弱なので、必然的にLogseq側に合わせることになる。まず、Logseq→設定→カスタム設定(config.ednを編集)で、一番最後の}の前に :journal/page-title-format "yyyy-MM-dd" :journal/file-name-format "yyyy-MM-dd" を入れる。次にObsidian側で、設定→Daily notes→New file locationをjournalsにする。これでどちらのツールで日誌を作ってもjournals/2025-01-01.mdのようなファイル名になるはず。
2ヶ月前

vimの環境を見直した
yhara.jp
久しぶりにvimプラグインをいろいろ見直してみた。パッケージマネージャVundleからJetPackに移行。Vundleに特に不満があったわけではなく、たまには新しいのも試してみるかの精神。JetPackは、プラグインのインストール時のUIの見栄えがよい。とりあえず当面使ってみる。起動画面Startifyを入れた。起動時に、最近開いていたファイルの一覧から選べるのが便利。実は起動画面だけでなく、セッションを./Session.vimに自動で保存するという機能がある。前はそのために別のプラグインを入れていたがこれに移行。Jetpack 'mhinz/vim-startify' let g:startify_change_to_dir = 0 " カレントディレクトリを変えてほしくないのでオフ let g:startify_session_autoload = 1 let g:startify_session_persistence = 1ファイルオープンCtrlPからfzf.vimに移行。外部コマンドを必要とするかわりに速い。コマンドも実はjunegunn/fzfを入れれば入るのでそんなに面倒はない。コマンド名が:Buffersみたいに名前空間が付いてないのが気に入らない、と思ったが設定で付けることもできるようになってて、さすが。現在は:FzfBuffersみたいな名前で使っている。ファイル一覧は.gitignoreを適用したかったので、rgコマンド(ripgrep)を起動するようカスタマイズした。Jetpack 'junegunn/fzf', { 'do': { -> fzf#install() } }Jetpack 'junegunn/fzf.vim' let g:fzf_vim = {} let g:fzf_vim.command_prefix = 'Fzf' nnoremap <Space>u :FzfFilesWithIgnore<CR> command! -bang FzfFilesWithIgnore \ call fzf#run({'source': "rg --files", \ 'sink': 'edit', \ 'window': { 'width': 0.92, 'height': 0.7 } \ })コンパイラの起動前はquickrunを使っ
4ヶ月前

RubyKaigi 2025 松山に参加しました
yhara.jp
今年も会社の支援のもとRubyKaigi 2025に参加してきました。今年はTRICK 2025の審査員ということでスピーカーTシャツでした。今回は過去一の投稿数で、選ばれた方もそうでなかった方も、ご応募ほんとうにありがとうございました。最後にちょろっと言いましたけど実はもう一個応募した作品があったんですよね。けっこう評判よかったんですけど、よく見たらサイズ規定をオーバーしてたという…。次こそは余裕をもって作業にとりかかるぞ(って毎回言ってる気がする)。セッションスライドは https://scrapbox.io/ruby-jp/RubyKaigi_2025 にまとまっています。Make Parsers Compatible Using Automata Learning - RubyKaigi 2025系の外側から中身のオートマトンを推測する話。そんな技術があるんだ。最初にSummaryがある構成、すごく良いと思った。 - 図にするとprismとlramaで全然違うのがわかって面白い。(でも同値である可能性も一応ある…のかな?)The Evolution of the CRuby Build System - RubyKaigi 2025CRubyのビルドシステム(./configureとか)について。現状はだいぶ複雑だと思うんで、まとめてあるだけで偉業というやつ。Shakeの話は出なかったけど、Haskell製のビルドシステムらしい。へえ。どのへんに影響を受けてるのかな?次回の発表も楽しみ。Continuation is to be continued - RubyKaigi 2025聞けなかったやつ。callccは利用率から考えると正直いつ消されてもおかしくないと思ってるんだけど(例えば動かなくなったタイミングで)、shift/resetとして蘇ったら熱い。Goodbye fat gem 2025 - RubyKaigi 2025gem作者が各プラットフォーム向けのバイナリをビルドしたりセキュリティパッチを反映するのは大変だが、このままでいいのか?という問題提起。うーんたしかに。nokogiriはインストールが簡単でいいんですけど、例えばlibxml2に脆弱性が見つかるたびにnokogiri作者が頑張らないといけないんですよね。これを、gemspecで「apt
4ヶ月前

自キ沼の深淵へ!40% Keyboard Discordの歩き方
yhara.jp
40% Keyboard Discordは、40%以下の小さなキーボードに魅せられた人間の集うDiscordサーバだ。言語はすべて英語だが、投稿される写真を眺めているだけでも楽しめるだろう。入口下記ページにDiscordサーバへの招待リンクがある。Home | 40% Keyboards Wikiチャンネル紹介膨大な数のチャンネルがあるが、重要そうなものをいくつか紹介する。内容は2025年現在のものなので注意。showcaseおよびchefs-choice素敵なキーボードの写真が集まるチャンネル。vendorsキーボードショップからのお知らせが投稿されるチャンネル。新作の販売やセールの開始など。ic-gb-announcementsIC(Interest Check)およびGB(Group Buy)の案内が投稿される。基本的に1キーボードにつき1つのチャンネルが作られるのだけど、チャンネル欄が長くなりすぎないように、デフォルトでは存在が隠されている。Joinボタンを押すことで当該キーボードのチャンネルが表示されるようになる。たまにJoinボタンが動作していないことがあって、そういう場合はquestion-mark-ranksというチャンネルを使う。ここに例えば?rank Discretionと送信すると、Discretionという名前のキーボードのチャンネルが左のチャンネル一覧に現れる。rankの一覧は?ranksで見ることができる。buy-sell-trade-mini-gbsチャンネルを立てるまでもない、小規模なGroup Buyを開催するチャンネル。どのキーボードにもいえることだが、チャンネルがあるからといって必ず発売されるわけではない。作者が忙しくなって立ち消えになるとか、進捗がないまま数年が経つみたいなケースもままある。その分、応援していたプロジェクトが無事GBを経て手元に届いたときの喜びはひとしおだ。
5ヶ月前

今年の処理系ミートアップ
yhara.jp
このエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの25日目の記事です。メリークリスマス!処理系ミートアップとはプログラミング言語処理系が好きな人の集まりというオンラインコミュニティがあります。処理系ミートアップはこのコミュニティから生まれたイベントで、月1程度でオンラインにメンバーが集まって進捗報告とか進捗しない(詰まった)報告とか雑談とかをするという内容です。開催記録はCosenseにまとまっています。本年は第57回から第68回まで、11回開催されました。ゲスト回最近は私がイベントページを立て、monochromeさんが配信を用意し、raviqqeさんが司会をするというなんとなくの役割分担でやっていますが、今年は何度かTwitterで見かけた言語作者に声をかけて発表をお願いしてみました。第57回scala-jsのtanishikingさん第68回Catlaのbea4devさんまた昨年の第50回ではErgのShibaさんにお越しいただきました。YouTubeに録画があるのでぜひご覧ください。
8ヶ月前

Shiika進捗(2024)
yhara.jp
このエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの24日目の記事です。ShiikaとはShiikaは私が作っている、Ruby風の文法をもつ静的型付け言語です。昨年まででInteger/String/Arrayなどの基本的なところは実装したのですが、そのあとIO機能を実装するところで、これは先に並行性のサポートについてちゃんと考えておかないとなと気付き、今年はその作業をしていました。(たとえば後から並行性のサポートを無理やり入れたため、Fileのreadとread_asyncが両方あって使い分けないといけない…みたいなことは避けたいなという話です。並行性いろいろ考えましたが、流行りのasync/awaitではなく、GoのようにIO等のタイミングで自動的に処理が切り替わるというのを考えています。ただGoのようなマルチスレッドではなく、Node.jsのようにシングルスレッド方式とすることで、より気軽に並行処理を書けるようにしたいと思っています。この場合CPUヘビーな処理が書けなくなりますが(その間他のタスクも止まってしまうため)、もともと性能最重視の言語ではないので、ジョブキューのような形で複数プロセスを使って並列化するか、そういうところは別の言語で書く、ということになると思います。ただ可能なら一部の処理だけ切り出して単独のスレッドを割り当てるとかできるといいですね。CPS変換平行性の実装ですが、Shiikaの関数(メソッド)をCPS変換した形のLLVM IRを吐き、Rustのtokioの上で動かすというのを考えています。これを実験していたのが以下のリポジトリです。https://github.com/yhara/milika(この頃はついでにMLIRを使う実験もしていたのですが、最終的には、MLIRは使わないことに決めました。上記のようなレイヤーの処理をするにはあまり向かなそうとわかったからです。GPU上で動かす言語を作るとかならとても便利だと思います。)実装にあたってはraviqqeさんのPen言語という先人の知恵に助けられました。ありがとうございます。バックポートということでなんとなく動きそうというのがわかったので、その後は実験結果を本体にマージする作業を進めています。ifやwhileなど単純なものは既に動いていますが
8ヶ月前

KeebWorld Conference 2024で発表しました
yhara.jp
KeebWorld Conference 2024 松江 ←みてこのかっこいいウェブサイト!私のスライドはこちら。このイベントのために、KEEB_PDに上げてなかった秘蔵っ子たちです。イベントについて初の松江開催でしたが、いやあ、良かったですね。会場も満員、キーボードも机が足らなくて拡張するくらいの展示台数でした。カバンから手品師みたいに次々とキーボードを取り出すまつもとさんが面白かったです。運営のみなさまありがとうございました。このエントリはkoneko40で書きました。そう、koneko40も秘蔵してたんですけど、おもしろ優先選定の結果、上記のメンツになりました。
8ヶ月前

ファミコンで動くRubyをつくりました
yhara.jp
このエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの10日目の記事です。最近やってた「ファミコン上で動作するRuby」ですが、シンプルなゲームが実装できるとこまでできたのでいったんv0.1.0としました。https://github.com/yhara/nesrubyゲームは先日のRubyWorld Conference 2024の弊社ブースで展示していたものです。JSNESを使ってgithub pagesにもアップロードしておきました。https://yhara.github.io/nesruby/仕組みcc65というCコンパイラがファミコン向けの機械語を生成してくれるので、それを使ってmruby bytecodeのインタプリタを実装したという形です。実装はmruby/cのソースを大いに参考にさせていただいています。ありがとうございます。最初に「こういうふうに書けたらいいな」というRubyプログラムを書いて、それをmruby(mrbcコマンド)でコンパイルして、出てきた命令を一つずつmruby/cから移植する、という感じで作っていました。まだメソッド定義ができなかったり、GCがなかったりするので、そのあたりもいつかチャレンジしてみたいですね。
8ヶ月前