ryu's blog

~日々の出来事や開発のアウトプットの場~

FlutterのCocoapodsのアップデートに関するWarning

flutter doctorでCocoapodsに関するWarningが消えない件

iOSをほとんど触らなかったので問題なかったのですが、ずっと放置していたcocoapodsのアップデートのWarningを解決したので記事にしときます。

[!] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    • ios-deploy 1.9.2
    ! CocoaPods out of date (1.5.0 is recommended).
        CocoaPods is used to retrieve the iOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS.
        For more info, see https://flutter.io/platform-plugins
      To upgrade:
        brew upgrade cocoapods
        pod setup

このCocoapodsに関するwarnigが取れなかった。 書かれている通りに

$ brew update
$ brew upgrade cocoapods
$ pod setup

を行ってもこのWarningが取れなかった。

ちょっと調べてみると、Flutterの公式GitHubにも同じようなIssueが上がっていた。

github.com

上のIssueのComment通りに

sudo gem install cocoapods

をしたが、ここでも以下のエラーが出てきた。

Fetching: cocoapods-core-1.5.3.gem (100%)
Successfully installed cocoapods-core-1.5.3
Fetching: cocoapods-deintegrate-1.0.2.gem (100%)
Successfully installed cocoapods-deintegrate-1.0.2
Fetching: cocoapods-downloader-1.2.2.gem (100%)
Successfully installed cocoapods-downloader-1.2.2
Fetching: molinillo-0.6.6.gem (100%)
Successfully installed molinillo-0.6.6
Fetching: atomos-0.1.3.gem (100%)
Successfully installed atomos-0.1.3
Fetching: nanaimo-0.2.6.gem (100%)
Successfully installed nanaimo-0.2.6
Fetching: xcodeproj-1.7.0.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/bin directory.

この解決策としてインストール場所を指定する。(which podとコマンドを打つと/usr/local/bin/podとなっているのがわかる。)

sudo gem install cocoapods -n /usr/local/bin/

これでWarningを取り除くことができた。

Eureka Summer Internship 2018に参加してきました!

9月の3日〜14日までの2週間、株式会社エウレカのサマーインターンシップ2018に参加してきました!

エウレカ サマーインターンシップ

インターンの参加について

 エウレカさんは今話題のマッチングアプリ、Pairsを開発している会社です。そのエウレカさんで2週間の間、Androidエンジニアコースのインターン生としてお世話になりました。 何故このインターンに参加したかというと、エウレカさんに興味があったのはもちろんですが、自分のスキルアップをしたかったのとチームでのプロダクト開発経験を積めるというのが大きな理由でした。プログラミングのアルバイトなどをやっていないので、一人で学んできたプログラミングスキルが同年代の人と比べてどのレベルにあるのか知りたい、チームでの開発経験が今まで一度もなかったのでその経験を積みたいと最近生活しながら思っていました。そのとき、このインターンシップの存在を知り、応募しました。

 インターン詳細サイトにも書いてありますが、1週間ごとにそれぞれ内容が違い、最初の一週間は講義と課題が与えられ、2週目は実際にチームでプロダクトの開発を行うという内容でした。エンジニアは主にAndroidiOS、Web、サーバーサイドに分けられ、それぞれのコースごとに課題も異なったものを与えられました。 ただ、2週目の後半に進める人は、最初の1週目に与えられる課題の達成度やその課題に対する取り組みの評価などから選考されました。

インターン前半戦

インターンの前半戦はWebサービス開発講義と課題です。

講義

講義では色んなテーマに関して講義をしていただきました。特に、自分にとって重要・学びとなったポイントは以下の点でした。

  • 何をするにしても目的を決して忘れない。
  • Product/ Project Managementの違い
  • どのようにしてWeb開発をしていくのか(企画・要件〜リリース・運用まで、開発フローなど)

実際にプロダクト開発などに関わったことがないので、とても勉強になりました。

