そろそろ中堅エンジニアのIT雑記

プログラミングを仕事にして若干、まだまだ新米エンジニアの雑記です。

PC構成考察(ドラゴンズドグマオンライン) 2016-10-23版

友人に依頼されて、ドラゴンズドグマオンラインができるPC構成を考えたので、その時のメモを記事化。
まず、ドラゴンズドグマオンラインホームページより、動作環境は以下。
f:id:DAIMOX:20161123002009p:plain

要求スペック考察

CPUとグラフィック性能がポイント
CPU

  • 必須スペックのCPUは6年以上前のものなので、最新世代のものを選べば間違いなく満たせる
  • 打って変わって、推奨スペックの要求はかなり高い
  • しかし、Core i3相当のマシンでドラゴンズドグマオンラインベンチマークソフトを回してみたところ、“快適”であった
  • CPU性能はCore i3で十分であると考えられる

グラフィック性能

  • 推奨スペックのGeForce GTX 570、Radeon HD 7870は入手が易しいグラフィックボードで十分に満たす
  • 他ゲームではグラフィック性能が求められる場合もあるので、ミドルレンジのものを選ぶのが良い

f:id:DAIMOX:20161123002336p:plain
上記、ベンチマークテストはいろいろ施した4.0GHz Celeron G3900+Radeon R7 250Xを使用している。
f:id:DAIMOX:20161123002348p:plain
右上のマシンスペックは2.80GHzと書いてあるが、実際は4GHz。

つまり、i3相当のクロック数とRadeon R7 series相当のグラフィック性のがあれば十分に快適動作ができるということ。

PC構成考察

入手が容易なドスパラ通販サイト、2016年10月23日時点での価格で考察。

構成案 Case 1

定番の10万以下ゲーミング構成
f:id:DAIMOX:20161123003545p:plain
5年くらいは使えるだろう。マザボはKabylake CPUも対応するらしいので、CPU、メモリ、グラボ等、今後スペックアップできる部分が多い。

構成案 Case 2

必要な部分以外そぎ落としが、十分快適に動く構成
f:id:DAIMOX:20161123004149p:plain

  • Intel製のCPUなので、性能は間違いなし
  • オンボードグラフィック性能は低いので、ゲームをやる場合はグラフィックボード必須
  • RX460はミドルロー性能、FPSやVRでなければ、大体動く

構成案 Case 3

意外といけるAPU構成
f:id:DAIMOX:20161123004539p:plain

あとがき

定番構成だったらBTOと価格差ないけど、要求性能ギリギリを狙うと、結構うまみがでる。APUはまだ使ったことがないので、実際に組んで試したい。BristolRidgeのアンロックモデル待ち。

中古ハイスペックノートPCの作成#1(構成編)

中古PCを改造して、ハイスペックノートPCを作る、構成編です。

今回、私が改造元として選んだノートPCはAcer Aspire Timeline X 3830Tです。
http://kakaku.com/item/K0000261601/
なぜこれを選んだか、理由を以下に挙げます。
- 持ち運びを考慮(14インチ以下)
- マザーボードへのアクセスが容易
- SandyBridge世代のcore iシリーズを搭載
- 改造例が多数報告されている
特に大事なのは"改造例がある"の項目ですね。私は中古・ジャンクPCで気に入った筐体を見つけたときは、まず改造例があるかをググります。製品によってはメモリ・CPUがオンボード構成(マザーボードにはんだ付けされており、交換がほぼ不可能)という場合があります。改造元のノートPCがオンボードかどうかを、まずは確認しましょう。
私はCPUの換装までを目的としていたので、CPUの換装例まで確認しました。

さあ、今回選んだTimeline X 3830Tは画面サイズが13.3インチ。ぎりぎりモバイルできるサイズです。重量も2kgを超えていないのでOK。なにより、見た目で選びました笑。
裏面はネジ一本外すと、メモリ、ストレージ、マザーボードなどにアクセスが可能です。

改造前のスペックを以下です。
CPU Core i5-2410M
メモリ SO-DDR3 2GB×2
ストレージ HDD 500GB
OS Windows7
このままの構成でも十分現役で使えるスペックです。これを以下のスペックに改造しました。
CPU Core i7-2820QM
メモリ SO-DDR3 8GB×2
ストレージ SSD 256GB
OS Windows10
スペック表見ただけでも、ワクワクしてしまいます笑。

今回はここまでにしておきます。それぞれの換装については後ほど。

Celeron OC Linuxマシン

ノートPCの換装の件は置いといて、、、

最近取り組んでいるのは、Skylake世代のCeleronをOC(オーバークロック)して、core iシリーズ並みの性能を持ったLinuxマシンを作ろう!という計画です。

 

