組織デザインの展開 ~官僚制からティール組織まで~

こんにちは。レトリバの飯田です。6/19(水)の社内セミナーで組織設計の話をしました。これはそのフォローアップ記事になります。

動画はこちらです。


組織デザインの展開~官僚制からティール組織まで~

スライドはこちらです。

www.slideshare.net

このテーマは、社会人になってから調べていたものの、体系立てられていなかったため、今回取り組みました。 組織論は、粒度が多岐にわたり、同じようなことが出自の違いにより、違う言葉で言われている場合があり、混乱しやすい分野と感じています。アジャイルスクラムティール組織・OKRなどなど、様々な手法や用語が飛び交っていますが、これらがどこに位置付けられて、それぞれどういった関係であるのかを把握するのは、そこそこに労力を必要とします。 今回は、これらをできる限り統一的な視点で整理を行いました。(個々のトピックの詳細については、それぞれの書籍をご参考ください。)

組織構造は、意図してそのようにできるものではない部分があり、ビジネスの状況や構成員のマインドにも依存します。 しかし、構造を意識できていれば、可能な範囲で最善の手を打てると考えています。 また、組織構造は働く上での多くの不幸を抑制する可能性があると考えております。 古くて、新しいテーマであり続けると思いますので、今後もウォッチしていきたいと思います。

2019年度人工知能学会全国大会に参加しました!

こんにちは。レトリバ研究開発部の飯田、木村です。


レトリバでは、研究動向・業界動向の把握のため、研究開発部の人間は積極的に国内学会に参加しており、今回は、人工知能分野で最大規模とも言える、人工知能学会の全国大会に参加しました。

 

概要

今回の人工知能学会は新潟で開催されました。
スポンサー・協賛合わせて、90社と、この分野の盛況感が伝わってきます。

 

分野も多岐にわたっており、深層学習一色というわけでもなく、人工知能に関連する様々な分野の取り組みを聞けるのもこの学会の醍醐味だと思います。

 

分野の動向として特に印象的だったのは、丸山宏先生の招待講演でした。

https://www.ai-gakkai.or.jp/jsai2019/invited-talk

 

 この講演は、深層学習の登場によって、何がどのように変わっているのかと言ったことを、計算モデルの視点から俯瞰的に述べられている、非常に刺激的な講演でした。
今後発展する方向性の一つが示されていたと感じました。

 

個別の面白かった発表

以下では個別に面白かった発表を紹介したいと思います。

続きを読む

bit vectorで編集距離の計算を高速化する

レトリバ製品開発部の@ysk24okです。

本記事ではbit vectorを用いて編集距離の計算を高速化するアルゴリズムを紹介します。論文はこちらです。

dl.acm.org

クエリの長さを m、検索対象のテキストの長さを$n$としたとき編集距離の計算量は$O(mn)$であることが知られていますが、bit vectorを活用することでword長を$w$とすると計算量を$O\bigl(\frac{m}{w}n\bigr)$($m\leq w$のときは$O(n)$)に低減できる手法になります。

1999年発表の古い論文ですが、この論文で提案されているアルゴリズムが弊社の製品に実装されていて初見では理解できなかったことに加え、日本語での論文解説が無いようだったので解説記事を書くことにしました。

  • 編集距離(Levenshtein Distance)とは
  • 近似文字列照合(approximate string matching)における編集距離
  • 編集距離の計算
  • 提案手法
    • cell structure
    • cell logic
    • cell logicの並列化
      • Eqの計算
      • 同じ列のcell間の依存の排除
  • 比較
    • 実行環境
    • 結果
  • まとめ
  • 参考文献
続きを読む

コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜

レトリバのCTO 武井です。

