未経験がエンジニアを目指すことって、それって意味あんの?

未経験のエンジニア転職についての広告が多い。
つまり、それだけ広告を出しても利益が上がる状況にあると言えよう。

ただよく考えてほしい。

給料はそんなに高くないし、コードを書いているだけなら給与は上がらない。
設計や方針設定、人のマネジメントに携わらないと、新卒やオフショアとの価格競争に巻き込まれる。

かつ、とてつもない速度の技術更新についていく必要があって、他の職種より積み上げが難しい。

そこであなたは生き残れるのだろうか?
分が悪いのではないだろうか。

記憶力は一般的に若いほうが高いし、ライフステージとして若いほうが学習時間が取れる。
果たして勝てるのだろうか?

その状況の中で、現在のあなたの業務知識を活かす転職をしたほうが結局幸せではないだろうか?

私の話をすると、研究員からコンサルタントに転職し、1年2ヶ月で課長クラス(年収600万前後)まで昇進するほどある程度の成果を挙げている。
エンジニアとは少し違うが、知識を更新していき、説明する必要があるという意味では、エンジニアよりハードかもしれない。

そこには他人には努力に見えるようなことがあった。
1・関係する技術の論文が読めるレベルの学習
 大学学部で学ぶレベルは全て目を通し、自分の言葉で話せるようにした。

2・社内でのつながりを作る
 ある程度意識的に意思疎通を行い、誰が何を知っているのかを知る。
 そこで人に頼り、関係を作っておく。
 積極的な飲みニケーションはしない。基本無駄になる。

3・納期は確実に守る。
 寝る時間以外は作業することは2回あった。
 信頼はいつもの業務が完遂されるかにかかってくる。
 信頼されなければ仕事は任されない。ゆえに自分が思った通りの仕事のシステムが作れないため、楽に仕事ができない。

4・仕事はシステム化する
 繰り返し作業は自動化する or 誰かに任せる、で基本自分はやらない。そこに付加価値はない。

そのような何らかの工夫があってこそ、結果も安定して出せる。
そのことは研究員時代、はては大学・大学院の時代からわかっていた。

ちなみに努力に見えるが私本人としては努力をしているつもりはない。
それが当たり前だからだ。

そのような工夫がない限り、一般的なエンジニアにとどまるしかない。
その給与は500万に行くかどうかでしかない。

作りたいものが作れる?
ふざけるな。お金の流れを考えてみろ。

誰かがシステムが欲しいからこそ会社に依頼が来て、そこでエンジニアに割り振られる。

作りたいものは個人で作れ。それか会社を創って作れ。
そこで儲けられるかはあなたの手腕にかかってくる。
そんな甘い世界ではないし、上手くいく人には理由がある。

私はエンジニアとしては、作りたいものを作るタイプなので上手く行かないことはわかっている。
しかも、「(興味のない)技術更新はめんどくせえな」なタイプである。
かつ、大学・大学院で専門に学んできた分野は化学・生化学であり、コンピューター科学ではない。知識で勝てるわけがない。

ならば、戦う場所はある程度制約がかかるのは理解できるだろう。

あなたはあなたの積み上げてきたものと行動パターンを考えて、エンジニアを目指そうとしているのだろうか?

個人での戦略を立てなければ、一般に埋没してしまう。
結果、今の給料とそう変わらないが、学習する時間は取られ続けるコスパの悪い職種となる。

「自分で考えられる」と思っている人のほとんどがパターン認識であるし、
なんとなく前例があるから判断をしている場面は多くないだろうか。

考えるを言語化したことがあるのだろうか?

あなたはその現実から逃げても、夢は現実でしかない。
広告は良いことしか言わないし、エージェントは基本あなたの人生なんか考えちゃいない。
あなたはノルマ処理の一環でしかない。
クソみたいな仕事も間違いなく存在するし、それを粛々とやっても価値は出ない。
その現実にぶつかる日はいつか必ず来る。

あなたはそれで良いのだろうか?

[Meisyo] 探索

これは何?

名将と呼ばれた者達の1機能である探索(2020年4月実装)について書いた記事です。

実装目的

1・別目的の追加練習を追加したい
 これまでは選手の獲得・育成をメインにした追加練習しかなかったためです。
 探索は、アイテムの獲得およびNPC戦(実装予定)が主な目的で、ある程度選手が育った中級者以上向けのコンテンツです。

