ESM アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

Rails / OSS パッチ会オンライン 2024年5月のお知らせ

2024年5月の Rails / OSS パッチ会を 5月30日(木)に Discord でオンライン開催します。

この会をひとことでいうと、日頃のお仕事で使っている Rails をはじめとする OSS について、upstream にパッチを送る会です。

会には Ruby と Rails のコミッターである顧問の a_matsuda もいますので、例えば Rails に送るパッチのネタがあるけれど、パッチを送るに適しているかの判断やパッチを送る流れが悩ましいときなど a_matsuda に相談して足がかりにするなどできます。

開催時間は 17:00-19:00 となりますがご都合のあう方はぜひご参加下さい。

Discord の Rails/OSS パッチ会サーバーへの招待 URL は以下です。

discord.gg

今月開催された RubyKaigi 2024 の感想戦や、今後予定されている地域Ruby会議に思いを馳せながらという雰囲気になると思います。

rubykaigi.org

RubyKaigi 2024 で OSS 熱の高まっている方や、これからパッチ会に参加してみたいという方、OSS 開発者間の会話に興味があるので聞いてみたいという方もお気軽にどうぞ。


永和システムマネジメントでは、Ruby とアジャイルソフトウェア開発を通じてコミュニティと成長したいエンジニアを絶賛募集しています。

agile.esm.co.jp

Participant Information: ESM Night Cruise at RubyKaigi 2024

Due to overwhelming response, we have closed the registration. We are currently experiencing a high volume of requests for a waiting list. Please be aware that boarding is not permitted for those who are not registered participants. We appreciate your understanding in this matter.

ご好評につき募集を締め切らせていただきました。すでに多くのキャンセル待ちをいただいている状況ですが、参加者以外はご乗船いただけませんので予めご了承ください。

English

Dear ESM Night Cruise Attendees,

Hi, Rubyists! The event is finally tomorrow! To ensure a smooth boarding experience, please check the following information.

Registration will begin at 19:15 and will end at 20:00. Please note that you will not be able to board the ship after this time, so be sure to arrive early. We anticipate congestion as registration nears closing time, and we would appreciate your cooperation in arriving as early as possible to facilitate a smooth process. For those who register early, we have prepared a modest welcome drink on a first-come, first-served basis! Please note that the quantity is limited and we may not be able to provide drinks for all attendees, so you may want to bring your own as needed.

Please be ready to present your QR code from Doorkeeper at registration. We are looking forward to meeting all of you in Okinawa!

日本語

ESM Night Cruise ご参加のみなさま

いよいよ明日開催となりました! 円滑にご乗船いただくため、以下の内容のご確認をお願いします。

当日は19:15から受付を開始します。受付終了は20時で、20時以降にお越しいただいても乗船いただけませんのでご注意ください。 また、受付終了直前は混雑が予想されるため、スムーズな受付のためにできる限り早くお越しいただけるようご協力をお願いします。 早めに受付していただいた方にはささやかながらウェルカムドリンクを先着でご用意しております! 数に限りがあり、乗船者全員分の提供はできないため、必要に応じてご自身でご準備ください。

また、受付時に Doorkeeper の QR コードをご呈示いただきます。事前のご準備をお願いします。

それでは、沖縄で皆さんとお会いできるのを楽しみにしています!

RubyKaigi 2024への6つの関わり

私たち永和システムマネジメント (ESM, Inc.) は RubyKaigi 2024 に6つの関わりをします。

1. Night Cruise スポンサー (Day 0)

今年は沖縄の海での Night Cruise スポンサーをします。

esminc.doorkeeper.jp

参加確定の皆様は 19:15 に受付開始となり、20:00 の受付終了です。受付時にはいくらかの混雑が予想されるため、お早めにお越しください。 受付時刻終了後は出航準備に入りますので、お越しいただいても受付をお断りさせていただく形になります。予めご了承ください。

なお、こちらは応募多数のためすでに申し込みは締め切っております。

多くのイベントは繰り上がり待ちで溢れているようです。時間帯が被る他の Day 0 イベントからの「はしご」を考えていらっしゃる方は、いずれかのイベントのみに絞ってのご参加をおすすめします。複数のイベントに申し込まれている方は、譲りあってご参加ください。

2. @koic と @junk0612 が RubyKaigi 本編に登壇 (Day 2, Day 3)

