そもそもLinuxって、なんなの?
※本日の企画は株式会社アカツキの提供でお送りします。
こんにちは。ヨッピーです。
突然ですが、皆さんはLinux(リナックス)をご存知でしょうか。
エンジニアさんがたくさん見ているこのCodeIQにおいては、
「は?Linuxくらい知ってるわボケ!」
「Linux知らない人間がインターネットすんな!」
「顔がキモい」
「寝癖を直せ」
みたいな手斧がばんばん飛んでくる気がします。
でも、ちょっと待ってください。
原宿の女子高生はLinuxのことを知りませんから!
まあここで「原宿の女子高生」を例に出した僕も
「なんで原宿の女子高生を例に出したんだろう?」と思わなくもないのですが、
とにかく僕が言いたいのは、
「Linuxを知らない人もたくさんいるからな!」
ってことです。
かくいう僕も、インターネット歴自体は長いので
ちょくちょく「Linux」の名前を聞くこともありますし、
なんとなく「知識があって」「イケてる人」が使ってるもの、
みたいなイメージがあります。
友人:俺のパソコン、Linuxなんだけどさぁ~
僕:パ、パソコンが、リナックス!? ヒャァァァアアアア~~~!
こ、この人は神様じゃー!パソコンの神様が来たぞーーー!
ワーッショイ!(パソコンごと胴上げしながら)
ワーッショイ!(パソコンが落下して全損)
みたいな。えーと、何の話でしたっけ?
とにかく、そんなLinuxについてボヤっとしか理解できていないので、
今日はいろいろと教えていただこうと思います!
そんなわけで集まっていただいたのがこちら。
アカツキのエンジニアさんが3名!
開発リーダーの湯前慶大(VP of Engineering)さん

早稲田大学大学院先進理工学研究科物理学及び応用物理学専攻修了。電機メーカーにて、社会インフラ向けのLinuxカーネルの研究開発とアップストリーム活動に従事。2014年10月、クライアントエンジニアとしてアカツキに入社。現在は新規アプリのプロジェクトマネージャーと全社的なエンジニア組織作りに従事。昔のゲーム音楽を聞きながらウィスキーを飲むのが趣味。
サーバーエンジニアの長井昭裕さん

電気通信大学大学院情報ネットワーク学専攻修了。電機メーカーにてLinuxの開発者向けツールの研究開発とアップストリーム活動に従事しつつボカロP活動に勤しむ。2016年7月にアカツキにサーバエンジニアとして入社、モバイルゲーム開発に従事。現在はカレーを食べ歩く日々を送っている。
同じくサーバーエンジニアの関山友輝さん

