フクチ@プログラミングと釣り好き大学生のブログ

プログラミングと釣りと、ときどき日常生活

エストニアに来て意外だったこと

こんばんは!
今日はエストニア、厳密に言うならタリン(日本でいう東京)に来てちょっと驚いたことを書こうと思います。
*前提として個人的な感覚が大きいので僕の情報だけでなく、もし興味もっていただいたなら他の人の情報も見て欲しいです。

1.ゴミ箱の数とポイ捨て
タリン市内だと、どこへいってもゴミ箱に遭遇します。
各バス亭にはあるし、言うならば10mくらいの間隔でゴミ箱が置かれている場所もありました。

面白いのが街中にあるこういうゴミ箱。
f:id:Yuki-F:20180211195906j:plain:w350
なぜか浮いていて、しかも広告が必ず貼られている。っていうか広告を見せるために浮かせているのかな。

ここまでゴミ箱があるならポイ捨てないよなって思うのですが
f:id:Yuki-F:20180211201607j:plain:w300

f:id:Yuki-F:20180211201612j:plain:w250
多い方だと思います。ふつーにゴミ箱の近くにも捨ててあったりします。
友人がlitteratiというオシャレにゴミ拾いをする活動をしているので是非ともエストニアにきてほしいです。

ゴミ箱が多いこととポイ捨てする人が減るのはあまり関係がないことを示してくれましたね。

2.壁の落書き
f:id:Yuki-F:20180211201727j:plain
これはあくまで僕視点からなのですが,
やたら建物への落書きが多いです。。。(現地の人からしたらもしかしたらアートかもしれないが)
タリンの旧市街地は世界遺産になっているというお話は以前にもしたかと思います。



その旧市街地の中でも建物の落書きが多い。ほんと多い。

けど、これとは別でちゃんとしたビルディングアートもあるみたいですね。
www.visitestonia.com


3.意外と英語通じない(今のところ)
ヨーロッパの中でもエストニア英語を話せる人の割合は高いというデータや現地に住んでいる人の記事でも不自由しないと書いていてエストニア国民はみんな英語話せるのかなと思っていたのですが、

これは最初の記事でもコンビニの店員さんが英語通じなかったと書いた通り、タリンの中だとけっこー市街地の中でも観光地 & 若い人 じゃないと英語喋れなかったりしました。
っていうのも教育の歴史的に1991年の再独立する際に英語教育に力を入れたのでその時の世代以降、〜30代じゃないと通じないんだなと思いました。

ただ、現地の大学のハッカソン(3日など短期間でサービスを作るイベント)に参加した時は全員、英語を話していてしかもネイティブなみに上手い人が多くて驚かされました。
これから世代交代するにつれ、どんどん英語を話せる人が増えていくと思います。


4.wifiの速度
タリンの中でも栄えていて、観光地でもある旧市街地の中やその周りのカフェに手当たり次第行き、計測したのですがこんな感じでした。
*速度制限がかかった状態を 1 ~ 10Mbpsくらいだと思ってください。
f:id:Yuki-F:20180211202241j:plain:w350
一番早かったのが現地の工科大学のwifi( さすが! )あと友人宅で公共のTalin_wifiやカフェのwifiは一桁前半で遅いですね。一部は遅すぎて計測すらできないところもありました。

しかしながら、エストニアは2020年までに公共wifiの速度を爆速(3桁台)にするらしいので今後の動向が楽しみですね。

あ、エストニアに滞在する際はsimカードがかなり安くコンビニで買えるのでそうした方が便利かもしれません。
5GBのsim 5€(750円くらい)/30daysで買えますね。安すぎ。
prepaid-data-sim-card.wikia.com


本当は今回、エストニアの歴史ついて軽く触れようと思ったのですが
国の歴史は軽く調べられないもので、いろんなもの絡みあっていてもう少し勉強して来週あたりに出せたらなと思います。

では、また来週〜〜

追記:

他の欧州を周った人から聞くと、エストニアは綺麗な方だそうです。
https://zerowasteeurope.eu/2014/04/and-the-best-waste-performing-country-in-europe-is-estonia/

情報収集不足ですいません。以後気をつけます

意思決定と海外について

f:id:Yuki-F:20180131082042j:plain:w500

おはようございます!
先週、エストニア1評判の良いレストランに行ってご満悦な福地です。

