Twitterでふぁぼったものをひたすら試します

ScalaMatsuriに行ってきた

う〜ん、脳内はSotsuronMatsuriでござるよ……

スポンサーCM

からあげ映像はダメ。現物支給して。
ゲーム画面もゲームしたくなるからダメ。

こういうのっててっきり運営側の用意したスライドやBGM流すもんかと思ってたけどCMという手段もあったな。

行動規範

最近重要視され始めているブツがなんとアニメーションで登場!声優さんつきでちょうびっくり。
おべんとうにベジタリアンべんとうやハラールべんとうもあって時代の最先端を行ってる感じある

肝心の中身

Refactoring in Scala

同じ型の別のものを間違えて代入しないようにするにはどうすればいいか問題。例に上がっていたのはuser.idとboard.idでどちらもLongなのでコンパイル自体は通っちゃうという状況。

対策としては簡易的なものも含めると

  • typealias
  • tagged type
  • value classes
  • phantom type

こんな感じ?いろんな方法が出てきた。ライブラリで採用しているものもあるらしいのでそれを使えば乗っかれる
でもって、↑で作った型といつもの型との変換の考え方。これもライブラリに乗っかれたりするみたい

  • Iso
  • Prism

Scalaで始めるDeep Learning

機械学習実演!時間とGPU無しの関係で簡易版だったけど。レイヤーが深くなると大変みたい
courseraと本の紹介があったので後で上がるであろうスライド待ち

楽しく役立つ Scala リファクタリング

なんとGitHub - ornicar/scalachess: Chess API written in scala. Immutable and free of side effects.に対するリファクタリングライブコーディング。
メソッドチェーン調子こいて長くつなげるとわけわからんからダメ(途中で切って中間状態に名前つけろ)とか……他言語でも気をつけないとね。

「case classにすればtuple overloadにしても固有のフィールド名で呼び出せて分かりやすくなる」とかそういうcase class1行書いたら解決みたいなところはScalaずるいから許してない

Dockerをベースとしたインフラ上でのPlay frameworkアプリケーション本番運用ノウハウ

PlayとDockerとJenkinsをどう繋げてデプロイするか問題。
鯖周り詳しくなくて辛い

アジアから Scala OSS に貢献するということ

意外とOSSの中の人がオーストラリア在住で時差が関係なくなりすぐ対応してくれることもあるらしい。

OSSにissue投げて数時間で帰ってきて「夜更かしか!?」って思ったら日本人だったことある。

懇親会・2日目

Scala界隈よくわかんないので行きません
卒論やばいので帰る。
胸張って言える早退理由がない…ていうかほんと面白そうな話題ばかりなのに体は1個しかないし分裂しそうになった

その他

山本裕介 Yusuke Yamamoto on Twitter: "Twitterのロゴ利用ガイドラインでは鳥が喋ってるみたいに吹き出しつけるのダメなことになってます。来年のご参考まで・・・ https://t.co/1CvYiKOK0O #ScalaMatsuri https://t.co/GLWma0tm0a"

そんなルールがあったのか、、

みなさん2日目も楽しんできてください私は卒論書きます

雪見だいふくをチーズと一緒にトーストした

雪見だいふくハーゲンダッツ抹茶の次くらいに好き。ハーゲンダッツは高いから、普通はじゃんぼちょこもなかか雪見だいふくかがりがりくん。

材料 分量
食パン 1枚
とろけるチーズ シート状のやつなんて持ってないよパラパラ
雪見だいふく 1個
シナモン 気分

トースト。

f:id:S_Shimotori:20160112213122j:plain

せーの

f:id:S_Shimotori:20160112213040j:plain

ウオオ溶ける溶ける。しかしそこまで広がらないのがもちパワー。

確かに、ただアイスの甘さだけじゃなくてチーズの味がちょっとしてバランスは取れてる。
でも個人的には溶ける系チーズあんま好きじゃないし、なんかもういっそパン+雪見だいふく+シナモンでいいな。
ていうか雪見だいふくとシナモンでいいな。トーストするのめんどい。

スマホゲーがなんたるかを理解するためにスマホでゲームやった話

実質ソシャゲと読み替えても問題がありません。

なんでやったの

前に、「俺は毎年三が日に新しい言語を1つやる習慣がある」とおっしゃっていたおじさまがいたので、その真似。
新年だからね。新しいことにチャレンジ。

前置き

対象

よーしパパランキング上位10個やっちゃうぞー
1月1日の20時頃確認したところによると、iOSにおいて売れ行きの良いゲーム(トップチャート・ゲームカテゴリ・Top Grossing)は

  1. モンスターストライク(モンスト)公式サイト 2013年9月27日
  2. パズル&ドラゴンズ(パズドラ)公式サイト 2012年2月20日
  3. 白猫プロジェクト 公式サイト | 株式会社コロプラ【スマートフォンゲーム&位置ゲー】 2014年7月25日
  4. スマホでフェイト!|Fate/Grand Order 公式サイト 2015年8月12日
  5. LINE: ディズニー ツムツム|ゲーム|ディズニー 2014年1月29日
  6. グランブルーファンタジー 2014年3月10日
  7. アイドルマスターシンデレラガールズ | バンダイナムコエンターテインメント公式サイト 2015年9月10日
  8. 戦国炎舞 -KIZNA- | 株式会社サムザップ わかんないけど2013年7月にAndroid版開始らしい
  9. 実況パワフルプロ野球(iOS/Android) 2014年12月18日
  10. FINAL FANTASY Record Keeper - ファイナルファンタジーレコードキーパー(FFRK) 2014年9月25日

である。タイトル右はおおよそのサービス開始日であり多分違う。
パズドラ先輩強い。2015年組ながらランクインした2ゲームも相当の実力の持ち主……これはもともとの固定客のせいか?

被験者

わたし(S_Shimotori)
家庭用ゲームの特に任天堂をこれまでやってきた。iPadには音ゲー各種が入っているが、思い出した頃にDeemoをやるくらい(課金した)で、ゲーセン定番のあれやそれについては入ってる曲を一通りやって飽きた。

その他

お金ないので課金はしません><
面白かったら中の人たちのおやつ代くらいは払おうかなっていう程度。


結果

全体に言えること

ぐぐらびりてぃ

悪い。おい、SEOちゃんとやれよ。「ゲームタイトルフルネーム 公式」って入れてようやく出てくるとかダメだろ。↑で列挙するのめんどくさかったぞ。
ユーザが検索して出すのは攻略サイトと両ストアであって、公式からの情報を仕入れるのもSNSの公式アカウントであり、公式サイトに用はないという表れなのかもしれない。きっとそうだ。