京都大学大学院エネルギー科学研究科エネルギー社会・環境科学専攻修了。電機メーカーにて、LinuxやOpenStackのアップストリーム開発に従事する傍ら、趣味でも貧乏ゆすりカウンター「YUREX」のドライバーなどをLinuxにコントリビュート。2017年3月にアカツキにサーバエンジニアとして入社、モバイルゲーム開発に従事。
「では、早速ですが……」
「Linuxって、なんですか?」
「Linuxは、オープンソースのOSです」
「その、オープンソースとかOSとかって難しい言葉を使わないでください」
「まず、OSはわかりますよね?WindowsとかiOSとか。基本ソフトっていうんですけど」
「それくらいはわかりますよ!失礼な!」
「自分で言ったくせになんなんですかもう……。で、オープンソースっていうのは、その基本ソフトのソースコード、つまりは設計図みたいなものがオープンに公開されていて、誰でもそれを改善して手を加えることができるんです。
WindowsはMicrosoftが、iOSはAppleが作っているので、外部の人間が全貌を知ったり改造することはできないんですが、Linuxは誰にでも中身がわかるようになって、手を加えることもできます」
「なるほど。それで?」
「それで、って言われても……。
とりあえず、Linuxの画面を見ていただきましょうか」
「はい!これがLinuxの画面です!」
「うーむ、前にも一度、チラッと見たことあるんですけどやっぱりショボイですよね……。すごい古いWindowsの画面みたい。なぜこれがそんなにもてはやされてるのか……」
「これでもインターネットができますよ。ChromeやFireFoxなんかはLinux版がありますし。でも、そもそもデスクトップとしてのLinuxの使い方は本とかもあんまり出てませんし、事務作業に、とか普段使いにも使えることは使えるんですが、WindowsやmacOSの代わりにするというのは少数派なんですよね」
「じゃあ、Linuxは何に使うんです?」
「例えば、スマホに入ってるAndroidなんかはLinuxですね」
「へ?AndroidはAndroidでしょ?湯前さん、今めちゃくちゃなこと言ってますよ」
「いや、AndoroidはLinuxカーネルなんです」
「カーネル……?ケンタッキーの人……?」
「完全に混乱してきた。カーネルってなんですか?」
「『カーネル』っていうのは『核』っていう意味です」
「じゃあ、Linuxの上にAndroidがあるってこと?
でもLinuxって言語の名前ではないですよね?
Linuxを利用して作ったスマホ向けのOSをAndroidって呼んでる、みたいな?」
「だいたいそんな感じです。で、スマホ向けのOSで強いのはiOSとAndroidの2種類になるんですが、そのAndroidはLinux上で動いています。そして、AndroidもLinuxと同じくオープンソースなんですよ。
だからよく、iOSに比べてAndroidの方が自由度が高いっていうじゃないですか」
「あー、あれこれ改造したりレイアウト変えたり」
「そうです。ソースコードが公開されているので、各メーカーが自由に設計できたりするんですよね。その『自由にできる』とか『全て公開されている』っていうのがすごく便利なんですよ」
「なんとなくわかってきた。『みんなでいじくれる』っていうのがキモなんだ。実際にLinuxが使われるのってAndroid以外には何があるんですか?」
「いやもうほんと、いろんなところに。例えば、LinuxのカンファレンスのスポンサーがTOYOTAだったんですよ。つまり、車なんかにもLinuxが積まれつつあるんですよね。他にも公共交通機関のシステムがLinuxだとか、東芝がLinux搭載の冷蔵庫を出したりもしましたね。
あとはMicrosoftがLinuxのカンファレンスのスポンサーになったこともあって、その時はすごく界隈がザワザワしたんですよ」
「あー、Windowsのライバルなのに!って?」
「そうです。今ではライバル企業のはずのMicrosoftもLinuxの開発をしてるんですよね。あとはやっぱりサーバーのOSとしての利用が最もポピュラーだと思います。サーバーはLinux一強って言ってもいいくらい」
「サーバー用のソフトって、他の会社も作ってますよね? なんでLinuxがそんなに強いんですか?」
「さっきも言った、『全部見られる』『手を加えられる』っていうのが強いんですよ。サーバーに何か問題があった時に、オープンソースのソフトじゃないと『何がどうなって問題が発生しているのか』がわからないんですよ。中身を全部見られないので。
そうすると改善もできないじゃないですか。だから自分たちで全部把握できて、手も加えられるLinuxが向いてるっていう。Linux上で動くサーバ向けのソフトウェアも同じようにオープンソースで次々と開発されているので、他の選択肢は考えられないと言っても過言ではないでしょう。
さらに、これからIoTデバイスが増えていくにつれて、ネットワーク周りの機能が充実しているLinuxは今後もどんどん強くなっていくと思います」
「なるほど……!わかってきたような気がする……!たぶん気のせいだけど……!」
Linuxはどうやって作られているか
「どういう経緯でLinuxができたんですかね?」
「元々は1991年にリーナス・トーバルズっていうフィンランドの人が、自分用に組んだOSをインターネットで公開したんですね。で、それを発展させていく過程で『Linuxカーネル・メーリングリスト』というのを作って、有志が集まってLinuxをどんどん改良していくんですよ。要するに、世界中の人間が1つのOSを作って、改良するために団結しはじめるんです」
「世界中の人間がひとつに、かぁ。宇宙人が攻めてきた時に、自衛隊と米軍と中国軍が組んでやっつけに行くやつみたいですね」
「たぶんその例えは正しくないんですが、そんなふうにみんなで作っているので、新しいものが世に出ると、それに合わせてまたLinuxに機能を追加して、みたいなことをどんどん続けてるんです。現在進行形ですね」
あ、そうだ。これを見てください。
「なんですかこれ?」
「貧乏ゆすりカウンターです。万歩計の貧乏ゆすりバージョンみたいな。足につけることでどれくらい貧乏ゆすりしているかわかる、っていう」
「これ、パソコンにつなぐとLinuxがちゃんと認識するんですよ。それでデータ取ってログを残したりできるっていう。この機能を実装したのって僕なんですよね」
「関山さん、」
「貧乏ゆすりのデータ、別に業務には必要ないのでは?」
「ま、まあ確かにそうかもしれませんが、この貧乏ゆすりカウンターのドライバを僕が作ったら、それを『Linuxに実装してくれ!』って言うんですよ」
「いわゆるプルリクエストっていうやつ?」
「そうです。正確には、Linuxの場合、メーリングリストなので、パッチを直接メールに貼り付けてやりとりするんです。それが承認されるとLinuxに実装されるっていう」
「それを世界中の人たちがやってるんですね。『これ入れてくれ!』って」
「そうです。Linuxカーネルのメーリングリストに登録すると500~1000件くらい毎日メールが届きますよ」
「とんでもないスパムじゃねぇか」
「でも、それが来るから、ログを遡れるんですよ。『この機能はどうなってるのかな?』って疑問に思った時にメールを検索すると、なぜその機能が実装されてどういう議論があったのか、みたいなことはすぐわかるので」
「ちなみに全部英語でやりとりするんですよね?」
「そうですよ。技術資料とか見てると嫌が応にも英語しか出てこないので、読んでいる内にだんだん覚えましたね。カンファレンスで知り合った人とご飯食べに行って、つたない英語でなんとかコミュニケーション取ったり。
アメリカに住んでる人でもめちゃくちゃな文法で話している人もたくさんいるので、日本人らしいというか、上手く話さないと恥ずかしい、みたいな気持ちは捨てて怖がらずにコミュニケーションを取るのが大事です」
「そういう時って外国人とののしり合いにならないんですか?エンジニアの人たちって気難しい人多いイメージがあるからすぐ殴り合いに発展しそう」
「それがね、意外とそうでもないんですよ。作った張本人のリーナス・トーバルズは『ファック!』ってすぐに言うし、口が悪いし、ミスがあるとすぐ他の人から指摘が飛んで来ますけど、技術的な話が大部分なので意外と秩序が保たれています。Linuxのカンファレンスとか行っても、みんなわりと仲が良いです」
「でも、そんな風に外国人と英語でやりとりしたり、技術がどうのって話をするんだったらめちゃくちゃ技術が必要なのでは……」
「そうですね。アセンブラなどハードウェアの知識とか、CPUの仕様書が読める、くらいは必要かもしれない……。ヨッピーさん、『インテル・アーキテクチャ・ソフトウェア・デベロッパーズマニュアル』でググってみていただけませんか」
「あ、インテルのなんか説明書みたいなのが出てきた」
「そう。それを暗記する必要はないんですけど、書いている意味がなんとなくわかる、くらいじゃないと厳しいかもしれません」
「じゃあちょっと、適当に拾ってみますね」
「4つのパックド単精度浮動小数点値のSIMD演算を実行できるため、高い処理能力を必要とするアルゴリズムによって単純なネイティブ・データ要素の大きな配列の反復操作を実行する」
「XMMレジスタ内でSIMD単精度浮動小数点演算を実行でき、MMXテクノロジ・レジスタ内でSIMD整数演算を実行できるため、浮動小数点データと整数データの大きな配列を操作するアプリケーションを実行するための柔軟性とスループットが大きく向上する」
「日本語マニュアルはないんですか?」
「それが日本語マニュアルです」
「完全に意味不明です」
「でしょう。でも、Linuxの開発者は結構これを読み込んでいたりするんですよね」
「これを読むのとLinuxを使いこなすのって、なんの関係があるんですか?」
「例えばLinuxを使ってサーバーを組んだ時に、信頼性とか性能とかにこだわりはじめると避けて通れないんですよね……。
僕は『CPUの気持ちを理解してあげる』って言うんですけど、『この処理をしている時のCPUはきっとこんな感じだから、こういうふうにコードを書いてあげたら早く仕事できるだろうな』とか『こういう問題が起こりそうだからあらかじめ対処しておくか』みたいな」
「なるほど……。彼女の気持ちを先回りして尽くしまくって、いいように使われてる男の人みたいだな……」
「その発言はけっこう、サーバーまわりのエンジニアを敵にまわす気がします」
なんでそんなにLinuxに詳しいの?
「そもそも、皆さんはなんでそんなにLinuxに詳しいんですか?」
「仕事で使うからっていうのももちろんありますけど、もともとは某大手メーカーで、Linuxの研究部隊にいたんですよ。そこで基礎は覚えましたね」
「へぇぇ、なんで転職したんですか?」
「そこで開発しているものって、ものすごくサイクルが長いんですよ。今日作ってるものが実際に世に出るのは恐らく10年後だろうな、とか」
「あーなるほど。インフラの案件なんかだとそうでしょうね」
「そうなんですよ。時代の流れも早くなってるし、もっと早いサイクルで仕事ができないかなぁと思ってて、そんな時にこのアカツキに転職したんです」
「実際転職してみてどうです?」
「サイクルは断然早いですね。それに、ゲームだと新しい機能をリリースするとすぐに反応がTwitterなんかでダイレクトに返ってくるから嬉しいですね。そういう楽しさは全然違います。
アクセスが集中するとエンジニアは大変ですけど、そういう時こそLinuxの知識を活かしてトラブルシューティングやチューニングしたりして、システムを安定稼働できるようにしています」
「まあそもそも、今回の企画ってアカツキさんが『エンジニア欲しい!』って言うからスタートしたっていう感じなんですけど、今日お話する限りだと、『エンジニア欲しいって言ってるくせに、要求ハードルがめちゃくちゃ高そう』みたいな印象を受けるんですけど……!どんな人が欲しいんですか?」
「とにかく人手は足りてないですね。クライアントエンジニアもサーバーサイドエンジニアも足りてないです。聞く内容はまあ、エンジニアなのでやっぱり『今まで書いたコードを見せて/話してください』っていうところからスタートです。
あとは『どう考えてどういう仕事をしてきたか』とか『これからどうしていきたいか』とか『どうやって最新情報をキャッチアップしてますか』とか『今までに苦労したこと』とか『改善したこと』とか聞く内容はけっこう普通だと思います」
「この言語を使える人が欲しい!とかはないんですか?」
「言語がどう、というよりもどういう姿勢で業務に取り組んでる人かっていうのが大事だと思ってます。『その言語使ったことないからこれから勉強します』くらいでも全然良いと思うんですね。それよりもエンジニアとしての姿勢の方が圧倒的に大事だと思います」
「そうですね。場当たり的に解決するのではなく、ちゃんと根本まで追いかけて解決できるか、とか。そもそも技術が好き、とか」
「ちなみにアカツキさんはどんな環境なんですか」
「環境はものすごく良いですよ。必要だと思うものを自分たちで決められる、とか、自分がやりたいと思うことを追求する文化があるとか、場当たり的な対応ではなく、技術的な負債は根本から解決しよう、とか。
さっきも言ったようにLinuxなんかのオープンソースコミュニティへの参加もどんどんやれっていう姿勢です」
「なるほど。じゃああとは大事なパソコン周りの環境とお給料は……?」
「MacBook Proを全員に支給してます。他にディスプレイ等必要なものは言えばだいたいOKです」
「なるほど。で、大事なお給料は……?」
「けっこう、良いです」
「そこはやっぱり教えてくれないのか……!」
これがアカツキのオフィスだ
ちなみにアカツキさんのオフィスはフリーアドレスというわけではないそうなのですが、このように朝礼用にでかい広場があってそこで仕事をしても良かったり、
やたらとオシャレな図書室みたいなのがあったり、
みんなでゲームやるようにデカいテレビがあったり、
ボリダリング用のウォールがあったりします!
なにこれ!すげぇ!
こういった施設を利用してヨガ部やボルダリング部などといった部活も盛んだったりするんだとか。
「我こそはLinuxに精通するサーバーのスペシャリストなりぃ~!」なんて人は、こちらの採用情報をチェックしてみてはいかがでしょうか!
【PR】アカツキがエンジニアを募集中!
アカツキではサーバーエンジニアだけでなく、ソフトウェアエンジニアやデザイナー職なども募集中です。興味がある方はぜひチェックしてみてください!


