課題

 課題は、簡易的なアプリを一つ開発するといった内容でした。1週目の最終日には実際に与えられた課題がどの程度実装出来たのか、どういったところを工夫してコードを書いたのか等、1週間の自分の取り組みを発表し、それに対するフィードバックなどを貰い1週間を終えました。

 しかし、インターン開始してから2日目に台風が日本に上陸するという事態になり、急遽インターンの日程に変更が加えられ、2日目はリモートで課題に取り組むといった予定に変更になりました。こういった柔軟な対応が出来る会社ってすごく良いなと思いました。

エウレカのCTOであるkaneshinさんのツイートです)

前半戦を終えて

 自分は与えられた機能要件を全て満たせず、悔しい結果を残す1週間になりました。しかし、1週間でどういったところの知識やスキルが自分に足りないのか、これから自分がどういったことを勉強するべきなのかなど自分を見直す良い機会になりました。 特に自分が学べたことは以下の部分です。

  • 機能要件をまずは最速で実装する。(Done is better than perfect. ですね)
  • Kotlinで強制アンラップは原則行わない。
  • Recyclerview、ViewHolder、Adapterに関する知識が曖昧すぎる。
  • AndroidStudioの機能やショートカットを知らなすぎる。
  • デバッグの仕方 etc.

もっと多くの学びがありましたが、自分の中で重要だなと感じたポイントは上記の点です。

インターン後半戦

 後半戦は講義とチームによるプロダクト開発を行いました。後半戦は前半戦の中から合格した人のみの参加で、自分は運良くAndroidコースの中で2週目に残ることができました。

講義

 エンジニアとしてどのようにこれからを考えていけば良いのかやキャリア、チーム開発についての講義をしていただきました。 どの講義も自分にとって重要な考えや未来についての指針になるものばかりでした。

チーム開発ワークショップ

 チーム開発のワークショップでは、課題となるテーマを与えられ、そのテーマに対して何をどうやって解決していくのかというところからチームで話し合い機能の開発を行うといった内容でした。

 チームはフロントエンド(AndroidiOS、Web)から2人、サーバーサイドから2人、デザイナーから1〜2人のチームで結成され、それぞれのチームで開発を行いました。

 自分たちのチームは、課題に対し仮設を立てて検証を行う、といったことがうまく出来ずに開発機能をどうするのかなかなか決められずにいました。自分の見解ですが、原因として、それぞれがどのような目的でどんな根拠で機能を開発するのか、共通認識や意識が甘かったのかなと思いました。しかし、後半戦2日目にもう一度始めから仮設や検証を行うことでみんなの考えがまとまっていき、最終的には一つの機能をチームで実装することができ発表に臨みました。後半戦の結果としては、残念ながらチーム賞を獲ることは叶いませんでしたが、個人として得られたものは大きかったと思います。

後半戦を終えて

 当初の目的であるチーム開発の経験だったり、知見を得られ有意義な時間を過ごすことが出来ました。ちょっと悔いが残ったのは、機能開発においてもうちょっとうまくAndroid側のタスクを回すことが出来たのかなと感じました。2人でクライント側の開発を行ったのですが、大まかにしかタスクの振り分けを行わなかったのでもっと細かくタスク分けを行っても良かったかなと感じました。

最後に

 2週間のインターンに参加出来て色んな学生の方や社員さん会えて刺激になったのと、エウレカさんのインターンに参加出来て本当に良かったです。今回のつながりは大事にしていきたいと思いますし、この気持を忘れずにこれからも頑張っていきたい!

技術書典4に行ってきました!

22日(日)の技術書典というイベントに初めて参加してきました!

イベントのホームページはこちら↓

techbookfest.org

11時から開催ということで30分ぐらい前に到着したのですが、もうすでに人がだいぶ並んでいました。 整理券をもらうために並び、番号は800番代。皆さん、朝から早く来ていらっしゃいました。

