C++テンプレートを再考する

レトリバ製品開発部の酒好き武闘派エンジニア田村です。 仕事でC++ばかり書いてるのに何故かセミナーで趣味のElixirを話しましたが、文字だと勢いで押しきれない気がするのでC++を取り上げることにしました。

C++20(またはC++2a)の規格化が来年近づいてきていますが、C++20では、ついに何度も棚上げされてきたコンセプトが採択されました。g++ -std=c++2a で試そうかと思ったのですが、コンパイラがまだ対応していない悲しみの中、まずはテンプレートを見直そうと勉強したところ、思った以上にだいぶ深かったので、今回は単純なコンテナの型指定や関数の引数の型指定以外でのtemplateのテクニックを取り上げたいと思います。帰ってこれなくならない程度の深さで…。基本・応用テクニックを中心にC++20の新機能、コンセプトもコンパイルできないため規格書ベースですが、少しだけ触れられればと思います。普段コンテナの型指定にしかtemplateを使っていなかった人やC++興味あってもあまり触れていない人の刺激になれば幸いです。

続きを読む

RubyKaigi2019に参加しました。

こんにちは。youchanこと大崎 瑶です。レトリバでは製品開発とPoCなどをやっています。

レトリバはRubyKaigi2019のスポンサーとして後援しました。おなじみのキーキャップをノベルティとして提供させていただきましたがみなさん手に取っていただけたでしょうか?

f:id:Youchan:20190426153755p:plain:w600
レトリバキーキャップ

そういうわけでRubyKaigi2019の参加レポートをお送りしたいと思います。

Parties & Services

これはここ数年の傾向ですがパーティーなどスポンサー企業提供のサービスが過熱してます。今回はそれが顕著に出ましたね。これからもエスカレートしつづけるかは分りませんが過去最高のものになりました。RubyKaigiの楽しみの一つでもあります。 個人的に参加したものを中心に紹介します。

ナイトクルーズ

まずは前日のナイトクルーズです。

f:id:Youchan:20190426155205p:plain:w400

永和システムマネジメントアジャイル事業部の提供になります。豪華クルーザーを1挺借り切っての豪華なパーティーはこれから始まるRubyKaigiの充実ぶりを予感させるものでした。

屋台

ランチには屋台が登場しました。福岡といえば屋台ということですが、まさか会場に屋台を呼ぶとは大胆です。もちろんスポンサードされているものですので無料です。私は3日間で6つの屋台をコンプリートしました。 株式会社ドリコムの提供でした。

懇親会

オフィシャルパーティーはなんと商店街を借り切ってのパーティーとなりました。これまた大胆な試みです。この様子は地元のテレビでも紹介されたそうです。

headlines.yahoo.co.jp

コード懇親会

2日目の夜は各企業がスポンサーをしてパーティーをするのが恒例になりました。私は株式会社Speee提供のコード懇親会に参加しました。 コード懇親会はコードを書きながら懇親する会です。様子は参加者のみなさんのフィードバックを見ると分かるでしょう。

github.com

Ruby Puzzle

クックパッド株式会社の2人のフルタイムRubyコミッターによるコードパズルです。不完全なコードに任意の文字列を挿入することによって"Hello world"を表示するプログラムを完成させるというものでした。どの問題も1文字だけ挿入して完成させる回答が存在していてそれを最も早く見付けられた人が表彰されました。

techlife.cookpad.com

実は私も2-2の問題の勝者になりました。;)

続きを読む

自作プログラムを監視しよう (その1)

はじめまして

はじめまして、レトリバのエンジニアの高田です。 レトリバには2018年の4月に入社しました。主に C++Linux 上で動くサーバーサイド プログラム の 開発をおこなっています。 今回、会社の技術Blogをリサーチャー/エンジニア陣が順番で執筆し公開していくことになりました。 あまりBlogを書いてない私は、なにをどう書くのが良いのか、易しすぎず 難し過ぎず 広すぎず 専門的すぎず…… などを考え始めると 何も書けなくなりそうなので、 サーバーサイドプログラム開発の初心者だった頃の自分が読んだとしたら嬉しいと思える内容で行こうかと思います。

ここ数回の題材は「監視」でいこうと思います。

先日、O'REILLY「入門監視」という本を購入しました。アプリケーションのモニタリングについてよくまとめられいます。 私も我流で試行錯誤しながらこんな感じかなという知見は有ったのですが、体系だって書かれた本からは得られるものが多かった様に思います。お薦めです。

https://www.oreilly.co.jp/books/9784873118642/

プログラムが意図した通りに動いているかの確認、動作状況の見える化、を目的として監視を行います。 私が開発する場合のサーバサイドプログラムでは、以下に示す三視点での監視を行えるようにしています。

  • 監視の三視点
    • 1 外側からの監視
    • 2 内側から
      • 2.1 時系列的な監視
      • 2.2 現時点での詳細な監視

外側と内側は、試作しているサーバサイドプログラムからみての外側と内側を意図しています。 外側とは、OSの機能を用いて、サーバプログラムのリソースの使用状況を見ます。 内側とは、プログラムでの実装によって出力するロギング、メトリクスを意図します。

今回は「1 外側からの監視」について記します。

続きを読む

コマンドを叩いて遊ぶ 〜コンテナ仮想、その裏側〜