2・動的なプレイ体験をしてもらいたい
 限られた時間の中で、自分の操作次第で結果が変わりうるコンテンツが少なかったためです。
 探索は、さまざまな地形による影響を受けながら、アイテムをいかに早く・多く集めるか、ボス高校(NPC)を見つけるかが重要になってきます。
 UIはスマートフォン向けで、直観的に扱えるように工夫しています。操作方法はクリックのみです。

遊び方

少しUIが変更されている部分がありますが、基本的に遊び方は同じです。

1. ロードする

2. 探す

操作はクリックのみ。
画面下にある薄黒色のタッチパネルで、キャラクターの移動する向きを決めます。

3. 探す

地形により侵入不可、HP減少加速、滑りやすいなど効果があります。

・ボスNPC戦
 チケット等を使わずにボスNPC(Meisyoオリジナル)と試合を行うことができます。
 1度試合すると24時間独占挑戦権が得られ、他人には挑戦できなくなります。
 勝利すると、覚醒用アイテムなどが獲得可能。
 詳細はこちら
 イベントなどに使う予定です。

4. 手に入れる

気合の塊をはじめ、その他レアアイテムが多数出現します。
誰も探していないエリアはアイテムの宝庫になる調整を行っています。
※NPC戦を行うとその回の追加練習(探索)は終了されます。

駆け出しエンジニアは本当にフロントエンドエンジニアを目指すべきなのか

最近、駆け出しエンジニアをTwitter上で数多く見るようになりました。
ただ、揃いも揃って「フロントエンドエンジニア」になりたい(意訳)とプロフィールに書いてあります。

なぜでしょうか。
それは何が問題なのでしょうか。

私が何を問題視しているかというと、フロントエンドエンジニアってそんなにコストパフォーマンス良くないぞ?ということです。
なぜなら、バックエンド等に比べて要求される技術の種類が多くなりがちであるからです。

そこで今回、給与や技術などの視点から、この原因を読み解いてみました。
※すべてのベースとなる情報科学の知識については全く触れていません。

目次

給与
技術
目指してしまう理由
解決策
あとがき

給与


indeedをはじめ、リクナビネクスト、マイナビ転職、Green等のサイトを確認すると、その他のエンジニアに比べ、給与が10~20%程度低めです。

・フロントエンドエンジニア

・バックエンドエンジニア

*フロントの20%増しくらいの給与水準でした。
* 同じ待遇にしている会社も確認できました。内部で違っているのかもしれません。

エンジニア職種には数多く存在し、組み込み系やパッケージ系、社内SEもあればインフラ、品質管理等々が存在します。
その中で高いわけでもなく、低めの水準でした。

技術


フロントエンドエンジニアで特に問題なのは、習得すべき技術の種類の多さです。

基本的な技術だけでも大きな差が付きます。

・フロントエンドエンジニア
HTML(表示基礎)
CSS(表示スタイル調整)
JavaScript(動的なページの作成)

・バックエンドエンジニア
PHP(システム基礎:Ruby、Java、JavaScript等も可能)
SQL(データベースとの接続:AWS、BigQuery、RedShift等も可能)

1種類しか違わないのでは?と思いがちですが…、

HTML、CSS、JavaScriptは全く構文が違います。
例示していきます。

HTML

<タグ>~</タグ>を基本とした構成です。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>タイトル</title>
...

CSS

HTMLで作成したタグやクラス、idごとに表示スタイルの調整を行います。
タグ名 { ~ }です。

/** General Style Info **/
body {
	background: #003d4c;
	color: #fff;
	font-family:'lucida grande',verdana,helvetica,arial,sans-serif;
	font-size:90%;
	margin: 0;
}
a {
	color: #003d4c;
	text-decoration: underline;
	font-weight: bold;
}
...

JavaScript

動的なページを作るために、訪問者の属性ごとなどで条件分岐をさせたり、文字や背景自体を動かしたりできます。
下記はJQueryという過去のライブラリの記法です。