実際に中に入ってみると、人がごった返していてなかなか目的の技術書を探すのも一苦労…。

しかし、お目当ての本を探して見本を見てから購入!戦利品はこちら!

f:id:ryu236:20180423234320j:plain

Android関係を中心に購入。他にも電子版でnabettoさんの「vue.jsとfirebaseで作るミニWebサービス」を購入しました。

これらを読みながら自分の技術力向上、後は時間ある時に何か作るヒントなどにしたいと思います!

MANABIYAに2日間参加してきました!

株式会社レバレジーズさんの運営しているITエンジニア特化型Q&Aフォーラムであるteratailが開催するエンジニアカンファレンスで3/23, 24の2日間開催するということなので行ってきました。

manabiya.tech

2日間でそれぞれ4つのテーマが決められており、そのテーマに沿ったセッションを1回40分の講義という形で受けれるカンファレンスでした。エンジニア界隈で著名な方々がスピーカーで来ておりとても有意義な時間を過ごせました。

カンファレンスの写真は殆ど撮っていないので、他のブログなどを参照してください(^_^;) 例えば、941さんのブログなどは写真がたくさんあり雰囲気が掴めると思います!

blog.kushii.net

また、Twitterで#MABNABIYAを検索すると講演したときのスライドや参加者のコメントが沢山寄せられているので、是非チェックを!

今回のブログでは簡単に自分が聞いたセッションでの感想や学んだことなどをピックアップしたいと思います。

1日目

自分はテーマのうち「モバイル」を中心に講義を聞きに行きました。

React Nativeコミュニティの現在と未来(中田 一成)

React Native JapanのOrganizerである中田一成さんがReact Nativeについて詳しく公演してくれました。 React Nativeの主要ライブラリの説明やこれからのReact Nativeについて語ってくれました。 React NativeはInstagramFacebookなどのアプリが採用している技術で、iOSAndroidマルチプラットフォームとして注目されています。

3(0)分ハッキング(菊池 琢弥)

モバイルアプリのハッキングについて、実演を交えながら簡単に紹介してくれました。モバイルアプリのハッキングはこんなにも簡単にできてしまうのか!とびっくりするほど容易にしていました。ハッキングができるツールなどを用いればどんな人でもアプリのハッキングができてしまうことに驚いたと同時に恐怖を感じました。セキュリティって大事だと思いました。少しずつセキュリティの知識と実装も考える必要があると思いました。

また、オルトプラスさんが開発されているDxShieldというモバイルアプリのセキュリティを簡単に実現してくれるサービスを紹介していました。

DxShield |開発者向けアプリケーションセキュリティサービス

これでモバイルアプリを簡単にセキュアにできそうです!

今すぐ始められるモバイルVR。あなたも今日からVRエンジニア(比留間 和也)

今流行りのVRに関して、少し興味があったので聞きに行きました。コロプラでVRの開発や趣味でVRの開発をしているという比留間さんの講演です。 モバイルVRの基本的な開発の話や今のVRのデバイスの話、開発手順を簡単に話してくれました。

モバイルVRであれば開発も自分のスマホを用いれば良いので取り組みやすくてVRを体験できるということなので、今度時間がある時にサンプルプログラムでも作成してみようかと思います!

モバイル CrossSession

それぞれAndrod、Swift、ReactNative、Xamarinの開発者の方々の話を聞くことができました。それぞれ違うプラットフォームでの開発者なので色んな話があり、とても面白かったです。Androidは開発の経験がありますが、他のプラットフォームの話が一度に聞けてとても勉強になりました。 技術は臨機応変に変更したり対応すれば良いという学びもありました。 また、Androidの開発者である、こにふぁーさんがFlutterについても話をしてくださり、今度自分でFlutterでiOSAndroidのアプリを作成してみようと思います!

AI CrossSession