定期的にSO5とエスコン7の公式サイトに通う私は、ソシャゲやってる世間の皆様からすれば異質な存在なのかもしれん……

公式Twitterアカウントについて

公式認定のないアカウントが多い。なりすましが多い時代……まあ、これくらいの規模のゲームになればFF比を見りゃわかるからいらないな。
ツムツムの障害情報ってみなさんどうやって取得してるんだろう。LINEユーザ向けだからLINEのやつで足りるのか。

この中でプレイヤー以外の人が目にするのはどれだろう。私はパズドラのやつしかない。「新しいキャラの絵来たぞ!(以上)」ってノリだからか?他のはイベント情報ばかりでやってない人には小難しいツイートだし。

RPGにおける選択肢・SKIP機能

これ、家庭用ゲームにおける周回プレイ用じゃないの。SKIPはまだわかるけど、fateの選ばなかった方の選択肢のシナリオってどうするんだろう。選択肢どっち選んでも結果同じっぽいのもあるが……。

ステータスバーの表示

iOSでいうとUIStatusBarっていうんだろうか。通信制限怖い+おうちのルーターがゴミということもあってどうしてもwifi接続状況が気になる。
が、意外とゲーム中に表示がない。表示がない方が多い。そんなもんなのか。邪魔だしな。

気づいたら4Gに切り替わっててauの7GB/月をもりもり食ってたとかはやめてほしいし表示してほしいっす。せめて最初のダウンロード中だけは……

課金注意

出るゲームと出ないゲームがある。
言葉でしっかり注意すべき人は未成年だけだし、こういう自主的な取り組みでもそこだけ注意してもらえばよさそう。未成年からの売り上げってどのくらいなのかな。流石に廃課金社会人ほどじゃないだろうし、課金勧めても問題になるリスクしかないよね。あ、でも今時期だとお年玉が入るのかな。

商取引ナントカの表示は、基本は探そうとしないと出ない(ヘルプとかそういうつまんないやつと一緒に並んでいるなど)。ガチャ画面中に表示ボタンを出すやつもある。

利用規約

同意するボタンタップでスルーできるやつ、
タップすると「本当に読んだ?」って聞いてくるやつ(別に読んでなくても再タップで進めた)、
2ボタン同時タップを要求してくるやつ。

チュートリアル

スタミナ制なので1度にやれるクエスト数が限られるわけだが、序盤はチュートリアルでプレイヤーに経験値が溜まりまくってすぐレベルが上がる。で、レベルが上がるとスタミナ全回復するので間を空けずに次々チャレンジできる。
流石に、よっしゃ始めるぜ!って意気揚々としている間はスタミナ切れしない。私としては大体慣れてひとつ満足した頃にレベルの上昇が止まってスタミナを使い果たしたので、良い頃合いだった。

そしてフレンド申請へ

ソシャゲなので知らない誰かのキャラクターを助っ人で呼べる(単独出撃ももちろん可能)。ばりばりプレイしている人のが出るので安定して強い。
つまり序盤のステージは助っ人キャラで一掃余裕。負ける要素なし。

でも、ほとんどは何も考えず助っ人だけ働かせれば完璧クリアというわけにはいかない。速攻クリアとか被弾数抑えるとか。とりあえず助っ人でクエストクリアはおさえておいて、その中でじっくり最善手を考えることができる。
それがソシャゲにおける序盤のゲームバランスじゃないですかね。白猫はこちらからお助けキャラを操作できないので無双できちゃう(されちゃう)ことが多いけど、クエストによってはお助けキャラを呼べないこともあってその時は自力で頑張らなくちゃいけない。
助っ人システムいらないくらい簡単だとフレンド申請してもらえないし、難しすぎたらそれはそれで……その方が課金欲湧く?

大抵のゲームは「フレンド申請」と呼ぶが白猫は「フォロー」。ソシャゲのフレンド申請はどのくらい気軽に許可を出すものなのかよくわからない。パズドラは私にすら申請くるくらいだし挨拶くらい気軽なんだろうな。
いずれにせよ、フォロー形式のほうが弱小プレイヤーも気軽にガチ勢に声をかけられる、ということに間違いはないと思う。
この辺の違いから来る効果をデータ上の数字で見てみたい。

UIとかデザイン面とか

今回10個しかゲームをやっていないしジャンルもバラバラなので、ソシャゲ含むスマホゲーのUIのテンプレやその変遷については正確に述べられない。

タブ

画面下端のアレ。
ツムツムはシンプルすぎてタブが存在しないので載せていません

モンストはちょっとアイコンが大きくなる
f:id:S_Shimotori:20160104121511p:plain
パズドラは枠を強調
f:id:S_Shimotori:20160104121551p:plain
白猫はアイコンを明るく
f:id:S_Shimotori:20160104121700p:plain
FGOは常時表示ではなく、メニューをタップすると出る
f:id:S_Shimotori:20160104121818p:plain
グラブル。実はMyPage〜Topが画面下端に固定されていない。後述 f:id:S_Shimotori:20160104122917j:plain
デレマス f:id:S_Shimotori:20160104122017p:plain
戦国炎武。違いがわからず f:id:S_Shimotori:20160104122048p:plain
パワプロ。違いがわからず2
f:id:S_Shimotori:20160104122114p:plain
FF。輪郭強調 f:id:S_Shimotori:20160104122227p:plain

今自分がどこにいるか表示する方が普通だと思う。まあ表示しなくても致命傷にはならないけど。
表示する方が普通ゆえ何か理由があるのかもしれない。が、思いつかない。誰か教えてください。

この中ではグラブルのレイアウトが唯一異なる。何しろ画面固定ではマイページやらリロードが優先的に設置され、タブっぽいやつはスクロールした先に出てくる。
次の画像はマイページ。画面全体にメニューが散らばっている。このページも下まで行けば↑に貼った画像のようなタブが出てくる。

f:id:S_Shimotori:20160104121918p:plain

他のゲームにはないリロードボタンがあったり読み込み時の表示の挙動だったりを見る感じ、実装方法の問題でこうなってしまったんだろうなあという予感。実際はどうなんでしょ。

ガチャ

白猫と戦国炎舞の課金画面はもうちょっとなんとかならないですか。
1画面にある情報量多すぎ。

たとえばFGOは横にスライドすると違うガチャが出てくる。
f:id:S_Shimotori:20160104120401p:plain

ここで白猫と戦国炎舞をご覧ください。

f:id:S_Shimotori:20160104120456g:plain f:id:S_Shimotori:20160104120800g:plain