jQuery(document).ready(function( $ ) {

  $('#myTab a').click(function (e) {
    e.preventDefault()
    $(this).tab('show')
  });

  $('.carousel').carousel();
  
  $('#accordion').collapse({toggle: false});
...

PHP

PHPなどは比較的書きやすい言語です。
基本的な書き方はその他の言語(Ruby、Java、Python等)も同じです。
下記はCakePHPというフレームワークの記法です。

    public function LoadCSV($file, array $ycol, array $xcol, $hasHeader=true)
    {
        $xarray = array();
        $yarray = array();
        $handle = fopen($file, "r");

        //if first row has headers.. ignore
        if ($hasHeader)
            $data = fgetcsv($handle);
        //get the data into array
        while (($data = fgetcsv($handle)) !== FALSE)
        {
            $rawData[] = array($data);
        }
        $sampleSize = count($rawData);

        $r = 0;
        while ($r < $sampleSize)
        {
            $xarray[] = $this->GetArray($rawData, $xcol, $r, true);
            $yarray[] = $this->GetArray($rawData, $ycol, $r);   //y always has 1 col!
            $r++;
        }
        $this->x = $xarray;
        $this->y = $yarray;
    }
...

SQL

SQLは最も安定した言語です。
プログラミング言語にしては珍しく、ほぼ改修が入らず学んだことがずっと活かせる言語です。

SELECT
  date,
  COUNT(user_id) AS count_uu
FROM
  action
GROUP BY
  1
ORDER BY
  1

このように、HTML、CSS、JavaScriptは全く構文が違います。
それだけで理解するのが大変だと思います。しかも、実務では構文だけではなく、情報科学のロジックもふんだんに使います。

その他に、より問題だと考えている事柄としては、HTML、CSS、JavaScriptはすべて、技術の移り変わりが激しいことです。

新しい記法や、非推奨とされる記法、さらには動かなくなる記法すら出てきます。
新しいライブラリ、フレームワークと盛りだくさん追加されていきます。

JavaScriptのフレームワークとPHPのフレームワークで種類の数が全く違います。

例:JavaScriptのフレームワーク
AngularJS
Hyperapp
jQuery
React.js
Riot.js
Vue.js

その他にNode.js、Nuxt.js等も・・・それだけ、フロントエンド側で求められていることが多いということですね。よく調べてみると、フロントエンドのフレームワークにも関わらず、バックエンドの知識を当たり前に要求するものがあります。

例:PHPのフレームワーク
Laravel
CakePHP
zend framework
Symfony
FuelPHP

JavaScriptは見る限り、Angular、jQuery、React、Vueは現役です。
PHPもフレームワーク数は同等くらいですが、CakePHPがメインでLaravelが増加してきており、メインで使われるフレームワークは決まっている状況です。

バックエンドエンジニアですと、SQLは安定しているため、学習し続けるべきなのはメイン言語+αで済みます。
フロントエンドエンジニアは、進化し続けるHTML、CSS、JavaScriptをはじめ各種フレームワークの学習が必須です。

ちなみに、フロントエンドエンジニアの宿命として、デザインや触り心地の言語化、直感等も必要になってきます。
サーバーサイドエンジニアはサーバーとの通信速度(アルゴリズムの適正さ)やバグの少なさ、コードを書く速度等で能力は定量化しやすいですが、フロントエンドエンジニアはコードだけではない能力が要求されます。

そこまで頑張って得るものは多くはありません。
確かに自分で0 → 1ができるのは大きな強みですが・・・。

私が言いたいのは、
なぜフロントエンドエンジニアを(メインで)やりたいのか?
その他のエンジニア職種では何がダメなのか?
ということを彼らが理解しているしているのだろうかということです。

現役のエンジニアやIT業界の人に聞けばいいのに、と。

目指してしまう理由

一番目:わかりやすさ

表示側を作るのは素人にもわかりやすいし、今風のカッコいいサイトが作れるようになりそうですよね。(実はそんなに簡単ではないですが・・・)
自慢できる職業だと思います。

二番目:情報発信の多さ

フロントエンドエンジニアは数の多さと認知度の高さから、職業に関する情報発信がされやすい傾向にあります。

組み込みエンジニアの情報発信を見たことありますか?

僕はあまりに見かけない印象です。
情報を必要としている人が少ないですし、目立つ職業ではないので内々の情報交換や技術書での学習が多いです。

QiitaやTeratailなどが人気なのも要因でしょう。
フロントエンド以外の技術は基本的に見ないか、原典(説明書)および論文が仕事への理解として一番早いです。

日本語のやってみた記事は数多くあるのですが、コードだけ(何を考えてこのコードを書いたか説明がない)だったり、理解せずに数式をなんとなく書いてある(使用上の注意点が書いていないことやミスリードしている)記事が散見されます。
* QiitaやTeratailは良いサイトです。使い方を間違えなければ。
* 記事が転職等の実績として利用されつつあることに起因するのかもしれません。

それらの発信を職業にしている人も存在します。
そうです。インフルエンサーです。

オンラインサロン
自社開発
フリーランス

どれもキラキラワードですね。
ただよく考えてほしいのは、元々エンジニアの人たちがなぜそうなっていないのか?ということです。
彼らには本当かどうかを現役のエンジニアやIT業界の人に聞けばいいのに、と思いますね。

知っている方が動画配信をしているので以下をどうぞ。私の認識とほぼ同じです。
エンジニアのキャリアハックを配信「IT人事の毛呂淳一朗」

三番目:日本の現状と転職市場の活性化

日本の平均年収は400万円台です。
ちなみに、平均値は上位の値に引っ張られやすいので実情とは異なります。

例)4人(300万、400万、500万、1000万円)の平均年収
 ⇒ 550万円!??
一人が異常に高ければ、すぐに上がります。
それだと実感と合いませんよね。

実感に近い値としては、中央値で約350万円です。それ以下の人が約50%も居るのですが…。

IT業界は東京に一極集中していることもあり、ジュニア(駆け出し)レベルでも350万~が基本です。

・・・あれ?中央値を超えてない?

超えています。そういうことです。

つまり、低い年収をどうにかしたい人たちの入り口になっています。
それで駆け出しの方が多くなっているのかなと考えました。
(私はこの流れ自体は問題とは思っておらず、正常だと思っています。新しい産業にもっと人が移動すればいいとも思っています。)

ちなみに東京近辺は家賃以外は全然物価は変わらないです。

家賃は東京23区>東京郊外>千葉・さいたま等です。
住所を東京から千葉にすれば、ほぼ条件が同じような場所かつ駅にも近いのにも関わらず3~4万家賃が安かったです。

物価の面でいうと、東京・千葉は地方(例:奈良(実家)、栃木(前職)、熊本(大学・大学院))はほぼ変わりません。
野菜や地域の名産品が安いかな、でもそんなに変わらないかなという状態です。

ただし、東京は外食だけは高い・・・。ランチだと1,000円オーバーが当たり前でちょっと面食いました。
家賃が高いので仕方がないのですが。

解決策


複数の現役のエンジニアやIT業界の人に聞く、つまり一人だけを信頼するなという二点さえ注意すればよいです。

よくあるのは、
・給料が良さそうなので
・まともな労働環境で働きたかった
・友人に勧められて

だから、フロントエンドエンジニア・・・というのは少し安直ではないでしょうか。

なぜフロントエンドエンジニアをやりたいのか?
その他のエンジニア職種では何がダメなのか?
という問いは必ず付きまといますし、転職した後にもついてきます。

あなたが納得した道を選んでほしい。
その思いでこの記事を書きました。

あとがき


著者も29歳で製薬企業研究開発職からIT系職種(データ分析コンサルタント:機械学習や統計を企業の事業・業務方針コンサルティングに活かす)に転職した当人として、今の流れは危険だなーと思い記事を書きました。

もちろん、働いている場所によって定義が少しずつ異なるので、「あれ、これは書いてあったことと違うぞ?」と思うかもしれません。
バックエンドの方は内容によって複数言語を扱うのが基本だったり、サーバー側で突発的かつ大規模なアクセス増加に対応するためのクラウドであるAWSまたはGCPなどの知識が必要だったりと…。
実際はもっと複雑な問題なのですが、理解の簡便化のために問題を切り分けてお伝えしています。

元々趣味でプログラミング・HP作成をやっていたこともあり、フロント(HTML、CSS、JavaScript(JQuery他))もバック(PHP、Python、Perl、C系、MySQL)もインフラ(Linux)もちょっとはできる程度でした。

そういった経歴もあり、フロントエンドエンジニアも少し考えていた時もありましたが、上記懸念(技術更新早すぎやろ)もあり、デザイン系のセンスもないしでやめておきました。
昔は「JavaScriptはクソ」という扱いが基本でした・・・私は使ってましたけど。・・・それくらい大きな変動が10年以内でありました。

あなたは何がしたいですか?

どんなことに興味がありますか?(または、どんなことが許せませんか?)

カッコいいことに引っ張られていませんか?

これは自戒を込めて書きました。
私は今流行りのデータサイエンティストと名乗れます。でも、それは間違っていると思います。
実際の仕事は機械学習、統計解析の手法「も」使いますが、ビジネスサイド寄りです。
職種名はビジネスアナリストが非常に近いです。
エンジニアの方とも、データサイエンティストの方とも、コンサルタントの方とも働いているので、少しは目端が効くようになってきました。

・お客様にいかに現状を認識していただくか
・どこに事業の問題点があるか
・どうすればユーザーの苦しみを解決でき、事業が伸びるか

この3点を一緒に考えて、並走しています。
以前取れなかった(らしい)契約継続もしていただきましたし、満足度も高いのかなと思います。
事業を良くしていくことが非常に面白いですし、誇りに思っています。(給与はまだ安いけどね)

そんな職業に一人でも多くの人が会えるよう祈っています。
ちなみにTwitter > R(あいれい/おいす)で相談していただければいつでも対応します。
プログラミングの基礎をはじめ、統計や機械学習の手法や就活等もなんでも相談してください。
ただ、一人だけを信頼するなは気にかけておいてください。

それでは!

おすすめ記事

この記事を読んだ方には、下記の記事が読まれています。

未経験がエンジニアを目指すことって、それって意味あんの?

[Meisyo]ゲームのUIを改善し続ける意味とは

1ヶ月に3回はUIが変わっているMeisyo。

何故変え続けているのか。

説明しよう!

今悪いポイント

簡単に言うと新規登録ユーザーさんが定着しない!

チュートリアルでも最終ステップまでの到達率が75%程度。

29人→1W後に定着しているかも?がたった5名(17%)。

ただ、その5名は非常に良い定着率です。
1W後継続者の2ヶ月後継続率は50%!(大手のゲームだとここまで行きません)
・・・とはいえ、まだまだ改善する点があると考えています。

考えていること

ユーザーに対してもっとできることはないだろうか?
せっかくゲームを始めようとしてくれたユーザーにもっとストレスなく、ゲームを理解してもらえないだろうか?と。
理解して辞めちゃうならしゃーないと思ってます。
それはそのゲームが悪い。

ただ、このゲームのコアとなる「自分が見出した固有の選手」の育成要素、公式戦の楽しみ等・・・たぶん理解する前に辞めているユーザーが多いのではと考えています。
単純に自分がやって楽しいし。特に公式戦は楽しい。(勝てないけど)

加えて、プレイしてくれる(orしてくれた)ユーザーがコンテンツになる稀有なゲームかと思います。
一人一人育成方針が違うし、選手も違うしでなかなか勝てない。(パラメータ強ければ勝てるわけでもないし)

他のゲームはどうしてもキャラゲー(他の人も持ってるキャラを使わざるを得ない、キャラ格差、レアリティ(ガチャ)競争)になるので、・・・それをどうアピールするかがワカリマセンので改善を行っています。
個人的には「最強パーティ」が存在するのはダメだと思ってます。(最強を追っかけるのも疲れますし)
マネタイズどうすんねんっていう回答も探さないといけない。

見るポイント

仕事でデータを見ている感じでは、

まず、チュートリアルで辞めるユーザーが多い。

どこのポイントで離脱しているかを確認し、「離脱要因は何か?」を考える。
例えば、「ロード時間が長い」や「リセマラポイント」での離脱が多い。
ログを見ている限り、1分も待てないユーザーが多い感じがあります。
ただビッグタイトルでなければ、そこまでひどくはない傾向も。
(ユーザーの質でしょうか・・・そもそもそのゲームをインストールしようと思えない系ゲームもありますし。その時点でそりゃ辞めにくいですよね。)

キャラゲーやってるのでリセマラは仕方ないと思います。
同系統同Lvなのに「1キャラ入れ替えるだけでダメージ2~3倍余裕でした^^」的なのになっているので、最初に当てないと話にならないですし。
課金ユーザーでも本当に当たりが出なかったりでよく続けているな(しかも課金してるし)みたいなユーザーが数多くいます。彼らはスゴイ。

次に、そこまで定着させている原因が何かあると仮定し、定着ポイントを考えます。
何を中心にプレイしているか、プレイ比率の推移はどれくらいかを検討します。
ここらへんで機械学習に掛けたりします。
割と「プレイ回数が多い人は定着しやすい」とかいう当たり前な答えが出てくるのでそれはカットします。

「仮説を立てて、結果に意味がありそうなことをさらに深堀りし、解釈する」
難しいんですよね・・・

実施例

Meisyoでは、分析をそこまで深くはやっていない(というより一人ずつのログが見れる)です。

ただ、「公式戦をプレイしてくれるユーザーはだいたい継続してくれる」という結果が出ているので、
そこに新規登録ユーザーさんの意識を向けようということをやってみています。

まずMeisyoの育成系が多すぎるので「どこに触ればいいかわからない可能性が高い」と考えて、
08/18アップデートも育成をこうやるんですよ的なことを追加しました。

あとは理解しやすいストーリーになっているかどうか。
再度読んでみて突拍子もない話を排除したり、ユーザーが求めているモノ(仮説:自分の思い通りのチームを作りたい)に合わせてチュートリアルを組み立てたりですね。
あくまで数値は数値(結果)でしかないので、「ユーザーが何を考えたか」は人間にしか理解できないです。

まとめ

全てはユーザーのためにと言いたい所ではありますが、
ユーザーにできるだけこのゲームで遊んだのが無駄な時間だったと思わせたくない、後ろ向きな考えがあります。

UIを改善し続ける意味はユーザーのためでもありますし、自分のためでもあります。
本当にコレは面白いのか?をいつも問い続けたいですね。

ビッグデータはメンデルの法則(表現型)を調べているだけ、理由(遺伝子)を調べる時代が来る

人が認識している人(個人としての人)とAIが認識している人(群としての人)には違いがあるのかもしれません。

個人は遺伝子を元にした多様な細胞が集まり形成されています。
群は(??)を元にした多様な人が集まり形成されています。

今はまだ「群の動きの理由」がわかりません。
(??)とは一体何なんでしょうか?

もしかしたら、体内を参考にすると良いのかもしれません。

例で上げるなら、成功した起業家と抗体産生の近さでしょうか。
群では、ある問題の解決策を提示・行動する人(起業家)にお金が舞い込み、その人の行動を後押ししていきます。
体内では、「体外から侵入した病原体を排除する」という問題解決策をもつ免疫細胞は、度重なる淘汰を乗り越え一気に生産されます。
似ていると思いませんか?

「ダイバーシティがなければ弱い組織」
これは個人的にはちょっと疑問ですが、体内から見れば正常な判断です。
多様性を持つ、解決策に多様性を持つ細胞が居なければ、変な問題が浮かび上がってきた時に対応できないでしょう。

このように個人を元に群を考えることは意外とよいのかもしません。

今はビッグデータが持て囃されています。
「なぜビッグデータのように人が行動するのか?」ということはわかっていません。
わからなくても別にいいですね。お金が儲かるものですし。
(売るのはゴールドラッシュと同じようにスコップにしよう!)

ただ一言だけ言えるのは、ビッグデータはメンデルの法則(表現型)を調べているだけです。
間違いなく理由(遺伝子)を調べる時代が来ます。

理由がわかればビッグデータなんて得る必要がなくなるわけですし。陳腐な知識になってしまうわけです。(人間がビッグデータを知覚できるかは置いといて、ですが。)

ただ、がん細胞のように、爆発的に増えて止まらず成長するものには体には打ち手はありません。果たしてデータは群にとって何なんでしょうか?

swiftでゲームプログラミング(開始前)

iPhoneアプリを開発するために必要な言語「Swift」

そういえばこれまで適当な書き方で無理やり実装していたなと思い、教科書的なものを買いました。
初心者の人は独学でやるより、教科書買ってやった方が絶対早いからね・・・買おう。
独学だと他の人に読んでもらったりするチャンスがあっても「何これ???」ってなる可能性が高い。

加えて、クラス?インスタンス?ってなっていたので、どうも初心者向けらしいというものを選択。↓
絶対に挫折しない iPhoneアプリ開発「超」入門 増補改訂第5版 【Swift 3 & iOS 10.1以降】 完全対応

1つ前に買ったものはSwift3に対応してなかったので「構文が違うぜ!(英語)」ばっかり出てました。
買う場合は注意してください。
エラー対応の練習になるから結果的に良かったけどイライラするのは否めない。。

あとは「ゲームプログラミング教本」的なものを購入した方が良い気がします。

重要なことは計画的にやること!
1. 「どんなゲームが作りたいか?」を明確にする。
2. 資材(Mac、教科書など)を買う。
3. 教科書を「1日何ページ」と決めて進める。
4. 簡単なゲームを作る&あったらいいなアプリを作ってみる
5. ゲーム開発開始!

「1日1日進んでいる」ということを実感しつつやらないと折れそう。
教科書はKindleでもいいけど、本にした方が「ここまでできた」っていうのを実感できるのでオススメ。
ただ、例えば最初から「大規模な戦略ゲームを作る」ってしても行う工程が膨大すぎるから、上記のように細かく計画してぼちぼち進んでいけば、いつの間にか割と進んでいることに気づくのです。
そして、その中で自分にとって最も効率のいい開発の進め方がわかってきます。
そこからが本当の勝負かもしれないけど、そこまで行ける人の方が少ないような気がします。

iPhoneアプリを開発してみよう

最近ずっとiPhoneアプリで遊んでて、
「なんか頭使うゲームないな?」と思い(”本質的には育成ゲー”が多すぎてゲンナリ)
「複数人でのRTS」があればな~と。

「他ゲーに文句あるなら自分で作ったらええやん」というわけで購入しました。

新しく何かに挑戦するときは、
「手本となる人(またはモノ)を参考にする」
「自分で手を動かす」
が素早くしっかりとスキルを獲得できるかと。

独学もいいですが、どうしても無理そうならセミナーなども充実しつつあるのでそれもよい選択肢かと思ってます。

iPhoneアプリの場合はMacbookも必要なのでそれも購入しますか。(==;

[PHP]まとめ読みをPSRで改良する(1)

this trash wanted to go in a can, but the can was too full, so it's waiting for the next one

今回の改良対象

→ ミニ四駆まとめサイト

なぜやるのか?

  • PHPのバージョンアップによる速度の向上
  • 一番はこれでしょう。
    今のはPHP5.2で動いています。
    1割から5割の速度向上が見込まれます。
    1秒でも早く表示することによりユーザーの時間を無駄にさせないためです。
    まとめサイトは居続けてもらうのが目的ではないので速さが大事。

  • やってみないと理解できない
  • PHPのオブジェクト指向を理解しようとする初心者の立場で「どこがわからないのか?」「わかりにくいのか?」を分析します。
    「プログラム = 敷居が高い」のは、そういった解説も少ないからじゃないかなと思います。

  • 人は忘れやすい
  • 書いておかないと「どこがどうだったか」なんて忘れます。
    書いておくと後で解説を書くときに書きやすいし、丁寧に書ける。

  • PHPのバージョンが低いとセキュリティホールがある
  • まとめ読みの質の向上
  • EBS3(戦略ゲーム)を作りたい、やっぱり配布したい
  • せっかくHTML5とCSS3が出てきたのに作らないのはないでしょ!というわけです。
    個人制作のゲームがほぼ死滅しているのでチャンスだと思ってます。

  • 現在のコードが酷い

いろいろあります。/(^o^)\

現在の惨状

現在のコード(一部)

# 期間ランキング記事
$i=1;
$sql=mysql_query("SELECT * FROM article ORDER BY count DESC");
while ($ART=mysql_fetch_assoc($sql)){
	if(!$ART[count]){break;}
	#集計
	$HASH=explode($SET[INTER],$ART[id]);
	$blogid=$HASH[0];
	$time=$HASH[1];
	$WEEK_BLOG[$blogid]+=$ART[count];
	$COUNT_BLOG[$blogid]+=$ART[count_all];
	#表示
	if(preg_match('/PR:/',$ART[title])){continue;}//PR排除
	if($html_art_week&&$i<50){$html_art_week.="<tr><th></th></tr>\n";}
	if($i<50){$html_art_week.="<tr><td><strong>${i}位&nbsp;<span style='color:#FF8C00;'>$ART[count]</span>counts</strong><br><a href='$SET[path_link]?q=$ART[id]' target='_blank'>".escape($ART[title])."</a></td></tr>\n";}
	$i++;
}

「うーんこれは一体・・・」みたいなコードです。
可読性低い、速度考えてない、なんでも言えるような状態。

これではEBS3を作っても誰も改造できないコードになってしまいます!

次の記事

更新したら書き換えます。