AI分野で活躍されているエンジニアの方々のセッションでした。 今、AIや人工知能が色々と話題になっておりますが、実際のところ人工知能は手段であり何か目的を達成するためのツールであるという話。AIによって職が奪われていくことに関してはどうなのか?という話がとても面白かったです。

XR CrossSession

VRの著名な開発者の方々だけでなく、バーチャルYoutuberであるねこますさんも参加していてとてもおもしろいセッションでした。話している方々はどの方もXRをとても好きで開発しているのが伝わってきました。 VRの未来についての話はとても興味深く、面白かったです。特に、VRの中でVRのゲームなどの体感とかできないのか?は面白かったですね。アプリ間を渡るという考え方とか面白い考え方でしたね。 ねこますさんも色々と面白かったですw

2日目

2日目はLT枠以外は屋上でセッションを聞いていました。

基調講演

今や誰もが知っているGoogleマイクロソフトなどを渡り歩いてきた及川さんやサイボウズ・ラボの西尾さんがエンジニアとして生きていく上でどう生き抜いていくのか、またどういったエンジニアになっていくべきなのか、そのためにはどうしたら良いのかを講演してくれました。

  • エンジニアには、知識、技術力、経験の3つが重要な要素であり、知識を蓄え技術力にし経験から学ぶというサイクルが大事ということ。
  • 手段から目的を作っても良いという話(やらない・使わない環境にいることがリスク)。
  • 異なるドメイン、距離やベクトルの遠いものを戦略的に選択していく。
  • 異なる技術でも共通性があり、過去の技術から新しい技術を習得しやすくなる。
  • 結局、気持ちが大事!

という話を及川さんが話してくれました。 西尾さんからは

  • 限られたリソースを何に配分するか意思決定する
  • 個人のリソースの限界
  • 選択肢が全部あるのか、無意識に選択肢を減らしていないかを疑え
  • 知識獲得戦略:小さなコミュニティを作る

などの話を聞くことができました。

プログラミング CrossSession

プログラミングについてどんな学び方をしているのかや複数の言語の扱い方などを聞けたりしました。 特に興味深かったのは、速さと綺麗さはトレードオフの関係であり、どちらを優先するのか?の話は面白かったです。

IoT CrossSession

自分も大学でIoTに関係する研究をしているので話している内容が面白かったです。 MQTTの話では、HTTPでも良いんじゃない?自分の好きな方を選べば良い。これからはどんどんハードウェアが進化もしていく。などは確かにと思う部分もありました。 お酒もはいっていたので良い感じに話も盛り上がり面白い話が聞けました。

Web CrossSession

このセッションでは、React、Angular、Vueなどそれぞれのフレームワークに精通しているエンジニアの方々の話を聞くことができました。 SPA(シングルページアプリケーション)についてや、これからのWebがどう進化していくのか、Webの標準になって欲しいものは?など気になるテーマばかりでトークを聞くことができました。 あまり、Webアプリケーションに関しては知識とかなく分からない部分もありましたが、楽しく聞けました。

生存戦略 CrossSession

このセッションでは、会社でも重要なポジションにいる方々がどのような考えを持っているのか、これからエンジニアとして生きていくのにどのような戦略が必要かなどを聞くことができました。 また、オーディエンスからテーマを1つということで学生の方が、学生の自分に向けて何かアドバイスを!というテーマでまさに自分にうってつけなテーマが(笑) そのテーマでは

  • 自分の勉強の仕方を効率よくしていく。
  • 技術などを早くキャッチアップしたものが勝つ。
  • 時間とお金を自己投資する。

という3つのアドバイスがあり、これからの生活に役立てていこうと思いました。

終わりに

初めて大規模な勉強会に参加しましたが、どれも自分にとっての学びが多く参加してよかったと思いました。 また同じイベントが開催されたら参加したいと思います。

Android アプリ設計パターン入門を購入