レトリバのCTO 武井です。

今回は過去にセミナーでお話した内容を振り返りつつ、当時いれられなかったこぼれ話や補足などを加え、ブログで紹介しようと思います。 今後、レトリバセミナーで話した内容はこのような形でブログとしても公開する予定です。 また、過去のセミナーも随時ブログ化される予定ですのでお楽しみに!

YouTubeのレトリバチャンネルもぜひよろしくお願いします!

今回の過去セミナーはこちら


PFIセミナー2015/10/22:コマンドを叩いて遊ぶ〜コンテナ仮想、その裏側〜

「コマンドを叩いて遊ぶ 〜コンテナ仮想、その裏側〜」というタイトルで、Preferred Infrastructure時代に、PFIセミナーで話した内容です。 レトリバ創業前、3年以上前のセミナーでして、PFIセミナーの配信がYouTubeに移行したはじめてのセミナーだったりもします。

3年も経っているでの情報も古く……、と普通はなるところですが、そこは「裏側」。 コンテナ仮想の裏で起こっていることは、今もあまり大きな違いはなく、今でも通じる話も多いのです。 ぜひ、手を動かしてコマンドを叩きつつ、dockerをはじめとするコンテナ仮想の裏側で何が起きているのか、一緒に学びましょう!

そして、RHEL8で採用との噂のpodmanについては、4月のセミナーで話す予定です、セミナーもぜひよろしくお願いします!

  • はじめに
  • コンテナ仮想あれこれ
  • Linux namespaceの話
    • プロセスの名前空間
    • mnt namespace
      • 余談1: Mount Propagationについて
    • pid namespace
    • uts namespace
    • net namespace
      • 余談2: vethを使ってコンテナをネットワークに繋ぐ
    • user namespace
  • chroot / pivot_root
  • まとめ
  • 参考リンク

続きを読む

レトリバTech blog Open!

こんにちは。Chief Research Officerの西鳥羽@jnishiです。

この度はレトリバとして技術ブログを開設いたしました。
レトリバのリサーチャー及びエンジニアが分担して技術的な記事を載せていこうと思います。

今のところ以下のような分野を考えてます

しかし、テーマは割と自由にしますので上記に含まれないものも出てくるかもしれません。また、今後はレトリバセミナー後のフォローアップ記事もこのブログに記載していきます。合わせて隔週で更新していく予定です。ご期待下さい!

元々レトリバではセミナーを行っており、公開しています。 オフィス移転のドタバタでこの一月は配信が滞っていましたがこちらも再開いたします。今後は動画配信を月1回、ブログ記事を配信したレトリバセミナーのフォローアップ記事との技術記事の月二回の配信予定です。

 

 

 元々技術的な情報を世の中に出していこうという動きはPFI時代から続けているものであります。PFI時代のセミナーはエンジニアであろうとなかろうと(セールスの人だろうと経理の人だろうと!)全員話すというものでした。

非エンジニアの人にも1時間弱の時間を使って話すという経験を積んでほしい、またエンジニアも技術の話だけではなくビジネスに関わる以上は技術以外の話も知らなければならないという思いがありましたし、当時は非エンジニアの人の割合が小さかったのでたまに思いもよらないトピックが混ざっているけど全体として見れば大体が技術の話になっているというので良かったと思っています。


レトリバとして独立してもその思いは変わっておらず、社内全員でローテーションを組んで毎週セミナーを開催していました。先程のYoutubeのチャンネルを見てもらえればその経過はみてとれるかと思います。

ただ、レトリバにおいては人が増えていくにつれて非エンジニア・リサーチャーの割合が増えていき、全体としても技術の話の割合が小さく見えてしまうという事情がありました。そのため途中でエンジニア・リサーチャーと非エンジニア・リサーチャーの人と交代で行うようにし、外部配信するものとしては隔週で技術的な内容にするように変更しました。

 

今回オフィスの移転をきっかけにセミナー及び情報発信を新たに見直しました。今回見直すにあたって出てきた要望は2つあります。一つは文字に起こしてほしいというものです。セミナーはYoutubeで配信し、それをそのまま残しているので後からみることはできるのですが文字情報がないために探しにくいです。

また動画はリッチで分かりやすいですが一方で時間が動画の長さ分だけかかり、さっと内容を掴むのには不向きというのがあります。そのために会社として技術ブログを用意し、セミナーの後にフォローアップとして動画へのリンクと共に話した内容の概要及び補足情報を記事としてアップすることにします。これにより技術情報へのアクセスがしやすくなればと思っています。


もう一つは外部の人も参加できるようにするというものです。今までセミナーを配信していましたがTwitter経由で質問をいただくことは結構ありました。今後も引き続きTwitter含めたSNSでのやり取りはしていきますが、せっかくなら直接の質疑応答もできればと思っています。

今回の移転により数十人規模のセミナールームにも使える部屋ができましたので一部のセミナーを公開セミナーにして興味があればぜひいらしていただければと思います。

f:id:Christopher-727:20190306113500j:plain

50人程度のセミナーが開催できるセミナールーム


今後開催していくセミナーや勉強会は https://retrieva.connpass.com/ に載せていきます。

本日はブログの開設とその紹介となりますが、それに限らずセミナー、勉強会なども行っております。ぜひ気軽にいらしていただければと思います。