どれが何でどこタップしたらいいんだよ!!
課金させる気あんのかテメェ!!!UI担当ごめんなさい
儲かってんだからこれでもちゃんとみんな課金してんだよな。ということは問題ないUIだよな。

記事が長くなるので載せないが、グラブルも縦に長い。ただし、トップにスライドショー的なのがあって気になるやつをタップするとそこまで飛ばしてくれるのでまだマシな方。

その他のゲームだとタブで切り替えていたり、シンプルに宣伝をまとめて目立つボックスで区切っていたりする。

シナリオ

ソシャゲにシナリオを求めるのはダメなのだろうか。
シナリオが存在するものといえば白猫・FGO・グラブル・デレマス・パワプロ・FFかな。

キャラ大集合お祭りの要素のあるFGO・FFは、あくまで既存のファンが対象なので世界観の説明が良くも悪くも不十分。FGOはいきなり難しい単語が飛び出る。奈須きのこさんの表現するあの世界観の雰囲気を知ってないとびびりそう。FFは一応各シリーズのシナリオを追っているとはいえこんなことあったよねーくらいの説明の薄さ。
お祭りゲーなのでお気に入りのキャラがワイワイしていれば合格といえる。

デレマスもちゃんと理解しようと思ったらアニメからやらなくちゃいけないんだろうけど、ファンタジー世界の話じゃないのでまだ初見でもついていける。と思う。ゲームがメインっていうよりアイドルと話したり踊っているのを見たりするのがメインだろうし、プレイヤー側のシナリオを読む気力も十分のはず。
パワプロも現実に存在する高校球児をもとにしているわけで、理解しやすさはFateと愉快な仲間たちの数倍はある。

一方白猫とグラブルについては、どちらも「冒険しようぜ!」でいたってシンプル。
……が、なんか置いていかれている気がしてならない。

「お前は冒険に出かけたいと思っている少年なのだ!この世界には人類未踏の場所がある!そこに行きたい!そうだろう!そしてお前はよそから来た人と出会う所から始まる!」
「あー、うん、まあ、そうだったかな?そういうことにしておこう」

バトル要素とかわいいおんなのこがいれば出だしはいいのかな。いいか。

Activity

通信してる最中にくるくる回すアレな。
どのゲームも基本「Now loading」を出すが、くるくる回すことも多い。

独自のくるくるを回しているのがモンスト・パズドラ。
f:id:S_Shimotori:20160104125304j:plainf:id:S_Shimotori:20160104125333j:plain
なぜかパズドラは回す向きが逆である。なぜだ。理由を教えてくれ。

他のゲームはNow loadingオンリーか併用かな?使い分けがわからないのでなんとも。再接続時にくるくる回している予感がする。FGOはNow loadingとconnectingを併用だし。

個人的にはくるくるを使うならモンスト・パズドラと同じく雰囲気に合ったものを自作した方がいいと思う。ゲーム側のデザインと合ってない。

個別のゲームに対して

モンスト

爽快感がある。ゲーム自体からしてそうだし、敵撃破後のアイテムもわざわざ画面タップして拾わなくちゃいけなくて、ちゃりんちゃりんちゃりーんとSEを鳴らすのがよい。
システム・UIをパズドラからパクった……言い方良くないな。とにかく、いい所を取り入れている。後発だけあってパズドラよりモンスター選択が一括でできて便利など。

割とすぐレア確定のガチャを引けるのでパーティが賑やかになる。課金アイテム5個で1匹くれるからね。
どのくらいレアを安売りするかは難しいとは思うけど、あんまりレアくれないのも課金する気失せるからね。課金したら絶対可愛い女の子来る保証が必要……なんでもないです。

画面横端だと攻撃しにくくて泣いた。
あと、クエストボスが特に人間臭いわけでもないのに断末魔のセリフをしっかり喋るので違和感ある。

パズドラ

名前入力文字数制限書けよ!
モンストとの違い(正確にはモンストが採用してないところ?)でいえば、チュートリアル終了後にそこそこのレアガチャさせてくれたところ。チュートリアルの流れで絶対ガチャをさせるか、石をたくさん与えて気軽にガチャできるようにさせるかの違い。

せっかく序盤にレア確定ガチャしてもパーティのコスト制限でレアなやつ1匹しか入れられなくて泣いた。

白猫

ARPG感満載。その分他と比べると操作が難解になり、

チュートリアルが動画とか(スマホ画面に対する指の動きがわかりやすくはなるが見るのめんどい)
マップの位置とか(右手操作するとマップが手に隠れる)
キャラ交代ボタンの位置とか(戦闘中間違えて押す)
カメラの問題とか(流石にスマホゲーでカメラ位置操作はできないので、大きなボスモンスター相手だと自機が隠れて大変)

とにかく操作に慣れなくちゃいけないな。
作る側もプレイする側も大変だ。この辺が良く作られているかは一通りプレイした後慣れで解決される問題かどうかによると思うので、コメントは控える。

FGO

ただの戦闘画面なのに酔いそう。
RPG感満載。すでにあの世界観を知っている人向けなんだろう。いきなりやってもキャラわからんし。単語むずいし。
戦闘中取れる行動がランダムで決まることもあって個人的にはつまんなかった。戦闘そのものを楽しむんじゃなくて、キャラが武器振り回してたりシナリオでのやりとりだったりを楽しむゲーム。だから戦うのつまんないしシナリオだけ読みたい

ツムツム

ツムツムよく売ってるよね。現実世界に常設のショップがあるとそっちでの売り上げアップも見込めてウマウマなのかもしれない。ディズニー様さすが。

シンプルなミニゲーム

シンプルすぎてディズニーのキャラに思い入れないから3秒で飽きた。サーセン
思考停止してやるぶんには面白いかもしれない。

グラブル

テメェの会社儲かってんなァ!

なうろーでぃんぐのルリアいいね。餅食ってた。正月仕様とかなのかな?
もう少しシナリオ進めないとゲームとして面白いかは判定くだせそうにない。卒論そろそろやらないといけないんで許して。

デレマス

アニメ見てません。
初期センターはしぶりんとかいう子にした。

元からしてキャラ観賞用だし、それに特化している。音ゲー要素もみんなのリザルト画面見てると理不尽な難しさはなさそう。

SSRを引くとこんなにいいことあるんだよ!!!!!!!
って感じで笑った。訓練されたプロデューサーが既に市場で待機しているわけで、課金欲のくすぐり具合に感心しながらやるとそれもまた面白い。

戦国炎舞

これ初めて知った。
ロード中にミニゲームってバンナムの特許だったよね(特開平8-155145・特願平6-329695・2742394)。初回起動直後のでミニゲームができたけど、ネット回線経由のデータダウンロードってこれの範疇に入るんだろうか。記録媒体からって書いてあるから違うのかな。