やあ (´・ω・`) うん、「また」コンテナの記事なんだ。済まない。

技術ブログの開設と新セミナー運用の開始にあたって、「前に話した内容をブログにしつつ、新しい差分をセミナーにすれば、一回の調べ物でどっちのネタもできて一石二鳥じゃないか」と思っていたのですが、

前のセミナーが情報詰め込みすぎでブログの文量がとんでもないことになって、
→ それが前提条件になってしまっているのでセミナー資料の文量も膨れ上がって、
→ 差分だけと思っていたUser名前空間も思った以上のボリュームで、
→ やっと一息かと思ったら、フォローアップ記事が残っていることを思い出すなど ←いまここ

一石二鳥作戦のはずが、どうしてこうなった……。
計画大事。


そんなわけで、今回は4/17にお話ししました「コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜」というセミナーのフォローアップ記事となります。 セミナーでは喋れなかったことなどを加筆しつつ、改めてコンテナ仮想の裏側で動いているUser名前空間について説明していこうと思います。

また、セミナーでは時間切れしてしまった、「手作りrootlessコンテナ」をシェルスクリプトで実装してみようと思います。

冒頭でもちらりと触れましたが、このセミナーは、前に話したセミナーを前提に話しております。 こちらはちょっと前にフォローアップ記事を挙げておりますので、先に↓の記事に目を通していただければと思います! (タイトルの付け方ミスったなぁ……)

tech.retrieva.jp

  • はじめに: rootlessコンテナとは?
  • user名前空間の歴史と背景
  • いざ実践: 準備
  • いざ実践: とりあえずrootになってみる
  • いざ実践: unshare -U
  • いざ実践: uid_map/gid_map
    • ちょっと寄り道: uid_map/gid_mapをもうすこし詳しく
  • いざ実践: 井の中のrootはなにができるのか
  • いざ実践: 井戸の中の王国建設
  • いざ実践: が、ダメッ
    • ユーザが作れない
    • ネットワークが繋がらない
    • ファイルシステムイメージの管理がダサい
  • podmanを見てみる
    • podmanのuid_map/gid_map
    • podmanのuid_map/gid_map: newuidmap/newguidmap
    • podmanのネットワーク
    • podmanのネットワーク: slirp4netns
    • podmanのイメージ管理
    • podmanのイメージ管理: fuse-overlayfs
  • できた!手作りrootlessコンテナ
  • 参考文献

続きを読む

Graph Neural Network

こんにちは、西鳥羽 Jiro Nishitoba (@jnishi) | Twitter です。5/15の全体セミナーでGraph Neural Networkの話をしました。これはそのフォローアップ記事になります。

動画はこちらです。

www.youtube.com

スライドはこちらになります。

www.slideshare.net

大学生の頃に「複雑ネットワーク」がブームになってきた時代で少し調べたことがあり、修士時代は離散数学アルゴリズム系の研究室にいてグラフに関する研究をしていたことがあるので元々グラフには興味を持っていました。その後紆余曲折を経て機械学習特に長い系列のDeep Learningにふれるようになってグラフからは離れていました。最近Graph Convolution Networkの話がちらほら見受けられるようになったので「Deep Learningとグラフがつながるときでは」と少し気合を入れて調べて見たのが今回のセミナーの経緯となります。

Graph Neural Networkについては手法がいっぱい出てきたのはもちろんですが、なぜか去年辺りからサーベイ論文もいっぱい出てきました。 今回読んでいたのは以下の2つです。

[1901.00596] A Comprehensive Survey on Graph Neural Networks

[1812.08434] Graph Neural Networks: A Review of Methods and Applications

はじめのサーベイ論文のほうが取り上げられている手法が多いですのでとにかくいろんな手法が知りたい人にはおすすめです。ただ、2つ目の方は数多くある手法の一般化についても触れられいて、より俯瞰してみることができます。 そして更に何故かGraph Kernelに関してもサーベイ論文がこの1,2ヶ月で複数出てきました。今回のGraph Kernel部分については1つ目の方を参考にしています。後者の方はセミナー準備中にでてきて時間が取れず読めませんでしたが、よりしっかり説明していそうな雰囲気です。自分でセミナーしておいて言うのもなんですがGraphでの機械学習はブームなのでしょうか。

[1903.11835] A Survey on Graph Kernels

[1904.12218] Graph Kernels: A Survey

今回調べてて一番面白かったのはGraph Neural Networkの一般化とその性能解析が進んでいたことです。今回のセミナーで主に取り上げたのは以下の2つの論文です。

How Powerful are Graph Neural Networks? | OpenReview

[1810.02244] Weisfeiler and Leman Go Neural: Higher-order Graph Neural Networks

元々理論屋だったのもあってこういう「意外と強くないのではないか」というのをきっちり示しているというのは面白いと思っています。もちろん、だからGraph Neural Networkが全部ダメということはなくてスライドの最後に取り上げた

  • WL subtree kernelとGNN構築の計算量の比較
  • Non local Neural Networkの性能 -- Graph Attention Network -- Transformer内のself-attention
  • グラフの構造+αを組み合わせるマルチモーダルなことで性能が上がるか

のあたりでもしGraph Neural Networkの性能が良ければ実用として強いのではないかと思っています。まだまだホットな分野だと思います。

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/ に載せていきます。

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