興味を持ったのは、K無しSkylakeでも、OCできるというAsRockの変態マザボを見つけたからです。

名古屋大須ドスパラにK無しOCできるよ!って店員さんのコメント付きで置いてあった(今でもあります)。

 この変態マザボのレビューは以下のページで詳しく書かれているので、興味をお持ちの方は参考にしてください。

http://blog.livedoor.jp/wisteriear/archives/1056832016.html

http://www.gdm.or.jp/review/2016/0430/159649

 

今回作っているマシンの構成を紹介します。

SSD:Kingston 120GB
CPU:Celeron G3900
M/B:AsRock H170 Pro4/Hyper
メモリ:TEAM DDR4 8GB×2

CPUクーラー:Deep Cool GAMMAXX200T

VGA:MSI GeForce 710

ケース:ENERMAX ECA3360B-RT

ケースファン:Deep Cool XFAN 120U R/R ×2

OS:未定

こんな感じですね。ポイントはM/BとCPU、この2つが、Celeron OCの実現に必要なものです。残りはテキトーです笑。特価品を漁りました。総額は4万円を超えなかったと思います。別途、モニターやマウス、キーボードを新調してますが…

また、Non-K OCをする際は内蔵GPUが無効になるので、グラボが必要となります。

 

このマシンで自作PCは3つ目なんですが、慣れたもんですよ。数時間で組み立てられました。

試しにWindowsで立ち上げて、OCできてるか確かめました。
f:id:DAIMOX:20160926062328j:image

うん、あっさり4GHz達成。AsRockすげぇな。

 

目的2つは達成できたので、Linuxを入れる。

とりあえず、一番人気そうなubuntuを。

 

 

あれ、起動しない…

OC無しの定格だと問題ないんだけど、OCすると、ログイン画面が表れない。紫色のスクリーンがずっと続く。

どうやらNVIDIAグラボのドライバー関係が怪しいみたい。(これがわかるまで1週間)

ドライバー入れ直すか、、、←イマココ(すでに1週間経っている)

 

3つ目の目的はまだ達成できておりません…

最悪、Windowsかなぁ。

中古ハイスペックノートPCの作成#0

どーも、お久しぶりです。

職場が変わり、アウトプットを諦めてましたw

近頃やる気が持ち直してきたので、温めていたネタを投稿します。

 

まずは中古ノートPCのハイスペック化計画!

 

もともと自作PCを作っていましたが、ノートPCも作れるんじゃね?って思い立ったことが、動機です。

ググってみると、メモリの増設から始まり、ストレージの交換、CPUの交換、、、1からノートPCを作り上げる猛者も…。

 

まあ、ともかく、私がやったのは以下の項目

  1. メモリ増設
  2. ストレージの交換
  3. CPUの交換
  4. (液晶の交換)

の4つです。

しっかり調べてから始めれば、誰でもできると思いますよ。(ただし、3、4は難易度高)

 

詳細は次に。

Macを買った

MacBook Airを買った。
最近,話題の Swiftを触ってみたかったからだ。購入してすぐにXcodeをインストールした。
しかし,未だにコードは書いていない。C#で遊んだり,アルゴリズム勉強したり,格安スマホに興味を取られていた。
原点回帰でJAVAを真剣に勉強しようと思い,MacNetBeansをインストールした。
うん,JAVA面白いな。ちゃんと勉強しよう。

開発環境だけ整って行く現状…

最近やっていること

前回の更新から時間が空いてしまった。
仕事が忙しかったのと、やりたいことがありすぎて、アウトプットが後手に回してしまった。

現在取り組んでいることを挙げる。

  • 勉強会の開催
  • C#の習得
  • 日記を書く
  • 読書ノートを書く

勉強会は小さい規模で、同期と情報交換や課題に取り組んでいる。おもしろいネタがあればこちらにも投稿したいものだ。

JavaC#はエンジニアとして仕事の幅を広げようと思い、勉強を始めた。特にC#Windowsアプリケーションを作ることが楽しく、精力的に取り組んでいる。進捗を投稿できたらいい。

日記はエンジニアとしてだけでなく、人生の記録をつけてみようと思い立った。会社で毎日、日誌をつけているので、続くと思う。

読んだ本の中身をすぐに忘れてしまうので、キーワードだけでもメモしようと思い、読書ノートをつけ始めた。特に技術書は自分が理解した部分やポイントとなる単語をメモして、振り返りのサポートに使いたい。


これからやりたいこともいくつかある。

  • Mac環境を整えて、Swiftに触れる
  • システム工学を学ぶ

まずはMacBook Air買おうか悩み中。。。

読みたい技術書がたくさんあり、モチベーションが高く維持できているので、この機会に大きくレベルアップしたいと思う。

【Java】FizzBuzz