f:id:Yuki-F:20180131082049j:plain:w350

trip adviserの評価が⭐️5/5000件レビューでびっくりにしたのですが
ぶっ飛んだ価格ではないのに雰囲気といい、料理の質といい、店員さんの接客態度といい星5にふさわしいところでした。
エストニアにきたら一度は行ってみてほしいです!!
www.tripadvisor.jp

さて今日はエストニアに来て2回目の記事ですが
どちらかと言うとエストニアというより海外に行くことと意思決定について自分の今の知見をメモも兼ねて書きます。

人の成長について

早速、重たい話から始まりますが
人を人間的に成長させる要素として色々あると思います。
その中でも僕が尊敬したり憧れたりする先輩や社会人に共通してあるのが
多くの重い意思決定をこなしてきたことがあります。
正確にいうなら負荷が重い方の決定ですね。

まず意思決定とはそもそも何かというと、定義は人によりますが僕が思うものとして、
複数の選択肢からどれかを自分で判断して選び行動することだと思っています。

例としては日常の例だと、
今日の夕飯は和食か洋食にするかと聞かれた時にどちらでも良いではなく洋食がいいと選んだり、通学中にこの道の方が早いからここから行こう など

より重いことでいうと
受験や就職などいわゆる人生の指針が大きく変わる決定などがあると思います。

僕が考える意思決定から得られるモノとして
同じミスをしづらい:相手に決断を委ねたときよりも、自分で何かを判断したときの方が記憶に定着しやすくかつ判断軸ができるので同じミスをしづらい
当事者意識が芽生える :自分で判断した分、人のせいにはできないのでなんとかやり遂げるという気持ちになれる
集中度 :これをやって、これはやらないと決めることによって取捨選択ができ、自分が大事にしてるモノがわかり集中できる

などなど、多くあると思います。


意思決定には二つある

受験の例で話すならば
志望大学、今の実力でいけるところを選ぶのか、今は届かないけど勉強量を今以上にあげたら届きそうなところを選ぶのかで
結果だったり成長度は違います。

そう、重い方へ意思決定を下すほど得られるモノが大きくなります。

意思決定が重くなる時として、その決定からくる結果のリスクの大きさと判断要素の不確実性があるのかなと思っていて
特に僕の場合は自分の選択が複数の人間を巻き込んだり、人間関係に関わるものだとすごく考え、悩みながら動いてきました。(もちろん、逃げた事もありますが...)

インターンや諸々の活動で
メンバーを選ぶよりもリーダーになるのを選ぶと成長するというのは意思決定の多さとそしてその重さがあるのかなと感じます。


海外へいくことと意思決定

海外だとより多くの意思決定をこなさざる負えない状況になるのかなと、現地に住んでいる日本人に聞いたり、実際に一人で来てみて感じます。

というのも、日常生活ですら意思決定の連続だからです。
海外へ行くと当たり前ですが 人種、街並み、文化、気候、経済が違っていて

ここに来て、ただ買い物をするにも、店員さんに何かを注文する時にも、バスに乗るにも、そして人に話しかけるにも

“意思決定”というモノが日本にいるときよりもとても多く押し寄せてきます。

特に一番の障壁だと思っている”言語”が意思決定にすごく関わってきました。

正直、今の僕は英語はお世辞にも上手いとは言えず、流暢に話せたりできません。
コンビニでバスに乗るためのカード(日本でいうSUICAみたいなもの)を買おうとした際にこの英語レベルでちゃんと通じるのか、話かけたら相手に迷惑がかかるのでは、拒否されたらどうしようなど色々な考えがよぎる中で怖いし、行きたくないという気持ちもあり、何も買わないまま帰ろうという軽い意思決定もできたのですが

せっかくここまで来たのにそんな決定をしたらもったないなと思いなんとか勇気を出して店員さんに尋ねると、まさかの店員さんがロシア語しか話せないという事態。

スマホが繋がらないので翻訳もできない、なんとか身振りぶりで伝えようとするも伝わらない。

後ろのお客さんもまっていたので焦る僕。

ふと、財布の中を見ると間違ってもってきた Suicaがある

それを見せてbusを連呼してなんとか購入。(買おうとしたカードはSuicaに酷似していた)