Day 2 に @koic が『RuboCop: LSP and Prism』というタイトルで登壇し、Day 3 に @junk0612 が『From LALR to IELR: A Lrama's Next Step』というタイトルで登壇します。

blog.agile.esm.co.jp

3. S.H. が RubyKaigi LT に登壇 (Day 2)

Day 2 の Lightning Talks に S.H. が『Contributing to the Ruby Parser』というタイトルで登壇します。

blog.agile.esm.co.jp

4. 現地に10名が参加 (Day 0..Day 4)

@S-H-GAMELINKS, @fugakkbn, @haruguchi, @thata, @junk0612, @kasumi8pon, @koic, @m_pixy, @sfjwr, @wai-doi が現地参加します。

もちろんチケット、交通費、宿泊費は会社予算です。

5. Lightning Talks に銅鑼を提供 (Day 2)

2 日目の Lightning Talks に IT 業界最古の LT 銅鑼を提供します。

6. FJORD BOOT CAMP さんから RubyKaigi へご招待

今年も RubyKaigi 2023 本編チケットを Ruby プログラマー育成の名伯楽である FJORD BOOT CAMP さんにお譲りしました。 (ぜひ楽しんでください!)

bootcamp.fjord.jp

それでは RubyKaigi 2024 の沖縄でお会いしましょう!


RubyKaigi 2024 に多様な関わり方をしている永和システムマネジメントでは、Ruby とアジャイルソフトウェア開発を通じてコミュニティと成長したいエンジニアを絶賛募集しています。

agile.esm.co.jp

RubyKaigi 2024 の Lightning Talks に弊社 S.H. が登壇します

RubyKaigi 2024 の2日目に開催される Lightning Talks に弊社 S.H. が登壇します。

rubykaigi.org

ここでは、登壇者の S.H. からトークの内容について軽く紹介をします。

Contributing to the Ruby Parser (S.H.)

構文解析研究部のS.H.です。『Contributing to the Ruby Parser』というタイトルでLTをします。 タイトルからわかるようにRubyのパーサーへのコントリビューションについての話です。

内容としては、私がどのようにしてparse.yへのコントリビューションをはじめたのかに始まり、parse.yからリテラルオブジェクトの生成をなくしていく対応やUniversal ParserのC APIの依存削減などを話します。

私はいかにして心配することを止め、Rubyパーサーにコントリビューションすることを学んだか。その背景をお話ししますので是非LTを聞きに来てください。


RubyKaigi 2024 本編には @koic@junk0612 が登壇します。沖縄でお会いしましょう。

blog.agile.esm.co.jp

RubyKaigi 2024 に Night Cruise スポンサーとしても参加している永和システムマネジメントでは、Ruby とアジャイルソフトウェア開発や構文解析器の研究を通じてコミュニティと成長したいエンジニアを絶賛募集しています。

agile.esm.co.jp

RubyKaigi 2024 Night Cruise アクセス情報🚢【参加者向け】

はるぐち(@haruguchi)です。

ゴールデンウィークも明けて RubyKaigi 2024 まであと1週間となりました。先日のエントリでお伝えした通り、私たち永和システムマネジメントは RubyKaigi 2024 に Night Cruise Sponsor として協賛します。

blog.agile.esm.co.jp

このエントリはNight Cruiseの受付場所までのアクセスと受付情報についてお伝えする参加者向けのエントリとなっています。

ご好評につき募集を締め切らせていただきました。すでに多くのキャンセル待ちをいただいている状況ですが、参加者以外はご乗船いただけませんので予めご了承ください。

アクセス

受付場所は「那覇ふ頭ターミナル」です。Google Maps上では那覇港客船待合所となっています。

モノレールで「旭橋」駅からは徒歩で13分ほどです。受付の混雑が予想されるので早めにお越しください。 ☆で示したところが受付場所です。◎で示したことろの写真を載せているので参考にしてください。

改札を出たら右側の出口を降ります。(写真上で私がさりげなく指し示している方向です)

旭橋駅改札出口の様子
旭橋駅改札出口の様子

旭橋駅から左手にモノレールの線路が見えるように川沿いを歩いていくと、橋が見えます。 信号を渡って橋の手前で右に曲がります。信号を渡った先には「那覇ふ頭ターミナル」という案内が立っていますので後は道なりまっすぐです。