最近、Javaを勉強している。
一通り本を読んだ後、ネットで調べてみるとFizzBuzz問題というのがあるらしい。

この問題に挑戦してみることにした。
仕様は以下の通りだ。

  1. 1から順番に数を表示する。
  2. その数が3で割り切れるなら"Fizz"、5で割り切れるなら"Buzz"、両方で割り切れるなら"FizzBuzz"と表示する

プログラムをかじったことがある人だったら、どのようなロジックにすればよいか、頭に浮かぶのでないだろうか。
書いたコードをさらす。

//   仕様
//    1から順番に数を表示する
//    その数が3で割り切れるなら"Fizz"、5で割り切れるなら"Buzz"、両方で割り切れるなら"FizzBuzz"と表示する
//

public class FizzBuzz {
	public static void main(String[] args){
		//変数の宣言
		int i;	//ループ変数
		final int NUMFIZ = 3;			
		final int NUMBUZ = 5;
		final String STRFIZ = "Fizz";
		final String STRBUZ = "Buzz";

		
		//処理開始
		for(i = 1; i <= 100; i++)
		{
			if(i % (NUMFIZ * NUMBUZ) == 0)
			{
				//FizzBuzzを表示する場合
				System.out.println(STRFIZ + STRBUZ);
			}
			else if( i % NUMFIZ == 0 )
			{
				//Fizzを表示する場合
				System.out.println(STRFIZ);
			}
			else if(i % NUMBUZ == 0)
			{
				//Buzzを表示する場合
				System.out.println(STRBUZ);
			}
			else
			{
				//Fizz,Buzz,FizzBuzzを表示しない場合
				System.out.println(i);
			}
		
		}	
	}
}

ロジックよりも可読性、保守性を意識した。
工夫した点を以下に挙げる。

  1. マジックナンバーを少なくする。
  2. コメントを有効に使う。
  3. 仕様の変更に対応できるようにする。

作成者はマジックナンバー(コード中の具体的な数字)の意味を知っているが、他者が見る場合は、
コメントがないと何の数字かわからず、下手に手出しできなくなってしまう。したがってマジックナンバー
できるだけ使わず、意味のある変数や定数にした方がいい。
コメントは他者がコードを見るとき、後日自分で見るとき、コード理解のヒントになる大事なもの。
処理が分かりずらい時や、変数の定義、クラスの説明などいろいろな部分に書き込む。
仕様通りに作るのは当然だが、要求が変わることはよくある。したがって将来的に変更がありそうな部分は、
変更がしやすいように書いておくと、コードの修正が楽になる。

今回、割り切れる数やそのときに表示する文章を定数として頭で宣言することで文中のマジックナンバーを減らし、
改修にも容易に対応できるようにした。
ifの分岐はどのような分岐なのかわかるように、分岐の中にコメントを挿入した。


自分としてはなかなか読みやすいコードになったと思い、友人(同レベルの)にコードレビューをしてもらった。
すると、自分で気づかなかったことや、ここはこうしておけばよかったなと反省するところが見つかった。
以下に挙げた意見や改善点がでてきた。

  1. 3でも5でも割り切れる分岐の条件を(i % NUMFIZ == 0) && (i % NUMBUZ == 0)にする。
  2. クラスの詳細(作成日や作成者、バージョン、入出力パラメータ)をヘッダーにコメントを書いた方が良い。
  3. ループ変数iはForループの中で宣言した方が良い。
  4. コメントは//よりも/*~*/の方が良い。

1番目は数学的には同じ条件だと思うが、もともとの条件だと分岐の順番を変えると不具合が発生してしまう。そこでより仕様に沿った条件を書いた方がいい。
2番目はクラスの情報が一目でわかるので、あると中身を全部読まなくても内容が読める。
3番目はスコープの問題だ。初めに宣言すると、宣言したクラス内どこでも変数が使えてしまう。変数は使用する部分以外では使えない方が不具合が減るので、使用時に宣言するのが良い。これはC言語と違う部分である。
4つ目はVBAに慣れてる僕には目から鱗だった。//だと一行全部がコメント部分になるが、/*~*/では書いてある部分だけがコメントになる。間違って改行していた場合なども意図せずコメントアウトすることがなくなるらしい。VBAでは基本的に複数行にまたがる条件やコードの書き方をしないので( _でできるが)すごく納得した。


後記
基本のプログラミングだったが、大変勉強になった。特に人に見てもらうのは説得力があり、理解もしやすい。こういった趣旨でコードを書いたと説明することも頭の中で自分のコードを反復するのに効果的だと思った。今後も定期的にコードを見てもらおうと思った。
はてな記法でコードを書く方法を教えていただいたthomさん、ありがとうございます。早速使ってみました。