そこから
・欲しいものの画像を見せると伝わりやすい
・単語、単語で言えば少しは伝わるといったこと
・上の世代だと英語が話せないのか といったことを学びました。

これらは店員さんに尋ねるといった意思決定をしないとわからないことでした。

僕は海外に出てから意思決定について分かり始めたのですが
日常生活の中で負荷のある方への意思決定を連続的にする人はすごいなと思いました。

今回は発信というかはメモのような形で書きました笑

次はエストニアの歴史と人柄について簡単に書こうかなと思います。
ではまた^^

未来国家エストニアへ

f:id:Yuki-F:20180130052407j:plain

エストニア タリンの旧市街地から見える景色です。
ネットで見たときにも綺麗だったのですが、実際に見たときの感動はすごかったです。

いきなりなんだという始まりでしたが、
僕は先週からエストニアという国に滞在しています。


そもそもエストニアってどこ?

簡単に説明すると
ヨーロッパの北欧にある小さな国です。

f:id:Yuki-F:20180130052724p:plain:w400

多分、バルト三国の一国と言えば地理を勉強した人ならなんとなく分かると思います笑

人口は岩手県とほぼ同じで 130万人、面積は北海道の半分くらいです。
さらに1991年にソ連から再独立(エストニアの歴史については後日また)をしていて、いわゆる 若い小国にあたると思います。


エストニアに来た理由

その小国が近年、ある分野で注目を浴びています。それが ITです
あの有名なビデオチャットツールSkypeエストニア発祥のサービスです。

I Tというと人それぞれ定義があると思うのですが
今の僕の定義の中で IT というものは何か既存の価値あるものにITを掛け合わせることによって全く新しい価値ができるという媒体の認識をしています。
例えば、youtubeがテレビとIT(正確に言うならインターネット)を掛け合わせたおかげで、誰もが動画をアップロードしデバイスとネット環境さえあればどこでも閲覧でき、さらには Youtuberという新しい職業 価値を生みだしました。

そして
既存の掛け合わせるモノが大きければ大きいほど 新しくできる価値が大きくなると思っています。

エストニア はそれを「国」にしたのです。

エストニアがITを国に生かそうとした理由として
ドイツ、ロシアなど歴史的にも色々な国に領土を支配されていた歴史があります。。
その支配の歴史から物理的に国土を持つリスクを考えた結果、領土をインターネットという仮想空間に置きました。

部分的ではあるもの国の定義を変えようとしています。

その象徴として電子化政府を目指していて、国民のデータをネット上で管理しています。
仮に物理的な国土を失ったとしてもネット上に国のデータがあるおかげでエストニアという国は残ることができます。
その国の領土内に住むことではなくて、国民がエストニアという国に所属しているという概念を重要視した結果になっています。

具体的に言うと eID cardと呼ばれるモノがあり、どこの国にいてもこのカードさえあれば自分の戸籍データや選挙にも参加できます。

実際のID cardです↓
f:id:Yuki-F:20180130072622j:plain:w280

日本を批判しているわけではないですが、誤解を恐れずに言うと日本を始めとして自国の基盤をより便利にするためにITを生かそうとした諸国と違い
エストニアという国は"IT"というトレンドツールを武器に本気で国の存続をかけてそれに取り組んでいる国だと思っています。

僕はその必死にまわりの国を追い越そうとする、上に上にという精神力とそれを実現するだけの技術力を学びに行こうと思い来ています。

実際にここで一週間過ごしてみて、観光地を巡ったり、日常生活を体験してみたり、現地のイベントに参加した中で印象と違ったりしたことや意外と知らなかったことなどなど、発見があったのでこれから少しずつ共有していこうと思います。

インターンいきたいとtwitterで呟いたら本当に叶った話

こんばんは!
先週、福岡から沖縄に帰ってきた福地です。
ようやく、12月に入り、今年もいよいよ1ヶ月を切りました。

11月の過ごし方としては
英語の勉強をしつつ、僕が好きなサービスを運営している会社にインターン生としてお世話になっていました。
今日はそのインターンの振り返りをしようと思います。

ブログタイトルにあるように僕は「釣り」が好き(ブログで書けていませんが笑)で10年くらいしているのですが,
釣りをする際に重宝しているアプリに「ツリバカメラ」というアプリがあります。
簡単にツリバカメラの説明をすると


