新入生に捧ぐPCの選び方 -選び方の基準編-
新入生の皆様,ご入学おめでとうございます.pudding_infoです.
一応PCを売ったりするバイトをしていたりもします.
多くの場合,大学入学時には「レポートとかに使うだろうから」とPCを買ってもらう,又は買うのでは無いかと思います.ただこれまでPCなんて欠片も触れてこなかったのに,いきなりどれがいいかといわれても見た目程度でしか選べない!という人も多いのでは無いでしょうか.今回はそういった方々を対象にこの記事を書いています.参考にしていただければ幸いです.
PCを選ぶ前に
お願いだから部屋でホコリを被っているだけにしてあげないでください.
購入時に気にすべきこと
気分を切り替えて選び方の基準を書いていきます.
大学生が使うために必要な最低限の要素は,多くの場合は以下の2つになるかと思います.
- 持ち運べること
- 動作が遅くないこと
持ち運べない,動作が遅い,これらは結果としてノートパソコンを使わなくなっていく要因になります.せっかく買うのですから,どんどん活用していきたいですよね.
持ち運べるかどうか
まず「持ち運べる」という条件から考えていきましょう.
PCの大きさは主に「インチ」で,重さは「kg(またはg)」で表すのが一般的です.分かりづらいのがインチで,これはPCの画面の対角線の長さです.
よく売られているサイズとしては15.6インチ,13.3インチ,11~12インチが上げられます.
まず最初に言っておきますが,15.6インチを買うのは辞めましょう.理由は以下の通りです.
15.6インチをオススメしない理由
大きい
画面サイズが大きくなれば本体サイズが大きくなるのは当然ですが,15.6インチのノートパソコンではおおよそ横幅37cm×奥行き26cm前後が主流です.A4のレポート用紙が29.7cm × 21cmなので,カバンに入るかどうかというサイズになります.
重い
15.6インチのノートパソコンでは2.4kg前後が主流です.
これをカバンに入れて持ち運ぶのはかなり大変であると言わざるを得ません.ちなみに有名な辞書である『広辞苑』は重さが約2.5kgあるとされています*1.つまり15.6インチのノートPCを持ち運ぶのは,広辞苑を持ち運ぶのと変わらないと言うことです.
バッテリーの持ちが悪い
15.6インチのノートパソコンについては持ち運びを考慮されていないせいか,6時間前後が主流となっています.作業内容に寄りますが実際には公称値より短くなることも多く,なかなか電源を用意しづらい持ち運び環境では,できるだけ駆動時間は長い方が望ましいと言えるでしょう.
測定基準について明記されていない場合も多いので明確には言えませんが,おおよその指標にはなるかと思います.
13.3インチ以下がオススメ
これに比べ,13.3インチのノートパソコンは大きくても横幅32cm程度,重さも1.3kg前後が主流となり,バッテリーの持ちもものに寄りますが,だいたい二倍くらいになります.12インチ以下ともなればさらに小さく軽くなります.
カバンやリュックサック等に入れて持ち運ぶことが難しくないサイズ・重さであることは非常に重要です.
最近では1kgを切る超軽量なものも少なくなく,授業や実験,研究等ノートPCを持ち運ぶ機会が年に一回でもあるならば13.3インチ以下を選択するべきでしょう.
動作が遅くないかどうか
PCの動作の速さを決める要因は主に3つです.
- CPU
- メモリ
- 記憶装置(SSDとかHDDとか)
CPUについて
メインの処理を担う「頭脳」です.こいつの計算が速ければ,PCの動作も速くなります.CeleronとかPentiumとかCore i7とか色々ありますが,まずこれらの一般的な力関係を示しておきます*2.
Core i7 > Core i5 > Core i3 ≧ Core mシリーズ > Pentium > Celeron > Atomとか
まず,下の三つを採用したノートパソコンはとても安いです.数万円単位で値段が違います.その上でこれらを選択するのはよっぽどお金が無く,すぐに必要という場合のみにしてください.理由は単純で「遅いから」です.
どういったことをするかに関わらず,数年使っていけば徐々にPCの動作は重くなっていきます.最初からある程度余裕を持ったCPUを選んだ方が良いと思います.
よって,Core ○○シリーズを採用したノートPCにすべきでしょう.
逆に,ノートPCにおいてCore i7を選ぶメリットはあまりありません.少なくとも13.3インチ以下に限定したとき,目に見えるほどの変化が出ることはまず無いでしょう*3.価格差を考えればCore i5から無理してスペックアップするべき箇所ではないと感じます.
というわけで,Core mシリーズまたはCore i3, i5搭載のものにしましょう.
また多くの場合,周波数というよくGHz
で表される値が併記されてありますが,基本的にこの値は大きければ大きいほど性能が高いと思ってください.
メモリについて
メモリはよく「作業机」に例えられます.いくら速いCPUを搭載しても,狭い机では存分に力を発揮することはできません.
一般的なラインナップは以下です.
- 2GB:とても安いPC.少しアプリを起動するといっぱいになるためとても不便.スマートフォン以下.
- 4GB:普通のPC.店頭では最もよく見かけるが,正直最低ライン.
- 8GB:おすすめ.普通の人は困らない程度.
個人的には8GBを推奨したいところです.
記憶装置について
「500GB」とか「1TB」とか書いてあることが多いです.実際にデータを置いておく場所になります.
大きく分けて三種類の記憶装置があります.
- HDD:安くて大容量.最低500GB~.たくさんのデータをため込むことができるが,その反面速度は遅い.
- eMMC:値段の安いPCによく搭載される.容量はとても少なく32GBか64GB.USBメモリに毛が生えたようなもの.
- SSD:高くて容量は少なめ.最近は容量も1TBくらいまで選択の余地があるが,値段の上がり方が半端じゃなくなるので256GBくらいが現実的.
HDDやeMMCのノートパソコンを買うのは辞めましょう.
これまでHDDはその安価さからこれまで長らく重宝されてきましたが,遅い上に壊れやすいため,全くおすすめしません.PCの動作が重いなと思ったら,だいたいの原因はこいつです.
eMMCを搭載したPCはだいたいとても安く,小型です.容量が非常に少ないため,メインPCとして使っていくには厳しいと言わざるを得ません.
SSDは他の二つと比べて圧倒的に速いです.メモリを4GBから8GBにするか,HDDをSSDに変えるかの二択に迫られたら迷わずSSDを選ぶべきというくらい変わります.起動も,動作も,HDDとは比べものになりません.絶対にSSD搭載のノートPCを選びましょう.
また128GBはメインとして使うには足りないことが多いため,最低でも256GB以上が推奨です.
価格差はどこから来るの?
おそらく以上の条件を満たすPCを選び出しても,ほとんど変わらないスペックで比較的安価なものから,おそろしく高いものまで色々あるでしょう.これらの値段の差がどこから生まれるのかについて,個人的な見解を書いておきます*4
- 頑丈さ
例えばLet'sNoteはここに相当なお金をかけています.踏んでも壊れにくい,落としても壊れにくいというのは凄いことです. - 軽さ・小ささ・薄さ
ただ削るだけでは簡単に壊れてしまいます.これらの要素とPCとしての使い勝手・性能のバランスを追求した結果値段が上昇します. - ディスプレイの綺麗さ
AppleのRetinaディスプレイやIGZO液晶のように高解像度で美しいディスプレイを搭載している場合があります. - ブランド
PCの世界にもブランド料は絶対にあると思います.とはいえAppleやVAIO,Microsoftなど有名ブランドでも,その値段に見合った性能を大抵は保有しています.一番怪しいのは国産を謳うノートPCのブランド料です. - スペックに現れないパーツごとの差
例えば同じSSD,同じCore i5でもその性能に大きな開きがある場合があります.
全てに気を配ってPCを買うというのは大変な労力です.基本的にお金は積めるだけ積むのが良いです.自ずと良い物が手に入ります.
そんなに高いPC必要なの?
そもそも本当に性能が必要な場合,ノートパソコンでは全く足りません.いわゆるクリエイターなど,本当に高性能を必要とする人にとって持ち運びするノートパソコンでは絶対的に性能が足りません.
少し高価なモバイルノートパソコン程度の性能は,まともにPCを使う上で必須のものであると言っても過言ではないと考えています.*5
まとめ
上記の条件を軽く整理すると,
- 軽い(1.3kg以下)
- 小さい(13.3インチ以下)
- バッテリー持ちが良い(最低でも8時間以上)
- Core m以上のCPUを搭載
- メモリは8GB
- SSD搭載(できれば256GB以上)
- 変にケチらない
といった感じでしょうか.これに当てはまるモノを買えばだいたいオッケーです!
続編としてOffice&アクセサリ編,個人的オススメ機種編も書きます.書きました.
Prometheus + cAdvisor + GrafanaでDockerコンテナごとのリソースを可視化する
背景
コンテナ数も増え,それに依存したサービスも増える中,サーバのapt upgrade
後にPT3が行方不明になってこのすばの録画が死んだこともあり,いずれこれは把握できる範囲を超えるなと思ったため,監視ツールを何か導入する必要があると考えました.
いくつか候補は挙がったのですが,最終的にZabbixを選ぶか,Prometheusを選ぶかで悩んでGrafanaが最初からサポートしているという理由でPrometheusを選択しました.
今回はPrometheusでcAdvisorから情報を取得,Grafanaで可視化するまでを行います.Alertmanagerなどの導入はちゃんとできたらまた記事にします.
使うもの
Prometheus
Prometheusはサーバ側から監視先を叩きに行くPull型の監視ツールです.詳しいことはQiitaの先人におまかせします.
exporterと呼ばれるエンドポイントを建てて情報を収集します.今回はホストの情報を収集するためにnode-exporterを使用します.
cAdvisor
cAdvisorはDockerホスト上のコンテナの監視ツールとしてGoogleが開発しているものです.Googleさまさまです.
単体で監視を行いますが,メモリ上に直近60秒の情報を保持するのみで保存しないため,InfluxDBとよく組み合わせられています*1.このcAdvisorは実はPrometheusに対応しており,デフォルトでhttp://cAdvisorへのアドレス:8080/metrics
で各種のメトリクスを取得できます.
一つのDockerホストに一つずつcAdvisorが起動していれば後はまとめて叩いて回ってデータを集計するだけでいいというわけですね(うちにはホスト一つしか無いですが
Grafana
かっこいいダッシュボードを作るアプリケーションです(ざっくり
テンプレートが多数公開されており,それらをカスタマイズするだけで十分な機能を得られます.
環境
- Ubuntu Server 16.04 LTS
- Docker version 1.13.1
- Docker compose version 1.8.0
設定
今回は全てDockerコンテナとして建てます.
ディレクトリ構造は以下の様にします.
. ├── docker-compose.yml ├── grafana └── prometheus └── prometheus.yml
外側からアクセスするGrafanaと(一応)Prometheusには静的なIPを振っておきます*2.cAdvisorは直接触らないので,Dockerのネットワーク内に閉じ込めておきます.
以下の様なネットワークを作っておきます.
$ docker network create -d bridge -o "com.docker.network.bridge.name"="monitor_nw" monitor_nw
また,下記の過去記事で作成したmacvlanドライバのdmz_nw
を使用します.
Prometheusの設定
がつがつdocker-compose.ymlを書いていきます.
version: "2" services: prometheus: image: prom/prometheus container_name: prometheus volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml expose: - "9090" networks: default: aliases: - prometheus dmz_nw: ipv4_address: xxx.xxx.xx.y restart: always networks: default: external: name: monitor_nw dmz_nw: external: name: dmz_nw
macvlanでIPアドレスを割り振っているのでホストのポートとのマッピングはしていません.
設定ファイルであるprometheus.yml
はとりあえず最低限のことを書いておきます.
prometheus自身のメトリクスを取得する設定,後述のnode-exporterとcAdvisorから情報を取得する設定です.15秒間隔で情報を取りに行くようにしています.
global: scrape_interval: 15s external_labels: monitor: "monitor" scrape_configs: - job_name: "prometheus" static_configs: - targets: ["prometheus:9090"] - job_name: "node" static_configs: - targets: ["ホストのアドレス:9100"] labels: group: "docker-host" - job_name: "docker" static_configs: - targets: ["cadvisor:8080"] labels: group: "docker-container"
localhost
を指定するとうまく動かないので,わざわざホストのアドレスも直打ちしています.
詳しい設定は公式ドキュメントを参照してください.
node-exporterの設定
node-exporterはホストの様々な情報を取得するexporterです.そのため,ホストのルートディレクトリをマウントする必要があります..また,host
ネットワークを使用する必要があるため,ホストのポートとのマッピングを行いアクセスできるようにしています.
# 省略 node-exporter: image: prom/node-exporter container_name: node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro ports: - "9100:9100" network_mode: host restart: always # 省略
cAdvisorの設定
権限を多く要求する怖いコンテナです.外側から直接アクセスできないようにDockerネットワークに封じ込めます.
# 省略 cadvisor: image: google/cadvisor:latest container_name: cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro expose: - "8080" privileged: true networks: default: aliases: - cadvisor restart: always # 省略
特にprivileged: true
が怖いのですが,僕の環境ではこれをオンにしないと動きませんでした*3
Grafanaの設定
最後にフロントエンドのGrafanaをセットアップします.今回はわざとしていませんが,過去記事のnginxとdocker-genを組み合わせたシステムでサブドメインを割り当てることも出来ると思います.
また,普通に起動するとusernameがadmin
,パスワードもadmin
の状態になっており,サインアップも勝手に出来るようになっているので環境変数でそのあたりを制御します.
# 省略 grafana: image: grafana/grafana container_name: grafana volumes: - ./grafana:/var/lib/grafana networks: default: aliases: - grafana dmz_nw: ipv4_address: xxx.xxx.xx.z restart: always environment: GF_SECURITY_ADMIN_USER: hoge GF_SECURITY_ADMIN_PASSWORD: fuga GF_USERS_ALLOW_SIGN_UP: "false" GF_USERS_ALLOW_ORG_CREATE: "false" # 省略
GF_SECURITY_ADMIN_USER
とGF_SECURITY_ADMIN_PASSWORD
がそれぞれ初期管理ユーザのユーザ名とパスワードになります.
GF_USERS_ALLOW_SIGN_UP
はサインアップの無効化で,トップページからサインアップの項目が消えます.GF_USERS_ALLOW_ORG_CREATE
は管理権限のあるユーザ以外のorgnizationの作成を無効にします.
起動
$ docker-compose up -d
この状態でまずprometheusに割り当てたアドレスxxx.xxx.xx.y:9090
にアクセスして表示されるかを確認します.
次に,Grafanaに割り当てたxxx.xxx.xx.z:3000
を開いて設定したユーザ名とパスワードでログインします.DataSourceを追加するときソースの種類をPrometheusで選択するとhttp://localhost:9090
がサジェストされますがこれは使いません.prometheusで名前解決できるようになっているので,http://prometheus:9090/
を指定します.
Grafanaのテンプレートは以下のものを使用しました.
何もいじっていない状態で以下の様になりました.loadの値が取れていませんが,まぁおいおい自分でいじくっていきたいと思います.
まとめ
思ったより簡単に値を取るところまではできました.後はGrafanaからクエリを叩いて表示していくだけです.難しそう.
また今回はAlertmanagerを含めていません.ここまではcAdvisor + InfluxDBでもできることになってしまうので,次はアラートの設定もしていこうと思います.
nginxとdocker-genとその他を使って良い感じにする(2)~gitlab構築~
前回の続きです.今回はgitlabの構築をしたいと思います.
環境
前回と同じ
構築したい環境
gitlab.hoge.com
という感じのサブドメイン,かつhttpsでgitlabにアクセスできるようにする.
前準備
前回で構築した環境が動いていれば問題ないです.
gitlabのコンテナを建てる
Gitlabのdockerコンテナ構築にはsameersbn/docker-gitlabがよく用いられているように思いますが,公式のコンテナがあるのでそっちを使っていきたいと思います.
ディレクトリ構成は以下の様にします.
. ├── config ├── data ├── docker-compose.yml └── logs
設定
version: "2" services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab volumes: - ./data:/var/opt/gitlab - ./config:/etc/gitlab - ./logs:/var/log/gitlab restart: always environment: VIRTUAL_HOST: gitlab.hoge.com VIRTUAL_NETWORK: shared VIRTUAL_PORT: 80 LETSENCRYPT_HOST: gitlab.hoge.com LETSENCRYPT_EMAIL: hoge@mail.hoge.com GITLAB_OMNIBUS_CONFIG: | external_url "https://gitlab.hoge.com" nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } gitlab_rails['time_zone'] = 'Asia/Tokyo' networks: - shared networks: shared: external: name: internal_shared
gitlabのhttps化には色々手段が考えられると思いますし,直接gitlabを外部に晒す方法であれば直接gitlabに対してletsencryptで取得した証明書を食わせるべきですが,今回はそれらを全てフロントエンドのnginxに任せてしまいます*1.
通常external_url "https://gitlab.hoge.com"
を指定すると証明書が要求されますが,以降のnginxに関する設定をすることでリバースプロキシにそれらの処理をゆだねることが出来ます.
起動
$ docker-compose up
gitlabはかなりメモリを食うようです.実験のためにMac上のVagrantで起動しようとしたときはひたすらエラーでなんともなりませんでしたが,サーバ上ではうまく動いてくれました.
初回起動時には様々な設定を行うようでそこそこの時間がかかり,それまではアクセスしてもエラーが帰ってくるだけになります.
httpsでアクセスできるようになったら成功です.初回ログインに成功したらアカウントの登録を止めておきましょう.
うまくいってないこと
メールの設定もしたのですが確認メールが送られてきません.ルータのログも確認しましたが特にそこでフィルタリングしているわけではなく,どうもgitlabの内部のエラーで送れていないようです.何度か設定をいじくり回したのでそこで何かおかしくなったような気もするのですが…
まとめ
ずっとgithubに頼っていましたがどうしてもgitlabのCI/CDをためしてみたかったのでインストールしました.簡単に起動できて最高な時代になったなぁ…