交差点の様子(明治橋)
右折する交差点の様子(明治橋)
信号を渡ったすぐにある案内表示
信号を渡ったすぐにある案内表示

右折後7分ほどまっすぐ歩くと左手側に受付場所である「那覇ふ頭ターミナル」が見えてきます。

那覇ふ頭ターミナル(受付場所)

建物に入るとスタッフがいます。誘導に従って受付を済ませてください。

受付について

受付の流れは以下のようになっています。

  1. DoorkeeperのQRコードを提示
  2. 乗船名簿の記入(氏名、年齢)
  3. 名札の作成

受付にはDoorkeeperのQRコードが必要になりますので準備をお願いします。また乗船名簿記入の際、乗船される方の氏名、年齢を乗船者名簿に記入していただく必要があります。こちらは関係省庁からの要請によりクルーズ船運営会社のウエストマリン様に提出するもので、乗船に際して必須となります。

また、受付時間は19:15 ~ 20:00 となっていますが、終了間際は混雑が予想されますのでできるだけ早めの受付をお願いします。19:40までに受付の方にはウェルカムドリンクも用意しています🍺

以上、アクセス&受付情報でした。Night Cruiseでお会いしましょう🚢

今年は弊社から @koic と @junk0612 の2名が登壇します

弊社からは @koic, @junk0612 の 2 名がスピーカーとして登壇します。こちらもぜひお楽しみに!

blog.agile.esm.co.jp


永和システムマネジメントでは、Ruby コミュニティと共生しながら成長したいエンジニアを絶賛募集しています。

agile.esm.co.jp

RubyKaigi 2024 に Night Cruise Sponsor として協賛します🛳️🌌

ふーが ( @fugakkbn ) です。

今年もこういったお知らせができることをうれしく思います。
私たち永和システムマネジメントは、RubyKaigi 2024 に Night Cruise Sponsor として協賛します。

rubykaigi.org

Night Cruise Sponsor

RubyKaigi 2024 は沖縄県那覇市で開催されます。沖縄といえば海!海といえばクルーズ!ということで、RubyKaigi 2019 以来の Night Cruise を会期前日である 5/14(火) の夜に開催します。沖縄の "ちゅら海" をクルーズ船でゆったり周遊しながら、Rubyist 同士の交流はもちろん、RubyKaigi 2024 に向けて気持ちを高めていく場を提供できればと思います。
会場ではタコライスや沖縄そば、オリオンビールに泡盛といった沖縄グルメを始めとしたお料理を食べ・飲み放題で提供予定です。

詳細やお申し込みについては追ってご案内しますので、永和システムマネジメントの X(旧 Twitter) をフォローして続報をお待ちください。

https://twitter.com/rubyagile

なお、今回は "First-Timer 枠" として RubyKaigi に初参加の方がお申し込みいただける枠を用意する予定です。初めての参加で不安な方や交流をしたいけれどどう動けばいいのかわからない方向けの参加枠です。初参加の方にも楽しんでいただけるイベントになればうれしいです!

RubyKaigi 2024 に向けて

いよいよ会期 1 ヶ月前ということで、どのセッションを聴講しようか、あるいはどんなセッションなのだろうかといった予習をされている方も多いことと思います。弊社でも、先日の エンジニアお茶会 でタイムテーブルを眺めながら当日に想いを馳せるなどしていました。毎年たくさんの気づきと刺激を受けられる RubyKaigi が今から本当に楽しみです。

そんな RubyKaigi 2024 に、今年もスポンサーとして関われることを嬉しく思います。Night Cruise で気持ちを高めて翌日からの Kaigi をより一層楽しみましょう!クルーズ会場、そして Kaigi 会場で皆さんとお会いできるのを楽しみにしています。

今年は弊社から @koic と @junk0612 の2名が登壇します

弊社からは @koic, @junk0612 の 2 名がスピーカーとして登壇します。こちらもぜひお楽しみに!

blog.agile.esm.co.jp


永和システムマネジメントでは、Ruby コミュニティと共生しながら成長したいエンジニアを絶賛募集しています。

agile.esm.co.jp

はじめてのRISC-Vベアメタルプログラミング(ヨロシク編)

こんにちは、永和システムマネジメントの内角低め担当、はたけやま( @htkymtks )です。