全国の釣果・釣り場・釣具情報が集まる釣りコミュニティ「ツリバカメラ」。
アプリを利用して釣り人同士のコミュニケーション、釣り場の検索、釣果・タックルの管理、気候や潮汐情報の閲覧などが行えます。--引用:ツリバカメラHP


一言でいうなら釣り人専用のSNSですね!

僕がこのアプリを好きなところとして
・釣果管理(釣れた魚種・タックル・日時など)できる
・釣りに特化したSNSなので釣り人と繋がりやすい  などなど

タイムラインに釣果だけが流れるのは個人的にはすごく幸せだし、沖縄だけでなく他の県の人の釣果を見れて、他県では今こんな魚が釣れているんだと知るのはすごく楽しいです。
他にも、沖縄の魚が独特なせいか他県の釣り人からよくコメントがきたりした時は嬉しいですね。

そんなこんなで使い続けていた僕ですが、

ある時にumeebeに開発インターンいきたいなと思い、こんなツイートをしたところ

f:id:Yuki-F:20171203193809j:plain:w300

f:id:Yuki-F:20171203193828j:plain:w300

まさかのumeebe CEOのカズワタベさんから返信が笑

f:id:Yuki-F:20171203193856j:plain:w350


そのままumeebeのCTOのniaさんに引き継いでもらいDMでやり取りをした結果、

なんと、、、インターン参加することになりました。

いやー呟いてみるもんですね笑


1ヶ月間でやったこと

インターンのゴールとして「TDDを用いつつサービスのAPI機能の一部実装」でした。
TDDについてはまた別記事で書こうと思うのでここは飛ばします。

要は実務の一部をインターンとして行いました。
ただ正直、TDDとAPIって何それ美味しいの?くらいから始まったので

実務に入るまでのプロセスとして
①TDDについての理解のために実際にその概念を使って簡単なwebappを作る
②実際のサービスのAPIを見ながらAPIについて勉強。

この二つをniaさんに教えていただきながら学んでいきました。

①の課題では、railsを用いて簡単な会員制の日記管理サービスを作成しました。今までsinatraを触ることが9割くらいだったのでrailsも学びながらという中でしたが、rails、いろんなgem があって試すのが面白かったり、制約や独特のプログラムがあったりやっぱ面白いです。

②についてもniaさんがわからないところを1から教えていただき、なんとか実務に入りました。

正直、実務中もわからないことがどんどん出てきて、困惑することもありましたがなんとかアドバイスをいただきながら実装をしました。

 

インターンを通しての感想

全体を通して見て、初めてのエンジニアとしてインターン、しかもリモートでやるという中でしたが、指導者に恵まれたのと同じインターン生との協力しながらできたので終始楽しみつつ学んでいけました。

開発については「初めての実際に使われているコード」が見れていじれたのがすごく嬉しかったです。
実際に書いたのは管理用のAPIでしたがサービスのコードも見れたので「ここの動きはこのコードでかかれているのか」とかこういう構成でつくられているんだと知った時の嬉しさはすごくありました。こんな感じでサービスを構成している裏側を見れるのは技術系の特権かもしれません。
開発以外の発見もあり、チームで何かを作るのは楽しいと改めて感じました。最初の簡単なwebappを共同開発する中で、他のメンバーからここはこうしてみたらとかwebappの構成と話ししたり、コードの改善をしたり自分一人では持てない視点を共有しながらみんなで何か一つをつくりあげる感覚は一人では味わえない楽しさがあり、他にも仕様の認識違いとか機能の結合とかが困難になる場面もありましたが一人で開発したらぶつからない壁でした。

 


最後に
インターンをするきっかけをくれたカズさん、1ヶ月間、一緒に開発をしたインターン生のゆうちゃんとタカトシくん
そして、開発のことだけではなくエンジニアの生き方だったり、開発の学び方を指導してくれたCTOのniaさんありがとうございました!!

エストニアから帰ってきたらまた何らかの形で関われたらと思います! 

 

isucon7で惨敗した。

f:id:Yuki-F:20171023222747j:plain
先日開催されたisucon7にチーム「仕事ください」で参加してきました。
isucon.net

今年の四月からプログラミングの勉強初めたのですが
この大会で勝ち抜くことが今年のプログラマーとしての目標でした。

四月にもこんなことを書いてた、懐かしい。(ここに isuconについても書かれてます)
yuki-f-oki.hatenablog.com