技術書のクラウドファンディングがあるのを知ったのは最近なのですが、Android開発に関する書籍が執筆され発売されました。

自分もAndroidの開発は好きだし、勉強中であるので早速購入しました。これから勉強に励みたいと思います!

下記のリンクの本が購入した書籍です。

Android アプリ設計パターン入門

Android アプリ設計パターン入門

  • 著者:日高 正博,小西裕介,藤原聖,吉岡 毅,今井 智章,
  • 製本版,電子版
  • PEAKSで購入する

また後でレビューを書きたいと思います。

GitHubでgit pushできなかった件

いつも自分は、リモートのGit管理ツールとしてGitLabを使っている。 GitHubを久しぶりに使ってみたところ、何故かリモートリポジトリにpushができない…。

そこで色々ググってみて対処できたのでメモ。

GitHubのセキュリティ設定によるエラー

ちなみに、GitHubにはSSHでGitLabとは別のSSHキーを設定して接続。SSHキーの設定は以下のサイトを参考に。

qiita.com

dev.classmethod.jp

話が逸れましたが、原因はセキュリティ設定のEmails設定ページにある下記の設定だった。 f:id:ryu236:20180128000017p:plain このKeep my email address privateにチェックを入れてあると、自分のアカウントに設定してあるメールアドレスではなく、説明欄にある@user.noreply.github.comのドメインアドレスがGitHubでGitを扱うときのアドレスになる。なので、PCなどのgit config設定をこのアドレスにする必要あり。

また、Block command line pushes that expose my emailにチェックが入っていると、コマンドによるgit pushができない。なので、コマンドで操作するときはチェックを外す必要あり。

git merge時に--allow-unrelated-historiesオプション

git pushするのにmergeしなきゃいけなくて、mergeするのにもエラーが出た。(下記のようなエラー)

fatal: refusing to merge unrelated histories

--allow-unrelated-historiesオプションを付けて解決。下記を参考。

qiita.com

これでgit pushのエラーがとれた!

2018年の抱負

f:id:ryu236:20180105012640j:plain

2017年にはブログを開設しましたが、全然記事を書きませんでした(笑)…

せっかくブログを開設したので記事を書かないともったいないですよね。

 

ということで、今年の生活やブログの抱負を書きたいと思います!

 

今年の目標として、下記に示したことを頑張りたいと思います!

  1. ブログを書いたりなどのアウトプットをしていく(3記事/月程度)。
  2. 本を読む(最低3冊/月)。
  3. OSSのコントリビュートをする。
  4. 筋トレをする。

上記の4つをとりあえずを2018年は頑張りたいと思います。

 

まず、ブログやQiitaなどで自分のインプットしたことをアウトプットしていく。これは自分の理解を深めたり、知った情報の記録にも役立つと思うので取り組んでいきたいと思います。

次に、本を今年はたくさん読んで知識をインプットしたいと考えています。Kindle Paperwhiteも持っていますので、Kindle本を買えば通常より安く本が買え、持ち運びも楽!今年は本を読みまくっていこうと思います!

そして、OSSのコントリビュートを今年は目標にしていきたいです。今、OSSのアプリやライブラリなど沢山のOSS製品に支えられて生きています。そのOSS製品に少しでも自分が関わってみたいのと、自分の技術力を身につけるモチベーションなどにもしていきたいと考えたからです。今はまだ全然技術力がないですが、自分のできる範囲でOSS製品のコントリビュートをできたらと思います。

最後に、筋トレ!個人的なことなのですが、自分のお腹や体が大分たるんできています(特に最近)。その改善策として、まずは筋トレ!できれば、ランニングなどして体力の向上にも取り組んできたいと思っています。とりあえずは、すぐできる筋トレをやろうと思います。

 

ということで、今年の抱負として記事を書きました。ブログの記事を書いたからにはしっかりと有言実行をしていきたいと思います!(笑)

 

以上、新年あけましておめでとうございます!