キツイ点としては、↑のガチャ画面で挙げたように全体的に画面中の情報量が多くて何が何だかわからないのが1つ。
2つ目は、コマンド入力にフリックを採用した意図が読み取れなかったこと。サクサク進めたかったのかなあ。だがどうも読み込みだか通信だかでサクサクはいかない。わたしの回線が悪いのかなあ。でも、他のゲームはさくさく行ってるし、このゲームが悪い気はする。ばんばん武将をゲットできるあたりはサクサク感があると言えそう。

グラブルやFGOもそうだけど、モンスト・パズドラと違って全員人間だからいいよね。ぞんざいに扱えない。私はモブモンスターにはあまり興味がないから、モンスト・パズドラの安売りされてるモンスターの子達をいっぱいくれてもあまり嬉しくない。
その分絵やら声やら用意するの大変そうだけど。中の人がんばれ。

パワプロ

最近パワプロTAS盛んだよね。(パワプロやったことない

名前入力文字数制限書けよ!(2回目)
他のゲームと違うのは、初期設定後チュートリアルでホーム画面ではなく最新情報とプロスピバナーの画面に飛ばされたところ。さあ始めるぞって人にいきなりそれ見せるのか。

パワプロは元からボール打つゲームだったと記憶しているが、これまで家庭用ゲームでやってきたことをそのままスマホに取り入れても問題ないくらいシンプルなゲームなので従来通りの遊びやすさ。
ただ、ポケモン努力値振るの飽きた人間からするとこの手の育成はやりたくない……すまん。安定してヒット打てるようにはなりたい。

FF

ナンバリング関係だとFF4(DS)とDFFしかやったことないぞ。あとFFT

シナリオの話は↑に書いたとおりだし、既存の客を相手にしているだけあって、クエストを完璧にクリアするためには「ボスモンスターの弱点を突く」といったお題をこなさないといけない。知らんがな。

課金要素は各シリーズのキャラではなく、武器とか技とか。割と早い段階から自分の好きなキャラ数人は加入させられる。要するに、課金しなくても最低限の顔と曲は拝める。ありがたや。

まとめ

対象ユーザとか現実世界での盛り上げとか課金欲の煽りとか、考えながらやると興味深い。何しろ面白くないと売れないし。
UIデザイナーも大変だよね。めっちゃ文句言ってすんません。

Cocos2d-xで初めてゲームを作ろうとしたはなし 【Cocos2d-x Advent Calendar 2015 25日目】

誘導

この記事はcocos2d-x Advent Calendar 2015 - Qiitaの25日目です。
昨日はmk18 - Qiitaさんの記事でした。

本題

自己紹介

わたし「おっ、クリスマスじゃん。メリークリスマース」
わたし「今年はサンタさんに卒論と学士とインターンをお願いしてたんだよねー。わくわく」
わたし「……」
わたし「進捗がない……」

Cocos2d-xは卒論の進捗のなさとともに爆散した

最終日に爆散してすいません。許してください。明後日発表なんです。

※バージョン3.9として聞いてください。
Xcodeで開発してます。そもそもiOS以外の事はわかりません。iOSの事もわかってません。

Cocos2d-xを開発して思ったまとまりのないはなし

Hello, world!

cocos run -p ios

f:id:S_Shimotori:20151202132505p:plain

Git管理

.gitignoreがわからない。調べても誰か個人のgistくらいしか出てこない。有名なライブラリなんだし有志でメンテしてるものとかありそうだけどねえ。

入門サイトについて

3.9だっていうのに日本語の解説サイトがない。あっても2.xで、メソッド名変わってるので非常に辛い。公式リファレンスを読んだ方がいいということがわかった。

3.x系で役に立ちそうなところ:

無名というわけでもないのにぐぐらびりてぃ激落ちくん。
同じく+1.0で関数名変えてきたSwiftXcodeパワーで新しい関数名を提示してくれたので、あれは超ありがたいことだったんだなあって思った。涙出そう。

いつもの

f:id:S_Shimotori:20151203130830p:plain

jsonについて

このままでは誰の役にも立たない記事になってしまうので、ソースコードを抜粋したいと思う。
今回、「きっと自分はどこかのサーバからゲームデータを引っ張ってきているんだ!」というシチュエーションを想定しjson形式でデータを保存した。実を言うと鯖と通信の手間を省いて.jsonファイルに直書きしている点については勘弁して欲しい。

さて、Cocos2d-xにはspineという何かが含まれており、そいつがjsonパースするやつを含むらしい。でも、微妙らしい。(参考: spine/Json.hを使うべきでない4つの理由 - Blog :: Meatware)

そこでpicojsonなるものを使ってみることにした。C++用なので、Cocos2d-xから離れてももうわたしはjson怖くない。

以下、入出力やら何やらで fstreamiostreamstringiterator を使ってたり使ってなかったり。

picojson::value hogeValue;  // パース結果が入る
auto hogeJson = FileUtils::getInstance()->getStringFromFile("ファイル名");  // 本当ならここで鯖から引っ張ってくるはずなんだ
if(!picojson::parse(hogeValue, hogeJson).empty()) {
        // えらー
}

これで hogeValue にパース結果が入っているので、

でなんとかなる。以上。それだけ。かんたん。

力不足を感じる

現状報告はコレの一言。これ以外に言うことがない。
作ってて非常にストレスがたまる。何しろ設計がわからないのですぐごちゃごちゃしてイライラする。超生産性がない。

  • 遊びとしてのゲームの質の追求これをやってる暇はない
  • 設計の質の追求
  • C++やCocos2d-xをはじめとする言語・ライブラリ群の使い方の追求

さてどうしようか。

設計について

.cpp1枚で済む程度のミニゲームならわーっと書いてしまうのだが、正直に言って今回はいろいろ試そうとして拡張しているのでそうはいかない。(その前提が1番いけないという説も十二分にあるが現実は直視しないものとする)
それに、いつものiOSアプリと違って計算量が多いので、すぐMacBookが熱くなって泣いてる。どうすればいいんだ。

幸いゲーム用のデザインパターンの本は幾つかあるようなので、読んだら多少の改善は見込めるかもしれない。しかしゲーム全体の設計について参考になりそうなものが今の所見つかってない。つらい。誰か教えてください。

C++/Cocos2d-x

今これを読みたくてしょうがない。でも読んだら卒論が破壊されると思って耐えている。

ちなみに、最近ゲームプログラマーの基礎について | Cygames Engineers' Blogという記事が出ていて、せやなー、という感じ。
グラフィック系を抜いたとしても先は長い。

で、何作ったの?

f:id:S_Shimotori:20151224214013p:plain

初心者らしく弾飛ばして敵爆破するゲーム。
スケジュール的に今以上の遊び面の機能をつけられず、スタート画面くらいが限度と思われるので人生はつらい。

画像はぴぽや自作ゲームWOLF RPG向け素材配布 - トップページより。感謝。

総括

Cocos2d-x自体が他のものと比較して良いのかと言われると謎。他のを使っていないので良し悪しはわからないが、Unity.appやUnity垢が必要でないだけサクッと試しやすいのかもしれない。
それにSpriteをつくってaddするという流れはいつものアプリ開発と一緒なので、ゲームといってもあまり怖がらなくて良いんだなと思った。ただしiOS7、てめーはだめだ。出だしからやる気失せるからやめろ。

俺、卒論終わったら江添さんの本とキウイの本と公式リファレンス読むんだ……。

というわけで以上、最終日に変な記事を失礼しました。
良いお年を。来年は見た目にも計算量的にも綺麗なソースコードを書く1年にしたいですね。

情報学徒であるとはどういうことか 【Geek Women Advent Calendar 2015 21日目】

誘導

この記事はGeek Women Advent Calendar 2015 - Adventarの21日目です。
昨日はMami Enomoto - Adventarさんの記事でした。

本題

ほんとは情報系女子大生の話をするつもりだったが話がそれより広がってしまったので「情報学徒とは何か」というタイトルにした。 とゆーわけで、性別問わず読んでくれたらちょううれしい。読んでも得しないけど。

本記事における情報学徒とは情報系を専攻する大学生のことであり、本当に申し訳ないが高専・専門等は除外する。そちらの事情を把握できてないので。
そして特に具体的な話については弊大学の情報工学科の学生の身に起きがちなこととして読んで欲しい。他大学でも同様のことがあるかもしれないしそうでないかもしれない。

自己紹介

霜鳥です。↑のAdvent Calendarをやるくらいなので♀です。よろしゅう。
来年も大学生。

卒゛論゛誰゛か゛書゛い゛て゛え゛え゛え゛て゛い゛う゛か゛サ゛ン゛タ゛さ゛ん゛学゛士゛ち゛ょ゛う゛だ゛い゛〜゛〜゛〜゛〜゛
いっそ修士と内定くれ。

情報学徒にとっての常識ってなんだ

最近めちゃくちゃ思うのが、情報学徒としての常識ってなんだろうという疑問である。
きっと「大学で習うこと=情報学徒としての常識」ではない。大学では全てを教えてくれないし、わたしみたいにオペレーティングシステム未履修*1微分積分学が1単位しかないクズ*2もいる。これはただのクズだ。

なお、弊大学情報工学科は必修が1つもない*3という罠があり、「この大学なら何でも知ってるしできるでしょw」って勘違いしてる人事部の方がいらっしゃいましたら、お察しください。

さて、OSと微積の単位がないのに卒業できてしまうのはわたしの脳みそとカリキュラムの欠陥であるとして。

(弊)大学で教えてくれないことの筆頭はプログラミングである。と思う。
弊大学では、プログラミング言語アルゴリズムやデータ構造・パラダイムを理解することのツールでしかなく、レベルとしては初心者本に書いてあるくらい。なので開発に必要な知識はつかない。他人のソースコードを読む機会もない。担当教員からのフィードバックもない。*4そしてグループワークには無駄な炎上のリスクが付きまとう*5

開発話は専門学校でやることであって大学生がやるべきことではない、数学やアルゴリズムをやってろという意見もあり、限られた授業時間を考えれば全くそうである、あるのだが……

たとえば、仮に弊大学のカリキュラムのみをやった場合、

  • ネット上の初心者用C・Javaサイトにある文法すら全部把握してない
  • バージョン管理ってなに
  • 公開鍵ってなに
  • なんかantっていうのを使えって言われたけどそれが何のためにあって何をしてるのか知らない

という人間が出来上がる。以上全て大学で教えることでない気もするが、そうといっても

  • どの言語も初心者本以下・未満の使い方しかできない
  • ツールの存在すら知らない

で果たして本当にいいのかと言われると、うーん、なんかそれ、いいのか?という感じ。どこかで勉強しなければならない。ではどこでそれを学ぶのか。謎である。みなさんはどこで学びましたか?

ま、偉そうに語ってるわたし自身がまず常識を持ってないんですけどね。ハードや低レイヤーの話されたら泣いちゃうよ。

確実に言えることとして、

  • アンテナを張っていないと常識は身につかない
    • わたしの場合、詳しい先輩達に恵まれ助かった部分が大きい。Google先生に聞くという手もあるけど、未知の概念の存在そのものをぐぐって出すのは相当のぐぐり技能が必要である
  • 必ずしも大学は就職予備校ではない
    • 開発能力があれば中退だろうが高卒だろうが関係ない世界、大卒だろうが開発能力がないとお祈りされる世界が存在する*6
  • 情報処理技術者試験レベル1〜3は本当に起床能力を試す試験
    • 応用情報ですら午後出席者の合格率はめちゃめちゃ高い
    • 資格とったほうが就職有利とかいうけど、「資格持ちのあなたは物知り!すてき!」というより、「あー、持ってるの?一通りの常識は持ち合わせてるのね」っていう意味合いのほうが強いような気がしてならない。
    • レベル4は知りません

だと思う。これから情報学徒を目指す人は気をつけて下さい。

情報学徒(女)ってなんだ

女子高から理系単科大への進学とは

弊大学は理系単科大学なので、大学全体で女子率10%、学科で5%である。
わたしは女子高出身で、しばしば「女子高からよくこんなとこに来る気になったな」と言われた。しかし、周りを見ると女子高出身者は多い。正確な共学・別学比率はわからないが、わたしの感覚からすれば「共学からよくこんなとこに〜」の思いが強い。
わたしの個人的事情からいえば、

  • 情報系を専門に学びたかった
    • 女子がいないからといって敬遠はしない。男女比がどうなっていようがそれをマイナスともプラスとも捉えない。んなもんどーでもいい。わたしは情報系をやるんだ。
  • 女子校で情報系といえばお茶女があるが、男社会デビューと社会人デビューを同時にこなすのはやや不安があったのでそもそも候補に入れなかった
    • 見学くらい行っておけばよかったなあという気はする
  • F欄工業大の学園祭来たらオタク臭半端なかったのでここなら生きていけそうと思った
    • わたしは趣味がオタクなので、リア充きゃぴきゃぴ系集団は同性だろうが無理

である。
それはそれとして、一般的な情報学徒(女)に対するわたしの推理では、

  • 理系女子が少ないのは男女混ぜた母体のなかで文理を選ぶからであり、女子高からだとふつーに理系分野を選んで進学してくる
    • もう少し正確に言うと女子校出身者は理系を選ぶのに抵抗がないという説
      • バリキャリ思考
      • 他人や世間の進路は気にしない思考
      • 一定の医学部人気
    • どういう理由かは不明としても、母校では文理比は1:1に近かった。あと、記憶が正しければ、「配偶者の方が稼いでいてほしい」と「同じくらいがいい」が同数くらいだった。たぶん。
  • 女子校←→男子校ではない。共学←→別学である。
    • 女子校(別学)から理系単科大(実質別学)への進学は環境としてあまり変わらない気がする。視界に入る性別は1種類という意味で。

といったところ。なんの根拠もなく言ってるので絶対この推理は嘘です
皆さんの周りはどうでしょう。

リケジョ(笑)について

リケジョ(笑)って言っておけば数増えるのだろうか。情報学徒増えてないんですけど。呪文として不適切、誠に遺憾。
「わたしリケジョだから☆」って自称してる人いるんかね。世の中に1人くらいはいるかな。わたしがリケジョと言ったときは基本的に悪い意味で言っていると解釈してほしい。

なんかtwitterで話題になってたらしいね。これ、どうなんだろうね。
女子の理系進学を阻む教育 - Togetterまとめ
わたしなんかは人の言うこと聞いてないから、↑の体験談に出てくるような余計なお世話やら陰口やら言われても言ったやつを鼻で笑ってやって終わるんだけど。良い気はしないね。

情報学徒女子って、中高時代に情報系の何かに触れさせておけば増えるのかな。でもうちの高校はパソコン部なかったしな。機械屋とか化学屋は完成物が目に見えたり高校の授業で扱ったりで、その点情報分野は負けてる気がする。一応、情報分野の恩恵に預かってない人がいないのは機械・化学と同じなのだけど、ほら、くら〜い部屋で黒い画面に対して超速タイピングしてるイメージあったりするじゃん、ハッカーって……

わたしの今のなやみ

友達が欲しい

学内で生きて行くのに限って言えば、女子率が何パーセントだろうが構わないのだが、就活やプロの技術屋を考えると影響がないとも言えない。

たとえば、

  • 技術について議論する相手がいない
    • わたしの対異性コミュニケーション能力が不足しているといえばそれまでなのだが、異性に議論ふっかけるより同性にふっかけるほうが明らかに簡単である。それに相当の時間を割いてくれるほどの男友達を作るってきつくないですか?
    • 女性技術屋の人口は一定数いるっちゃいるが、より深い議論をするとなると「同じ分野をやる女性技術屋」を求めることになり、その数は多くない。
  • 自主的にチーム組んでアプリ開発するのがキツイ。
    • 私の周りには開発に興味がある同性がいない。
      • アプリ開発チームの姫になればいいのか……?????まあ、とりあえずチーム組むのがむずいのは同上。
    • 開発経験は開発経験でもグループであることが好ましい。ハッカソン参加も同様。
    • 授業で強制されるグループワーク開発を除くと、その機会としてサークルとインターン・バイトがある。インターンは場合によってはチーム開発経験が必要なので除くとして、そうなると友達に恵まれることを祈るかサークル活動を理由にチームを組むか初心者歓迎バイトか
    • 開発経験ないとインターン参加・内定獲得できない企業、本当にダメ。内定ください
  • 就職について相談する相手先が少ない
    • 分野が違うとそれだけ就職先の企業のタイプがばらけて、具体的な個別の企業について相談しづらいのではないかという不安
    • 例えば「男尊女卑の気質の企業を避けたいがどうか」とか「育休は取れるのか」となると、この話題は女性に聞かないとわからない……

以上は不安材料なので、就活本格化するまでに何とか対策を打ちたい。このカレンダーを見てると、良く働いていらっしゃる方ばかりで、自分も何とかうまくやりたいと思ってるところ。

……具体案が浮かばないけど。

なんていうか、今はC++Swiftと競プロのおともだちがほしい。ノンジャンルもめっちゃアリ。誰かお願いします。

バイトについて

話は変わるが、

  • 女性
  • 中学受験経験有
  • 数3Cやった
  • 理IIやった
  • 化学IIやった

といったステータスで講師バイトをやると交代要員がいなくて休めなくなる可能性があるので各位気をつけてほしい。希少性を持って賃上げ要求でもできれば上々だが、そんな評価制度は聞いたことないし無理だろう。家庭教師争奪戦で有利なくらいか。*7

マジで上記の組み合わせの人が他にいなくてダメ。男性+物理IIすら数多くないし数IIBまでの理系もいるし世の中どうなってんだ。

開発バイトたのしい><

まとめ

毎日何も考えずに生きてきたけど就活がそろそろ近い。
しもとりはそのうち考えるのをやめた。なんか真面目な話すると損した気になる。ダメ。

終わりの言葉

以上、Geek Women Advent Calendar 2015 - Adventarの21日目の記事でした。
明日はaa7th - Adventarさんの記事です。

*1:高得点が見込めない科目を取ると研究室争奪戦に影響するため

*2:6単位全回収が当然だが、わたしはバカなのでダメだった

*3:情報実験1〜4は必修だが、所詮プログラミングや実験なので他人に全部やらせることが可能であり、名実必修と呼べるかは謎である。

*4:数十人のソースコードを読むのが先生・TAの仕事ではないのでしょうがない。かといって学生同士指摘し合う機会もないので、ただひたすら「動けばすべてよし」の世界である

*5:テキトーにやってクビになるとかいうリスクはなく、チームメイトの誰かが1人犠牲になれば全員に単位が来るし、逆に無理なクオリティの追求をすることもある。つまりそういうことである

*6:もちろん大卒が条件の会社があるにしても、退学カレンダーの立派な社会人の方々やイベントでたまに会う「退学はいいぞ」おじさんを見てると就職予備校は嘘って気がしてならない

*7:弊大学の家庭教師募集を見るとしばしば「女性希望」があり、女子学生は大学全体の1割しかいないので低倍率で仕事を取れる。男子学生も取れる募集の倍率やいかに……

競プロ始めて思ったこととか 【Competitive Programming Advent Calendar 2015 15日目】

誘導

この記事はCompetitive Programming Advent Calendar 2015 - Adventarの15日目です。
Competitive Programming (その2) Advent Calendar 2015 - Adventarが並行して走っているようです。

昨日は

でした。

本題

自己紹介

霜鳥です。よろしゅう。最近競プロ始めました。
実力はしょぼい。過去の戦績は本ブログのイベントカテゴリを見てほしい。

CODE FESTIVALはTHANKSにまわされて5完、
CODE RUNNERは本戦29位。*1

本は1冊も読んでないしググってもいないので肝心のアルゴリズム能力はお察し。ひらめきは運次第、TLEの罠はしっかり踏む。

思ったことを適当に

いい話をしようと思ったら自分語りになってしまったので忙しい人は読まなくて大丈夫です。
どうせこれを読んでるお前はわたしより成績上位だろ!!!アドバイスすることなんかねーよ!!!!!!(ブチギレ)

競プロで使う言語

いつも入出力のやり方とポインタを忘れるのでRubyを選んだ。

hoge = gets.split.map(&:to_i)

↑のやつを適当に組み合わせれば終わりだし助かってる。

……というのは嘘で全く助かっておらず、コンテストのたびにループの書き方とArrayの初期化他色々を忘れるのでぐぐってる。12日のCODE RUNNERでもクラスとソート作ろうとしてわからなくてぐぐったし、 else if って書いてエラー出た。

最近物忘れが激しい。というより、Swiftとの類似度が低いほど書けない病にかかっている。普段Ruby使ってないからしょうがないね。
ちょくだいさんが鯖にアレを入れれば解決かと言われると…うーん……。

C++Pythonあたりでやってみようかなー、とか、勉強しなおすのめんどいなー、とか。
プロコンやってる人って、ちゃんと毎日問題解いてるから文法忘れないのか、開発もその言語でやってるから忘れないのか、どっちなんだろ。

競プロのコミュニティ

今年は脱コミュ障を掲げて開発者イベントに参加しまくっている*2。おかげで分野かぶってる人なら少し話せるようになった。でもそういうイベント、学生っていないんだよね。いるけど。たまに。

競プロ始めたのをきっかけに、そっち方面の人もフォローしたりランキング眺めたりイベント参加したりして、有名人をすこし覚えた。だいたい学生。下手すると高校生以下。ひえーっ。

プログラミングガチでやってそうなr某gyの所属じゃなかったので、今回初めて大学内の競プロ勢を認識したし、みんなすごいなあって思った。弊大学は授業がお察しください*3なので、自分から積極的にアンテナ張るのはアプリ開発同様重要だなって思った。でないとモチベーションもたないし置いてかれる。

何が言いたいかというと、人間観察対象の層が広がってTLが賑やかになった。これが大きな収穫。

でも、
このぶんやはおんなのこがいないから、
ぼっちです。
かおみしりのおとこのこもいないみんなCODE FESTIVAL本戦に行っちゃうし、
ぼっちです。

これで入賞でもして名前売れたら違うんかなー。

就活話

就活したくないよーん。

インターン・新卒募集見ると、githubのアカウント書けーとか、コンテスト参加しろーとか、面倒くせえ
ぶっちゃけ学歴不問だよね。大学が就職予備校とか嘘だろー。結局↑をやらないとダメだしそれを早く言ってよ。*4

就活始まってすらないけど後輩に何か言うとしたら、やっとけってところ。

で。
最近気になってるのが、競プロって業務上では何に役立つの?ってところ。勿論ちゃんと考えて開発しないと処理速度に影響するので全く役に立たないということはないとしても、問題設定や日本語が意味不な問題だとそのへん疑問に思う。面白い題材のやつはほんと面白いんだけどな。変な問題に当たるとモチベーション下がる。

この疑問をぶつけると「直接関わってはこないよね」って言ってる社会人がいたりするけど、じゃあなんなんだ。

でもなんだかんだ言って競プロ強い人は開発もできるんだよな。
競プロやってる人にはプログラミングアレルギーな奴なんていないし上達して当然なのかなあ。

まとめ

全然いい話できなかったし疑問調ですんません。もし何らかの見解があったら教えてください、なんて。

2016年は少しずつ過去問と蟻とチーター潰す予定です。

終わりの言葉

以上、Competitive Programming Advent Calendar 2015 - Adventarの15日目の記事でした。
iwashi31 - Adventarさんも15日担当のようです。

明日は

です。

*1:お国からの仕事をこなして外注から雑に拾うところまで実装し、よしパラメータいじって改良していくかと思ったら時間なかった

*2:この辺の経緯はコミュ障が留学を 諦めた話にまとめた

*3:先日駒場にお邪魔して某超有名人の授業を聴講した。面白かった。うちの情報実験と取り替えてくれ頼む

*4:やらないとダメという話は入学後1週間目にしてG教授氏から忠告があった。研究室所属の時にも言われたので、他の人も聞いたことがあるかもしれない。

Goでxcode-selectするコマンドラインツールを作った【Go その2 Advent Calendar 2015 7日目】

誘導

この記事はGo その2 Advent Calendar 2015 - Qiitaの7日目です。

昨日は

  1. yoppi - QiitaさんのGo - 外部APIを使うController用のTest Doubleライブラリを書いた - Qiita
  2. tienlen - Qiitaさんの記事
  3. minodisk - Qiitaさんのgolang - Exifの回転情報をピクセル情報に反映する - Qiita

だったようです。
てか、Goのカレンダー3つ走ってるのやばくない?

自己紹介

霜鳥です。学生です。趣味は札束・焼肉・寿司に殴られることです。
普段はSwiftしか書いてないので、サーバサイドもGoのこともわかってません。何か新しい発見とか解説とか実用的なものを求めていらっしゃった方がいたら、そういうことはないので適当に流してください。

本題

1度くらいGoで何かやってみようと思ってたので、作った。
鯖で使った方が美味いんだろうけど、そっちはよくわからないので、コマンドラインツールで。tcnksm/gcli · GitHubとやらを使うとすぐ作れるという話だったし。

ninjinと言います。実質「対Swift用」なのでロゴのアレの色に似せた名前*1にしたけど、冷静に考えてXcodeの青い色の名前つけるべき。

github.com

クオリティ及び有用性には欠陥があるものの、とりあえず作ったから良し。動くから良し。
でも今思い返すとなんでこんな変なの作ったのか自分でもわからない。

作った経緯・用途

作ったものとしては、一言で表すと「Xcodeenvっぽいもの」。

MacではXcodeがないと開発ができない。例えば makeXcodeに含まれているものを使うのでXcodeがなんらかの理由で消滅していると brew install 中に突然こける。

どのXcodeを使うか設定するコマンドとして xcode-select があって、

Print or change the path to the active developer directory. This directory controls which tools are used for the Xcode command line tools (for example, xcodebuild) as well as the BSD development commands (such as cc and make).

という説明がついており、

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

と使う。 /Contents/Developer はなくてもいい。

で。このコマンドにお世話になる時がある。ここで↑で言及したSwiftがでてくる。
Swiftコンパイラは基本的にXcode付属のものを使う。つまり使用するXcodeによってSwiftのバージョンが違う。そしてSwiftは絶賛開発途上中なのでXcodeによってSwiftの仕様も違う時がある。

Xcode上で開発しているうちはそのXcodeのものを使ってくれるのでいいけど、コマンドライン上でSwiftを扱う*2となると正しいバージョンのコンパイラ(= Xcode)を指定しないといけない。

それで、 xcode-select にかぶせてrbenvとかpyenvとかそういう類のもの作ったら面白いかなーていうかそれ以外に作りたいネタないなーと思いました、まる
あとはninjin/README.md at master · S-Shimotori/ninjin · GitHubでも読んでください

わざわざツールにしなくてもシェルパワーで xcode-select をやればいいじゃんとか言わない

作ってみて思ったこと: Go編

gcliについて

早速 tcnksm/gcli · GitHub を使ってみた。噂通り楽。コマンド呼び出しのところまではやってくれるので、関数を実装すればすぐにできる。今回の目的はGoそのものであり、そっちに集中できた。
Goは初めてだったけど生成したテストをパクってある程度テストも作れた(コマンド自体のテストは作ってない)。

戻り値について

Goの戻り値が複数あるのは気に入った。わたしは忘れっぽいので戻り値の数や型などでエラーの可能性を示唆してくれるとありがたい。

import について

別パッケージを import する場合、 GOPATH 配下にあるかないかで相対パスが使えるとか使えないとか、私にとっては未知の仕様と遭遇した。それで混乱した挙句意味不明な import をしてしまった。かなしい。

文字列処理について

stringrunebyte が当たり前のように入り乱れてびびった。 びっくりしただけだが、Rubyをやった直後にGoを触ったせいでダメージが大きい。*3

OOPについて

私にとっていちばん難しかったところ。

まず、私が触ってきた言語というとクラスは大文字始まり関数は小文字始まりという奴なので、「一体なんだこれは」となる。
コンストラクタも、書いている気分としては、クラスにメソッドを増やすというより新しく関数作ってる気分。ソートの比較するやつの実装もなんか私の知ってるものと違う。

……などなど、混乱して設計が悲惨なことになってしまった。いきなり書いていい言語じゃなかった。ちゃんとサンプルや慣れた人のコードを見てからやるべきだった。動くからいいけど、やるからにはGoらしく書かないと意味がない。

気になったこととして、
「privateなクラスを戻り値とするpublicなメソッドはありなのか?そういうものなのか?」
というのがある。Goは仕様としてOKだったので思い切り使ってしまったが……実は知らなかっただけで他の言語でもOKとかある?

Swiftはだめって言ってる。
f:id:S_Shimotori:20151130121153p:plain

というわけで今回は「動けばいいや!」だったけど、ちゃんと作ることがあったら、Go用の設計とか規約とか気をつけるつもり。どうしたらいいんだって開発中ずっと迷走してて気分悪かった。

作ってみて思ったこと: その他

/Applications からのXcode発掘

インストール済みのXcodeをリストアップするには /Applications からXcodeを探さなくちゃいけない。ディレクトリ名に「Xcode」と「.app」を含むものをXcodeと判定するのがいちばん単純だが、それだとつまらないのと、あくまでディレクトリ名なのでリネームされている可能性を考えてInfo.plistから判断することにした。

で、この.plistがなかなかの曲者。3形態(xmljsonとバイナリ)があるらしく、要するにパースがめんどい。
なぜかplistをいじる用コマンドの plutil があったので面白そうだったから使ってみることにした。こいつは.plistを書き換えたり標準出力したりファイル出力したりしてくれる。

はじめは -pjsonをやろうとしたのだが、どういうわけかパースに失敗するので、よくヘルプ読んだらなんか違った。

print property list in a human-readable fashion (not for machine parsing! this 'format' is not stable)

↑何これ。
ちなみにInfo.plistの各項目の中で完全一致で"Xcode"を取れるのは2つある。Mac画面左上に出るアプリケーション名と、実行ファイル名である。前者は変更される可能性がある*4ので後者にした。ま、どっち選んでも手間は変わらないし。

パースとか変なことしたせいで処理速度悪い。

バージョンの取得

pyenv・rbenvみたいなことがしたいのでXcodeのバージョンを取る必要がある。short version表記におけるバージョン(7.0.0といったよく見る表記)はInfo.plistに書いてあるので取れるのだが、Swiftコンパイラの判別はこの表記では足りないのでversion.plist*5からproduct build version(7A1001みたいな表記をする)を取得することにした。

この関係で文字列処理が発生した。めんどかった。

IntelliJ上でのGoファイルアイコン

常に大量のGopherくんに見張られてしんどかった。

まとめ

ディレクトリ一覧とったりexecしたり正規表現したりxmlパースしたりテストしたり無駄なことしまくってたのしかったです。
実用性を求めなかったので見ての通り好き放題です。
ちゃんと書き方勉強してサーバサイドやったほうがもっと楽しかったかなあ……

終わりの言葉

以上、Go その2 Advent Calendar 2015 - Qiitaの7日目でした。

7日の記事は

  1. n0bisuke - Qiitaさんの記事
  2. ここの記事
  3. nyamadandan - Qiitaさんの記事

です。
明日は

  1. kawaken - Qiitaさんの記事
  2. otiai10 - Qiitaさんの記事
  3. warashi - Qiitaさんの記事

になるようです。

*1:http://www.colordic.org/colorsample/4006.html

*2:https://github.com/Carthage/Carthage とか。開発中のプロジェクトはSwift2.xで書いてて、拾ってきたライブラリのSwift2.x版はどこにあって、それでもって自分のxcode-selectはどのXcodeを指してるんだっけ。前にアンインストールしたXcode指したままかもしれない……なんてこと、ないですか?さすがにそんな雑なXcodeの扱い方してる人いないですよね……。

*3:もちろん文字列やるならRubyの方がメソッドは揃っている。参考: http://blogger.ukai.org/2011/02/rubygo.html

*4:長いアプリ名でメニューバーが苦しい人などが書き換える可能性がある

*5:Info.plistのなかま。なぜかApple製アプリケーションには含まれている。頻繁にベータ版が出ているためshort versionが同じでproduct build versionが違うXcodeが存在し、version.plistを見ないと判別がつかない。たぶん。