そして、四月から今まで模擬isuconを数度やったりチームのレギュラー選抜をなんとか勝ち抜いたり
色々とありましたが、いよいよ本番を迎えました!


isucon7惨敗

結果から言うと

惨敗

初期スコアが6000で

最終的なスコアが4500

初期スコアよりも低いという、絶望的な結果でisuconを去りました。
ジャイアントキリング起こせなかった。


敗因分析

前提として、unixの基礎知識だったり、複数台サーバの構成やwebの知識などが大きな原因ではありました。
しかし、それだけではなくて

①今までのisuconとは違う、予想外のことが起きた時の対処
・rackサーバ:unicorn→pumaに変更されていた。しかも設定ファイルがない
rubyなどの各言語のファイルがhome/localの中にあり、bashrubyのパスを探せていなかった。
・いつも使っている分析ツールでネックが探せなかった。

ボトルネックも今までの傾向とは若干違う点
・/messageのN +1問題解決したけど処理速度大して変わらず。。。
・一番最初で気づいていて大きいボトルネックだった画像の静的配信ができなかった。
ステートメントを304にしたり、webの通信関連の知識が求められていた。

こういったことに対して、チームで話し合いが足りず
8hあったので2hごとに作業中断して自分が今何をしているのかだったり、各々が思うボトルネックについて話す時間を取れるようにしなかったのが一番の敗因かなと思っています。

インフラ担当の樹理さんには半端ない負担をかけてしまった上に、僕が画像の静的配信について理解が足りなかったせいでapp側担当としての責任も果たせなかったので本当に申し訳ない。

isucon挑んでの感想
isuconのおかげで、知識と精神的な面での学びがありました。
知識面では、rubyなどのプログラミング言語だけではなく、最初からwebを構成するモノ全体の知識とそれを学ぼうっていうモチベーションを得られました。
あとは、それぞれの分野をより深く学んでいきたい。今回でいうならweb支える技術を改めて読んでwebに関する知識増やしたい。

精神的な面では、こういう完全に勝ち負けが出る競技に対して、ここ数年疎遠だったので
負けた時の絶望感とかああやればよかったとかの後悔とか、絶対次はやってやるというリベンジ精神を深く学びました。いや、ほんと悔しいな。。。


今後について

実は今期から1年半休学しています。その間にずっと前から言っているエストニアへの留学に年始から行ってきます。
それまでに1、2回、日本でエンジニアインターンできたらいいな。


最後に
isucon運営の皆さん、
日曜定休日だったのにも関わらず、僕らのチームだけのために8h貸切させていただいたトポセシアさん

そして、
4月から僕らにプログラミングを教えてくれた師匠のさぼさん、開発で必要なことの勉強会を何回か開いてくれたり、
クソみたいな初歩の質問にも答えてくれて、さぼさんがいなかったら学べなかったことが数え切れないくらいありました。

そしてそして
チーム仕事くださいの先輩方、この半年迷惑かけたことの方が多かったと思います。。。
プログラミングに関わらず、人生の相談にものってもらい本当に助かりました。

本当に感謝です。
皆さん、ありがとうございました。

codebaseで模擬isuconやってきた

 

先日、codebaseで行われてた模擬isuconに行ってきました。

f:id:Yuki-F:20171011125552j:plain

 

 

本題に入る前に軽くcodebaseついてお話すると,

codebaseについて
CODE BASEは、「宜野湾西海岸を、ITビーチに!」という目的のもとプロトソリューションが運営するラボスペース。これからITスキルを身に付けたい方や、すでにエンジニアやクリエイターとして活動されている方が集う場所を目指し、様々な勉強会やイベントを開催していきます。

----HPから引用


以前、訪れて作業していましたが、内装すごく綺麗でした。

f:id:Yuki-F:20171011123725j:plain

isuconを一言でいうと、webアプリケーションを高速化を競う大会です。
具体的にいうと
・事前に与えられたwebアプリケーション(ex,ecサイトとか掲示板などのwebapp)のチューニング
・チューニングが成功した分だけスコアが上がる。そのスコアで競う
・1チーム三人(二人も可)で1組
・制限時間:8h

ってな感じです。

 

で、今年の四月からその出場に向けてチーム組んで勉強していて模擬isucon自体は初めてではなく、今回で6.7回目くらいでした。