みなさん、RISC-Vをご存知ですか?RISC-VはCPUの命令セットアーキテクチャ(ISA)のひとつで、使用料のかからないオープンソースライセンスで提供されていることや、命令セットの美しさから注目を集めています。私も以前にRubyでRISC-Vシミュレータを作ったりしてました。

今回はRISC-Vを用いて、OSもライブラリも使用しないベアメタル環境で動作するプログラムを作成してみようと思います。

インストール

まずはRISC-Vのクロスコンパイラとエミュレータをインストールします。クロスコンパイラのビルドには約1時間ほどかかるので、時間の余裕がある時に行ってください。

$ brew tap riscv-software-src/riscv
$ brew install riscv-tools qemu

以下のコマンドを実行し、それぞれのバージョンが正しく表示されれば、インストールは成功です。

 $ riscv64-unknown-elf-gcc --version
 $ qemu-system-riscv64 --version

クロスコンパイラとは、あるアーキテクチャ(ターゲットシステム)向けの実行可能コードを、異なるアーキテクチャ(ホストシステム)上でコンパイルするためのツールです。今回はターゲットシステムがRISC-V、ホストシステムがARM64(Apple M1)に設定されたGCCを利用します。

エミュレータにはQEMUを使用します。QEMUは様々なCPUアーキテクチャをサポートするエミュレータで、32ビット及び64ビットのRISC-Vが対応しています。

サンプルプログラム

レジスタs0に値(0x4649 = ヨロシク)をセットして無限ループするサンプルプログラムを用意します。

  .text
  .globl _start
  .type _start, @function

_start:
  # レジスタ s0 へ即値 0x4649 をロード
  li s0, 0x4649
loop:
  # 無限ループ
  j loop

リンカスクリプト

QEMU(正確にはVirtio)では、アドレス0x80000000番地からプログラムの実行が開始されます。そのため、以下のようなリンカスクリプトを用意し、プログラムの開始位置のアドレスが0x80000000番地になるようにします。

MEMORY {
   RAM (RWX) : ORIGIN = 0x80000000, LENGTH = 0x40000000
}
SECTIONS {
    .text : {
        *(.text)
        _end = .; /* 後日 malloc で使う予定 */
    }
}

ビルド

それではサンプルプログラムをビルドしましょう。アセンブラを使用してアセンブリコード sample1.S からオブジェクトファイル sample1.o を生成し、オブジェクトファイルから実行ファイル sample1.elf を生成します。

$ riscv64-unknown-elf-as sample1.S -o sample1.o
$ riscv64-unknown-elf-ld -Tmy_baremetal.ld --no-relax sample1.o -o sample1.elf

生成された sample1.elf を逆アセンブルしてみましょう。プログラムが0x80000000番地からスタートすることが確認できます。

$ riscv64-unknown-elf-objdump -S sample1.elf
 
sample1.elf:     file format elf64-littleriscv
 
 
Disassembly of section .text:
 
0000000080000000 <_start>:
    80000000:   00004437           lui s0,0x4
    80000004:   6494041b            addiw   s0,s0,1609 # 4649 <_start-0x7fffb9b7>
 
0000000080000008 <loop>:
    80000008:   0000006f            j   80000008 <loop>

実行

先ほど作成したELFファイルを指定してQEMUを実行します。

qemu-system-riscv64 -M virt -monitor stdio -bios sample1.elf

引数の意味は以下のとおり。

  • -bios sample1.elf
    • 実行ファイルを指定します
  • -M virt
    • ターゲットとなるボードを指定します。今回は「RISC-V VirtIO board = virt」を使用します
  • -monitor stdio
    • QEMUモニタをターミナルに表示するために指定します

実行結果を確認

QEMUを起動してプログラムを実行すると、QEMUモニタも一緒に立ち上がります。「info registers」コマンドでレジスタの中身を確認すると、レジスタ「x8/s0」に「4649」がセットされていることがが確認できます。また、プログラムカウンタ(PC)の値が「80000008」であることから、無限ループしていることが分かります。

動作確認を終えたら、QEMUモニタで「quit」と入力してQEMUを終了させます。

終わりに

以上、QEMU上のRISC-Vでベアメタルプログラミングを行う方法を紹介しました。次回はこの上で何か面白いアプリケーションを動かしてみようと思います。