くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Android Studio が壊れた時は リストからプロジェクトを削除して再度開くといいかもしれない。

Android Studio を利用してプログラムを書いている時に壊れることはたまによくあると思います。

そんな時どうしますか?再起動、キャッシュ消す、パソコン再起動。
色々なことを試してみるとおもます。

今回の記事では、そんな時に試してみる施策の一つとして リストからプロジェクトを削除して再度開く と言う方法を提案します。

とはいえ、サイバーエージェントの人に教えてもらっただけですが...

まぁ、タイトル通りなんですけど、

やり方

Close projecy

f:id:kuxumarin:20190121125330p:plain

バツボタンで消す

f:id:kuxumarin:20190121125338p:plain

再度開く

f:id:kuxumarin:20190121125350p:plain

初心者がプログラマとしての能力を身に着けるには学生時代にIT 企業でインターンシップをすると良さそう。

こんにちは、明日名古屋駅まで遊びに行きます。

さて、本題。
以下のようなブログ記事が投下されてバズってます。

note.mu

soudai.hatenablog.com

kirimin.hatenablog.com

上記記事群の感想から自身の体験より「初心者がプログラマとしての能力を身に着ける方法について書きたいと思います。」

なお、筆者はまだ学生なので間違いがあると思います。ブコメ楽しみにしてます。

言葉の定義

初心者

変数とか関数とかは少し理解してプログラムを書いたことがある人(業務未経験、プログラムの最大行数は100行程度)

プログラマとしての能力

できてなくてもプログラマ(エンジニア)として働くことができるかもしれませんが、幸せな環境で働くために求められそうなのを二つほど。
大学等でコンピューターサイエンス的なものを身につけている(た)からの方が望ましい。

情報収集能力

エラー文やLog をググって答えがあったら解決できるレベル。
ブログなりTwitterなりをみて最新の技術を得れる力。

設計能力

規模にも依存しますが、
- main 関数に全てのプログラムを書かない
- DRY の法則を知ってる。
- リーダブルコードの内容を大体知っている
とか、

お断り

そうだいさんの記事にも書いてある通りこの方法では大量生産は実質不可能です。
また、年齢等により実行不可能な人はかなりいると思いますが、まだ学生の方は是非試してください。

まとめ

学生時代にIT企業でインターンシッププログラマとしての能力を身につけれる

前提知識

インターンシップという学生が企業での就業体験をする風習があります。

インターンシップ - Google 検索

筆者の紹介

筆者は上記の手法を利用してIT企業でのインターンシップを通してプログラマとして必要そうな知識に少し触れてます。

一応、高校時代から含めて合計9社ほどの会社でインターンシップしてきました。

kuxumarin.hatenablog.com

流れ

1. 独学で少し最低限を学ぶ