ただ、今回は初挑戦のishocon1と事情(別記事で書きます。)があってチームではなく、一人で参戦。

ちなみに
githubhttps://github.com/showwin/ISHOCON1
題材webappは「ishocon」という爆買いecサイト的なやつ。

 

スコアの遷移
ざっくりと僕のスコアの遷移を

1.2017/10/08 10:49:26 Score: 283(初期スコア)
2.2017/10/08 11:47:43 Score: 620( my.cnf調整した)
3.2017/10/08 11:50:38 Score: 573( my.cnf調整2)
4.2017/10/08 12:06:14 Score: 558( unicornのワーカー増やした)
5.2017/10/08 12:09:42 Score: 593(nginx.conf調整)
6.2017/10/08 12:57:34 Score: 2119(historiesのところにindex貼った)
7.2017/10/08 13:36:00 Score: 17235(commentsテーブルのusers_id product_idにindex貼った)
8.2017/10/08 15:37:15 Score: 22838(benchを4にした)
9.2017/10/08 16:36:14 Score: 23948(app.rbのcurrent_userをチューニング)
最終.2017/10/08 18:01:08 Score: 24963(app.rbのcmt_queryとcmt_count_queryをいじった)

最終スコア:24963

おおまかにやったこ


*nginx側
・alp入れてログを解析
・nginx.confの調整

*app側
unicornのworker_processを増やす。
・gitリポジトリつくる。

@ローカル

・isuchon1をローカルで立ち上げる

・rack_line_profでコードごとの処理速度を監視
・rack_mini_profilerでページごとのクエリの数とかかった時間を監視
・上でわかった部分を中心にappチューニング

*DB側
・myprofilerでスロークエリの分析
・my.cnfの調整
・DB上でindexを貼る。
・dump→リストア

こういった準備等や設定ファイルの調整を12:30くらいまでに終わらせれた。

 

そして、ログを見たりしながら
indexをペタペタ作業。これで

5000ms → 200ms 
スコア2万を超えるという。
indexつえぇぇ

 

貼り終わったあとは
14:00すぎくらいからappcation側をチューニング。

今回のapp側のネックとしては
商品とそれに紐づくレビュー、そのレビューの数を表示させる処理をviewsの側でクエリを呼び出していて、それをeachで回していた。

で、それに1h30くらいかけてチューニングするもエラーとかででできず(技術力が足りない)、
他にネックとなっているところを探すと

 def current_user
   db.xquery('SELECT * FROM users WHERE id = ?', session[:user_id]).first
end

このcurrent_userというメソッドが30ms くらいかかっていて、購入ページやコメントページで呼び出されていたのにもかかわらず、一度だけログインユーザーの名前だけを使い、あと、使うのはidだけというw

これを、別でcurrent_user_nameメソッドをつくってsession[:user_id]だけ返すようにしクエリを呼び出さないようにした。

そしたら

30ms → 0.3ms まで下がった。が

スコアは1,000くらいしか上がらなかった。。

ここで残り一時間。。。 

 

最後に悪あがきで

my.cnfとnginx.confをググりながら調整

結果:スコア変わらず。。 

残り10分で

app.rbの中で無駄に多くのカラムを取ってきてるやつを無くしてあげた。

結果:1000くらい伸びる

 

そしてしゅーりょー

 

今回の感想

app側のチューニング、ちゃんと遅い部分を分析して、こうしたら早くなりそうって推測してそれを実行できたのは素直に嬉しすごく楽しかった。

ただ、一番ボトルネックだった部分を直せなかったりとか、スコア、初めて2万超えたけど順位的にみたら、下から2,3番目くらいだったのでそこがすごく悔しい。。。

本番はもっといろんな人と競うことになる。

残り2週間弱でどのくらいのレベルまでいけるかわからないがやりきっていきたい。

 

最後に、プロビジョンの立ち上げやポータルサイト作ってくれたさぼさんを始め、運営のみなさんありがとうございました。

 

 

 

 

 

 

UNIX系OSを大まかに知る①

こんばんは、
今日は、UNIX系OSについて現時点での知見を大まかにまとめようと思います。

というのも
isuconをやっていると、
自身はmacOS Xを使っているのですが
macOS以外のOSの環境下でwebアプリをデプロイしていて

例えばUbuntuCentOS など
初めて見た時は何がなんだかわかりませんでした。

ってことで
調べてまとめてみました。

0.そもそもOSとはなんぞや

OSとは、コンピューターを動かすためのソフトウェアのことです。
Operating System オペレーティング システムの略。コンピューター全体を管理、制御し、人が使えるようにする役割があります。
コンピューターを使う上では 基本となるソフトなので、OSを基本ソフトウェアといいます。
身の回りにある家電製品や産業機器などのコンピューターには 役割や機能は異なりますが すべてOSが入っています。

参照:PC講座


要は人とコンピュータの動力源てきなやつか。
OSの種類を大まかに分けると UNIXwindowsMac に分かれる
ちなみに知っての通り、一般人が使っているOSで一番のシェア(デスクトップOS)はwindowsで90%以上を誇る

1.UNIXとはなんぞや
OSの種類の一種で
・現存している最古の OS
・インタネットサーバはほぼ UNIX系統のOSが使われている
・高いセキュリティとネットワーク機能の安定性を誇る らしい。

1969年にアメリカの研究所でMulticsという世界初のOSがつくられたが重すぎて使いものにならず、
なんとか作り直して、実用化したのが UNIX

開発元の事情がありUNIXソースコードは世界中に公開されていた(後にライセンス化される)

そのおかげもあってか
ソースコード見れるし、自分たちでさらに改良できるんじゃね?」
ってことで世界中でヒットして、UNIXから派生したOSがどんどん出てくる

ーーなるほどなるほど、
とりあえず、 OSの起源はUNIXからきていたんだな

2.Linuxの誕生
そして、UNIXから派生したものの代表的な一つがLinuxです。
UNIXの機能に対して不満を感じたフィンランドの大学院生がUNIXを参照に開発したのが
Linuxだそうです。

しかも、驚くべきことが
あくまで参照してつくったということ。
UNIXがライセンス等の問題でうるさかったために一から開発をして作ったらしい。
末恐ろし。

だから、使われているコマンドは似てるけど、ソースコードは違う。
さらに
UNIXとは違って、Linuxは完全にソースコードが公開されていて
これまた、派生した色々なOSが出てきて大ヒット。

3.種類について
で、UbuntuCentOSはなんなのというと
結論からいうと
Linuxディストリビューション(配布形態、派生したモノ)に含まれるらしいです。

結局、UNIXから派生した OSを大まかに分けると

①systemV系---これはUNIXを開発した親会社が開発したもの
BSD---カリフォルニア大学のバークレー校が開発したUNIXの互換 OS
Linux---linuxはさらにRedHat系とDebian系、slackware系に派生

の三つに分けられる。

4.MacOSってunixからの派生?
Mac OSにはDebianというappleが開発したOSがあってそれがUnixの互換OSであるBDS系がカーネル部分(OSの根幹的なやつ、車でいうエンジン?)のベースに使われているらしい。
若干ややこしい。。。
だからディレクトリの階層設定とかコマンドがほぼ一緒なのか。
まとめると、こうなるのか
f:id:Yuki-F:20170816165914p:plain


しかし、
調べみてなんでにこんなに派生させちゃったんだろう。と思いましたが、
もっと良いOSを作りたい、という野心をもった多くのハッカー達のおかげでどんどん良いモノができていて
僕らがこうやって良いOSを使えているのかなとも感じました。

現に、OSによって得意分野があるみたいで
一般user向けはwindowsだけど、サーバ向けはUNIX系が使われているみたい。
さらに細かい分類があるみたいでけど、ここでは控えます。

ってことで
大まかな UNIX系OSを振り返りました。


次回は
macOSUbuntuCentOSの代表的なパッケージ管理システムとインストールコマンドの違いを忘れがちだから書きたいな。


参照:
UNIX系 OSについて1Pでまとめていた
http://uguisu.skr.jp/Windows/first_unix.html

・OSの歴史を初心者向けに面白く書かれていた。
OS種類:https://eng-entrance.com/programming-os
UNIXLinuxの違い:https://eng-entrance.com/unix_linux
Linuxの誕生;https://eng-entrance.com/linux_birth
Linuxディストリビューションhttps://eng-entrance.com/linux_beginner_distribution

・OSのシェア(デスクトップOS)
http://news.mynavi.jp/news/2017/07/03/131/