ここは適当な本を買って読んで試せば良いでしょう
私はここは一人でやっていたのでほんと寂しくて辛かった。 (話す人欲しい... 私はなんとか頑張って Windows Phone App Store 向けに(今考えるとしょぼい)アプリを公開してました(本当にしょぼいやつ)

2. プログラムを作り終えて公開まで行った実績を元に企業のインターンシップを申し込む

単なる初心者ではダメで、ある程度作り終えるところまで行ったのをアピールします。
- 最初の企業からそこを評価されたと言われましたし、他の企業での似た感じでした
- もちろん最高の出来栄えのが最初から作れるならそれの方が良いでしょう...

3. 他の企業も色々インターンシップ行く

あとは繰り返しで色々な開発(自分の場合 iOS, Android, 組み込み, C#, サーバーサイド) を吸収していけば良いのではないでしょうか。

インターンシップで吸収するメリット・デメリット

メリット

聞けば教えてもらえる

業務とかだと聞く暇ないところあるのではないでしょうか(他の人の記事見てると)

色々な現場を体験できる

SES 主体の会社の売り文句みたいですが、、、
自分の場合は色々な会社を見てました。
それぞれで学べることはありました。

授業料がかからない、むしろ給料もらえる

よく知らないけど、プログラミング教室とか行かずにすみます。
会社によってはお給料が時給でもらえます。 1500円〜が相場かな。Google とかだと3000円ぐらいですね。

地方に住んでいる人へ

開発をまともにするIT企業のインターンシップの9割は東京で行われえています、しかし、地方の人でも週何回〜参加すれば交通費は宿泊費がでるのでそこは自分の可能性を狭めないようにご注意を〜

デメリット

「大学生のうちは遊んでおけ」って言われる

どうせプログラミングして遊んでるんだからインターンシップしてた方が楽しいんだよな...

どうでもいいけど

Mac, Google Chrome で書いてますが、はてなのエディタ壊れてない??(標準IME

2018年を振り返って。大変革な一年でした。

2018年を3行で

2018年の感想

書き出してみると割と行動してました。

東京と地元を往復する日々でした。幸いなことに交通費は企業様から出していただけているため自費で行くことはありませんでした。感謝です。

振り返ってみると「東京で何か行動したものが数ヶ月経ってから自分に返ってきた」事象がかなり見受けられるため来年も機会を増やすために行動していきたいと考えています。

1月

ブイアールサンダー運営(?)

GOROman さんを招待してのVRイベント

Code for Mikawa として開催。東海道五十三次の二川宿を借りて開催した。

2月

ピクシブインターンシップ

ピクシブコミックのAndroid 版の開発

Kotlin を利用した初めてのがっつりとした開発でした。 べるのさん、@kwzr さんありがとうございました。

学生LT もくもく会

学生LT なのにもくもく会を主催

神保町の適当なカフェで開催 一人で作業するの寂しいからさ...

今後関わっていく人との出会い

このイベントで出会った人とは今も関わりがあります。
-夏のクッのインターンで再開したぽっけさん
- Webサービスをたくさんリリースしてるレトルトさん
- 某専門学校の先生の方
今思うとすごいメンツだ...

Xamarin もくもく会

豊橋で開催

豊橋は勉強会が少ない。けど、がっつりとしたのを主催する気力はない。ってことで開催

3月

MVP GlobalSummit@アメリカ, シアトル

シアトルでMicrosoftのにゃーんな内容を聞いてた

初めてのアメリカ。初めてのMicrosoftの英語なカンファレンス。 最初で最後でしたが、いろいろ勉強になった。

HackChu 優秀賞

歯磨きを楽しくするIoT ゲームを作った

ハッカソンで予選落ちしかけましたが、拾ってもらって本戦出場。
自分はサーバーサイドとインフラを担当した、
IoTできる人強い。

クックパッドインターンシップ インフラコース

ぼなみさんに誘っていただいて参加

インフラ、あまり触れたことがなかったので参加しました。
インフラ系の最新動向から実際にどうするかまで体系的に学べました。
圧倒的成長🤙

MSP のイベント@SGT

Minecraft機械学習を学べるプロジェクトの説明を受けて実際に試してフィードバックしました。
https://github.com/Microsoft/malmo

イベント終わりの懇親会で就職勢の方達に就活の方法とか逆求人でどうするといいのかとか教えていただきました。 ちゅうこさん、ラルフさん、まるちゃん、高木さん、(あと誰だっけ...) ありがとう!!

4月

初めての逆求人と各社逆求人会社との面談

人生で初めての逆求人出場

学生側から企業側へプレゼンして就活をいい感じに進めてく逆求人ってのに出てました。
イベントにはイケイケなメガベンチャーがきてました。インターンシップはだいたいここであった企業で決まってました。

5月

Microsoft Build 2018// 参加

MSP の枠でMS Build に参加

MS Build とはMicrosoftが主催するイベントです。
いろいろなMS テクノロジーについて学べた!(

de:code 2018 スタッフ参加

de:code 2018 で ハンズオンスタッフ参加

昨年に引き続きハンズオンスタッフ参加。
ギークなイケメンに出会えて楽しかった!!
いわゆるオフ会ですね。

ジースタイラスさんの逆求人と各社インターンシップ面接

面接頑張った!!

6月

各社インターンシップ面接

逆求人で出会っている企業とインターンシップの面接が本格的にスタート
技術的な会話が毎日できて素敵な日々でした!!

7月

各社インターンシップ面接

各社、インターンシップが決まっていったのですが、日程をコンフリクトさせてしまい申し訳無かったです。。。調整ありがとうございました。

8月

Mobile CI/CD Meetup

スマホアプリのCI/CD についてのイベント

興味のある分野の勉強会が地元では開催されていないので東京に来ている時に参加! mobile-ci-cd.connpass.com

ここで見かけた登壇者の人と就活で話す機会が増えてる

就活をしていく中でこのイベントで登壇してた人と話す機会がありました。
世の中の仕組み面白いなぁ。いろいろ勉強になります...!

Cookpad.apk

クックパッドで興味のある分野の勉強会が開催されるということで参加。

cookpad.connpass.com

macOS native synposium

Macについての勉強会は地元では見かけたことすらないので参加してみた。
知らないことが多い!!

macos-native.connpass.com

インターンシップクックパッド

クックパッドで2週間インターンシップ

主にReact Native 触ってた気がします。
そういえば、春のインターンシップに参加したいとお伝えしてたはず...。どうなんだろう...

インターンシップサイボウズ

iOS アプリ作ってました。
働きやすい環境だ...。

9月

GDG DevFes Tokyo

iOSDC のスカラシップがサイレントお祈りだったので参加。

DroidKaigi のスカラシップは返信が来て権利をいただくことができました😃

gdg-tokyo.connpass.com

Android の基礎が少しわかった

一人だと怖いのでころいどさんと一緒に参加してもらった。

インターンシップDMM.com

menus の Android 版を開発してました。
kgmyshin さん、ありがとうございます。

インターンシップ@Sansan

サーバーサイドC# で 本体(?)の開発してました。
C# 最高〜〜〜!!!

湯けむりハッカソン優勝

いろいろありましたが、湯けむりハッカソン優勝しました。

失恋...

アッ...

10月

開発期間

ひたすら開発してました。

11月, 12月

就活

いろいろな企業に遊びにいったり面接受けたり。

すでに内定は何社かからいただいておりますが、いろいろな企業をみたり自分のやりたいことをはっきりさせたいためまだ就活自体は続けております。

2019 年もよろしくお願いします。

Android で ChipGroup に属しているChip を列挙する

ChipGroup Class には 追加されている Chip 一覧を取得できそうな関数が生えてないです。

      val chipGroup = // Chip Group への参照を取得する
      val chipCount = chipGroup.childCount // 2
      (0..chipCount - 1) 
        .map { chipGroup.getChildAt(it) as Chip }
        .map {Object(it.id, it.text.toString(), it.isChecked) } // Object を任意のクラスに置き換え
        .forEach { print(it.toString()) }

Flutter 向け CI/CD サービスについてLT してました。

Flutter 向け CI/CD サービスについてLT してました。

Nagoya iOS Meetup という 名前の通り名古屋で開催された iOS アプリ開発に関する勉強会でLT してきました。

話したこと

Flutter 向け CI/CD サービスの Codemagic について話しました。

codemagic.io

LT の内容を見ていると東京並みにはレベルが高いLT が多かったのでそこらへんの知識はある前提で話せばいいのか正直初参加だったため判断が難しかったです。

しかし、LT で全部話してるとそもそも5分で収まりそうになかったため、ある程度割り切って紹介していました。

工夫した点は、スライド使って全部話すのではなく、デモを使って実際に動いているところで codemagic について説明しました。

ビルドした成果物をSlack の通知に飛ばされてるとかを見せると反応は良かったのではないかなぁと思いました。

ただ、残念だったのはCI した成果物を実際のデバイスで動かした時に画面が小さかったのがアレでした。エミュレーターで動かせば良かった感。

一応、LT で使用したスライドは投下しておきます。

資料

1drv.ms

Android-NDK で エラーがでた。 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

C++ で書かれたライブラリを Android 向けライブラリにビルドしようとしたら下記のようなエラーが出ました。

No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

mios64el-linux-android に対応した NDK Toolchains が存在しないようです。

解決方法

Android NDK をダウンロード

NDK Downloads  |  Android NDK  |  Android Developers

必要なファイルをローカルに保存

上記で落としてきたファイルを解凍してローカルの Android SDK の場所に保存します。

落としてきたファイルの場所(適宜解釈)

/Users/kuxu/Downloads/android-ndk-r16b/toolchains

ローカルのAndroid SDK へコピー(適宜解釈)

/Users/kuxu/Library/Android/sdk/ndk-bundle/toolchains

IT エンジニア6人とFactorio をAzure の上で12時間プレイしてみた

Factorio してますか? RPS とか FA とか言われているものをゲームでもするやつです。

Factorio

毎年恒例(?)の CenterCLR ゲーム会が開催されました。

今年もゲームは、 Factorio でした。

環境

Discord で音声通話しつつFactorio

最初は19時までのはずが気づいたら23時まで...

Azure VM の上に鯖立ててました。

kuxumarin.hatenablog.com

サーバーの負荷状況は?

CPU

6時間

f:id:kuxumarin:20181223233448p:plain

12時間

f:id:kuxumarin:20181223233507p:plain

Network

6時間

f:id:kuxumarin:20181223233551p:plain

12時間

f:id:kuxumarin:20181223233608p:plain

DIsc

6時間

f:id:kuxumarin:20181223233635p:plain

12時間

f:id:kuxumarin:20181223233650p:plain

まとめ

6人プレイしても鯖の負荷はそこまで大きくならなかった。

ITエンジニア6人を12時間拘束する Factorio は恐ろしい...

Factorio のマルチプレイサーバーを ubuntu on Azure VM で作成する。

OthloTech Advent Calendar 2018 - Qiita の24日目だった気がします。

ゲームのマルチプレイにサーバーを立てる必要があるんですけど、オンプレで立ててると面倒。ってことで

手順

Ubuntu VM を Azure で立てる

適当に立ててきましょう。 スペックは高めのやつ(月2マソ)ぐらいのを立てましたが、安いやつでもいいと思います。

https://www.factorio.com/get-download/stable/headless/linux64

ゲームの通信で必要なポートは適当に開けます

今回は、デフォルトで使うポートをそのまま開けました。規則名は気にしない

f:id:kuxumarin:20181222012427p:plain

ゲームを落としてくる

サーバー側は別にGUI 必要ないので headless 版を落としてきます。

下記のスクリプトでゲーム落としてきます。最新版が自動で入る素敵仕様

curl https://www.factorio.com/get-download/stable/headless/linux64 -L --output factorio_headless.tar.xz
tar Jxvf factorio_headless.tar.xz

セーブデータの作成と起動

./factorio --create save_data
./factorio --start-server savee_data

クライアントからつなぐ

f:id:kuxumarin:20181222012727p:plain f:id:kuxumarin:20181222012734p:plain