読者です 読者をやめる 読者になる 読者になる

22時に寝ようと思って2時に寝る。

備忘録や日記を書いてます。きょうは早く寝よう。

yurueチームのWebサイトを公開した件とそのふりかえり

日記

f:id:azuuun:20160505025306p:plain

現在、大学での友人と組んでいるyurueというチームで活動しています。最近このyurueのWebサイトが完成し、公開することができたので、この記事でその過程だったり、思ったことをまとめておきたいと思います。 yurue.xyz

はじめてチームとして取り組んだプロジェクト

yurueがチームとして大学内の友人たちと2015年夏に結成し、初めてのプロジェクトとしてこのWebサイトの制作に取り掛かりました。「まず最初はWebサイトつくるのが良さそう」「アプリ開発とかよりも、とりあえず取っ掛かりやすそう」「それじゃあWebサイトつくるか」という感じで、Web制作プロジェクトをスタートさせました。結果、制作期間は半年以上かかってしまいましたが、この半年の中で学んだことは多く、今後に生かされていく気付きも得られました。

はじめてのチーム開発

f:id:azuuun:20160429091725p:plain

開発を始めた当初、自分は「仲間とチーム開発するのは、ひとりで開発するよりモチベーションは維持しやすく、何より楽しそうだし、これから最高の環境を作っていこう!!」とやる気がみなぎった状態でスタートを切りました。チームとしてもこの時のモチベーションはとても高まっていたと思います。チーム開発としてはGitHubやSlack、Trelloを用いて行い、定期的に勉強会、もくもく会で教え合いながら制作を進めていました。

ただ、一からウェブ制作して公開したことがあるメンバーがいなかった、というのもあって

  • デザインが超アバウトなワイヤフレーム爆誕
  • デザインしたはいいけど, 実現(コーディング)方法が分からない
  • どう役割分担するのが適切か分からない
  • Git使ったことがない
  • GitHub?プルリク?マージ?コンフリクト怖い
  • タスク管理難しい ツール放置
  • Slackで意思疎通が難しい

問題が次々と出てきて、空回りしながら気持ちだけが前に進んで進捗が出ない状況が続きました。

誰かがリポジトリにpushしたときに、「おっ」と背中を押される感覚

上のような状態って、ひとりで制作していたとしたら完全放置にやる気が無に帰するパターンで、しかも罪悪感も感じて「もう無理なんじゃないか」とかネガティブ思考になりがちです。よく言われる負のスパイラルに突入しちゃってます。ただ、チームだとこの状態から救われる瞬間があって、たとえば自分のモチベーションが下がってしまっている状況の中で「◯◯がGitHubリポジトリにpushしました」みたいな通知がSlackに入ると、「おっ、俺もコード書こう。」と背中を押される感じで、連鎖的にモチベーションが上がってくることが何度もありました。この、連鎖的モチベーションはまさに正のスパイラルで、チーム開発の醍醐味でもあると思います。

大切なのは小さいことの積み重ね

このWeb制作の過程では、デザインから求められるコーディングスキルが高すぎたために、思うようにコーディング捗らない問題が頻発しました。そういった「理想のデザイン」を無理に設定して実現するよりも、優先的に現状のチームの技術レベルを考えて「これなら俺たちでもできる」という手が届きそうな地点に適切なマイルストーンを設定して、一つ一つクリアしていくことが必要でした。自分の書いたコードによってカタチになっていくのは楽しいし、「できた」という自信がちょっとずつ積み重なっていくと内的にモチベーションも湧いてきて良い感じです。考え方として「機能的な要素は後から徐々に追加していければ理想だよね」程度に進めるのがちょうどよいと思いました。

「誰がやってる」、「誰がやってない」という話は何も生み出さない

このあたりの話はうまく言語化するのが難しい話だったりしますが、結構大事なことだと思っています。これまでチームで色々作ってきてメンバーから「自分はみんなよりコードを書いていないから」「みんなより技術力が低くて貢献度も低い」というようなフレーズを何度か聞きました。ただ、自分としてはそんなことは全くそんなことは気にする必要はまったくないと思っています。確かに自分もそういう立場にいると、ついついマイナスに考えてしまいがちです。ですが、たいてい周りよりもそのプロジェクトにおいてサクサク動いている人は、その作っているものを「自分はもっと良くしたい・おもしろくしたい」という内的衝動に駆られて自分自身が楽しみつつ動いていて、特定の誰かに対して行っていることではないと思います。だから「◯◯は貢献していない」なんてネガティブな考え方は微塵も考えていないだろうし、むしろ周りに対しては「一緒にいいものを作っていこうぜ!」というマインドを持っている(振る舞う)人の方が多いのではないかと思います。

自分自身はそういう振る舞いをするメンバーでありたいし、そういったマインドを持ったメンバーで動いていけるチームになっていけば、最高だなぁと思います。技術力はまだまだなチームですが、これからも一緒にいいものを作っていこうぜ!という気持ちでやっていけたらな、と思います!

以上です。

ニコニコ超会議2016に行ってきた。

日記

Rootersのアプリデモをしてきた

先週の土日の4/29-30で開かれたニコニコ超会議に30日だけyurueとして二名が岩手県ブースの一部で参加しました。詳しくは、yurueが現在開発中の2016年いわて国体観戦スケジュールコーディネートAndroidアプリRootersのアプリデモを行っていました。今回デモを行ったアプリに関しては、以下で発表したものです。

azunobu.hatenablog.com

超会議、すごい熱気だった

f:id:azuuun:20160502164413j:plain

前日に岩手から東京・新宿へ向かい前泊して、当日は新宿から幕張メッセに向かいました。

開場直後、割とブースが入り口に近かったため、物凄い大群がダッシュでブース前を疾走していく様子や、コスプレで楽しませてくれるレイヤーの方々など、見てて楽しかったです(ちょっとしたパレード的な感じでした)。こんな雰囲気で、最初から会場全体が超!エキサイティン!!な感じになり、終了の17:00の最後の最後まで常に熱気に包まれていました。

自分は休憩時間にドワンゴエンジニア謹製 オープンソースやきそば を食べたり(カレー味美味しかった)、いろんなブースを周ったりして、とても楽しめました。

たくさんの人にアプリを触ってもらった

写真に写っているのはyurueのメンバーであるmsk6252くんです。めっちゃ熱く説明をしていました。

メインのアプリのデモ紹介では、客引きしながら紹介しつつ、たくさんの方にアプリに触れてもらうことができました。直接アプリに触れてもらってフィードバックを頂ける機会はなかなかないので、今回頂いた貴重なレビューは今後に超活かしていこうと思います。フィードバックの所感としては、ポジティブな面よりもネガティブな面が多かったように思います。今後これらを解決できるように、開発を続けていきたいと思います。

言の葉の庭の聖地に行った

www.kotonohanoniwa.jp

前泊で新宿に泊まることになったので「言の葉の庭」の聖地である、新宿御苑にて聖地巡礼しました。

シンプルに言って、サイコーでした。聖地巡礼するのは初めてでしたが、めっちゃいいです。

f:id:azuuun:20160502190556j:plain

f:id:azuuun:20160502190551j:plain

今回は大宮駅で新幹線を降りたので、大宮駅の聖地もバッチリ巡礼できました。

f:id:azuuun:20160502190853j:plain

f:id:azuuun:20160502190901j:plain  

巡礼して改めて「今週末また言の葉の庭見ようかな、、、」ってなってます。またどこか遠出するときに、その先に聖地があったらぜひ巡礼したいですね。

今回掲載してる写真はほとんどmsk6252くんから拝借させていただきました。一眼めっちゃ羨ましい。今回の聖地巡礼Xperiaパシャパシャするより、一眼やミラーレスでシャッター切りたい欲が高まりました。

とても良い経験になった

超会議でいわて国体自体を知らない参加者の方に、アプリを触ってもらって素直な感想を聞くことができたり、参加して本当に良かったなと思います。最近はあまり刺激がなかったので、モチベーションが下がっていましたが、今回の機会でとても高まりました。 アプリは夏にリリースすることを目標に、今後も開発を加速させて頑張っていこうと思います。

 

 

新歓のポスターを作った

日記

入学式の季節

もうすっかり春ですね。先日大学に行った際に、フレッシュで輝いた新入生がたくさんいて、眩しいなー、いいなぁ、と思いました。

とくに和気あいあいとお外のベンチに座ってランチをたのしむ姿なんかは、ほほえましく、大学生エンジョイ!って感じがあふれています。

在学生として言うと、この時期とくに盛り上がるのはサークルの新入生勧誘ですね。

ことしは新入生いっぱい入って欲しい

所属しているデジタル手芸サークルでは、いろいろやってるのですが、

最近は、アプリ開発や勉強会、というよりは、じぶんの好きな分野について自由に熱く語る定期的なLT会という新たな試みに比重が置かれて、そのLT会がとてもワクワクする感じがあって、すきです。

とくに先輩がやっている研究というのは普段の会話であまりしないのですが、この場では研究内容をかるく発表する先輩も多いので、専攻している分野以外のはなしも聞けて、勉強になります。

個人的にはすごく好きなサークルなのですが、前年度加入実績は2名、いま残っているのは1名というちょっと、残念な結果でした。

そこで今年は「勧誘がんばりたい!」ということで、ポスター制作を担当し、全力で作ってみました。

ポスターをつくった

f:id:azuuun:20160409094342p:plain

もともとスライド資料をつくる際のデザインをいじるのが好きだったり、Webサイト制作を通してデザインを考えるのが好きだったので、今回もわくわくしながら取り組めました。

今回はいい機会だと思ったので、イラストレーターCCを契約して、いろいろなサイトの説明を見ながら、見よう見まねで作ってみました。

一番、重きを置いたのは見た目のインパクトで、あとはデジ芸の活動の「ワクワク感」を表現しました(適当)

世界を見据えた感じはちょっと誇張してる感じがありますが熱さを感じるポスターになっていればいいなと思います。

きょうは新歓当日

僕は所用できょうの新歓には欠席するのですが(申し訳ないです)、たくさんの新入生が参加し、技術のおもしろさや、何かを作ることで得られるワクワク感を知ってもらい、それらを共有できる仲間になってくれたらいいなと思います。

春休みの振り返り

日記

1ヶ月ほど前に「春休みにやりたいことリスト」をあげました。

azunobu.hatenablog.com

そろそろ春休みが終わるので、かんたんに振り返っておきたいと思います。

1. Webサービス作れるマンになる

岩手県八幡平市安比高原で行われたスパルタキャンプ in八幡平PHP編に参加しました。朝から晩までの8日間のキャンプでは最終的に、ピュアなPHPでTodoリストやブログアプリを作り、その後、CakePHPを用いてMVCモデルを意識しながらおなじものを作りました。

とくに、Webアプリケーションフレームワークを使う上で重要なMVCモデルの概念について理解が深まってよかったです。モデルが何かを理解するにはかんたんなものを自分で実装してみるとよい、ということでオリジナルなモデルクラスを実装したり、MVCモデルのクラスローダの中身がどうなっているのかを理解するには自らクラスローダを実装してみる、といった一歩踏み込んだ内容も学びました。

これまでフレームワークを使いこなせて、その上でWebアプリを作れればいい、程度に考えていましたが、フレームワークの内側も理解しておくとより安心してプログラミングできて良さそうだなと感じました。

キャンプ全体を振り返ってみて体系的に学べたことでWebサービス作れるマンへの第一歩を踏み込めたように思います。キャンプが終わった今ここからが大変だと思いますが、これからは具体的に作りたいWebアプリケーションを実装しながら継続的にWebアプリ開発をガツガツやっていきたいです。

また、技術的なこと以外にも刺激的な言葉が多く、そのたびに奮い立たせられました。たとえば、

今回のPHP編のキャンプは計80時間でしたが、これは部活動の野球部に置き換えると、一日練習5時間だとして1ヶ月半程度、つまりまだ球ひろいのレベルだったりしますね。すぐできる、ということはありません。継続してやることが大事です。プログラミングも野球も一緒です。

今回のスパルタキャンプin八幡平は、講師のみなさん、受講生のみなさん、運営を支えているみなさんから刺激されまくりの日々でした。ありがとうございました。

2. Rootersを継続的に開発する

これはコードを書く、という意味ではほとんどできませんでしたが、アプリをリリースするためにクリアすべき課題の整理やこれからの予定についていろいろ話が進みました。継続的に頑張ろう。

3.Python言語の基本を学ぶ

paizaスキルレベルチェックでいうと、Cランク→Bランクに昇格できました。

さいごに

誰かが使ってくれるだろうものより、まず、自分が使いたいものを作っていきたいと思います。

春休みにやりたいことリスト

日記

ついこの前、春休みに入ったので、3月末までにやりたいことを書き出しておきたいと思います。 やりたいことだけでなく、やることも含む感じなので、やるたいことですね。いま造語しました。

1. Webサービス作れるマンになる

先日、2016/2/28から岩手県八幡平市安比高原で行われる、スパルタキャンプ in八幡平に志望動機を添えて応募したところ、無事PHP編に合格することができました。

スパルタキャンプについて簡単に説明すると、

年齢不問、経験不問、職歴不問。プログラミングを習得したいという”強い思い”を持っている人が対象の短期集中型プログラミングスクールです。短期間でスキルを本格的に身につけていくためのキッカケを提供しています。

という感じです。ちなみに講習料は無料です。スゴイ。

自分はこれまでWebアプリケーション開発を本格的に勉強したことはなく、これを機に、吸収できるものは全て吸収するスポンジと化してWebサービス作れるマンになりたいと思います。あと、PHPもあまり触ったことがないなので、ペチパーになれるようにいっぱいコード書きたい。

一つ心配なことは、日程の集合時間が早い点。いつも10時起きですが、7時ごろの電車に乗らないと間に合わないため、最低でも6時に起きないといけないです。ブログタイトルを改めないといけないですね。

2.「Rooters」を継続的に開発する

azunobu.hatenablog.com

先日、アプリコンテストで発表したAndroidアプリRootersの開発を続けていきたいと思っています。 まだまだ、アプリとしてもプロトタイプでしかなくて、クリアしなきゃいけないこと(大人の事情)もあるので、その辺を一つ一つ解決していきたいなと思います。

アプリコンテストの時や、その後いろいろな方にアプリを見てもらって、たくさんフィードバックを貰いました。なかにはドキッとするような(ときめく感じの方ではない)アドバイスも頂きました。それらを噛みしめて、より良いものにしていきたいです。

3.Python言語の基本を学ぶ

3年次以降、研究でPythonを使うことになっているので、Python力をあげたいです。これまでも、ちょこちょこ書いたことはありましたが、体系的に学んでいないので、ところどころ抜け落ちている感じがしています。基本は、オライリーの書籍で一から学んで、最近では実践も兼ねて、paizaのコーディングスキルチェックをPythonで解いてみています。レベルがEからSまであって、現時点でCレベルなので、春休み中にレベルBに昇格できるように頑張りたい。ちなみにレベルCだと推定年収が270万円とのこと。レベルBだといくらなんだろう。気になる。

さいごに

いまやるたいことを、がんばろう。

いわてアプリコンテスト2015で大賞をいただきました。

日記 プログラミング

f:id:azuuun:20160202234637j:plain

先日、1月30日に行われた岩手県主催のいわてアプリコンテスト2015に出場し、アプリケーション部門大賞とモバイルファクトリー賞をいただきました。

今回は、同じ学部の3人の友人と組んだチームyurueとして応募しました。 ちなみに、ややこしく読み間違われやすいのですが、ゆる良いものを作りたいという意味からyurue(ゆるいー)と読みます。上の写真だと、僕はそばっちの隣の真ん中のやつです。みんな、そばっちのポーズです。

応募から、発表まで何をしたのか、ブログでまとめておこうと思います。

応募まで

いわてアプリコンテスト2015が行われることは知っていたものの、開催時期が期末試験と重なってしまっていたので、正直、かなり迷っていました。応募締切まで一週間に迫ったあたりで、yurueの一人から「アプコン出ないん?」と持ちかけられて、「ん〜〜〜〜〜」と悩んだ末、「よし、やろうか!」と一念発起しました。同時に期末試験はあきらめました。(学生として非常によくない)

やるからには中途半端はなし、ということで、その日から毎日話し合いの機会を設けてアプリ案を書類にまとめる作業、同時進行で、Androidアプリ開発勉強会を行いました。

この時点のメンバーのスキルとして、自分以外はJavaは書けるがAndroidアプリ開発は初めてという状況でした。自分も、Androidアプリ開発は入門レベルしかなく、しょっぱなから"本当に実現できるのだろうか"、という危機感がありました。

応募の方は、問題なく完了しました。この時点で12/18。

激動の1ヶ月半が始まりました(大袈裟)

開発

我ながらコンテスト1ヶ月半前の時点でAndroidアプリ開発を学び始めるのはかなり無謀のように思いました。でも、やるしかない、後に引けない、ということで地道にやっていくことにしました。

最初の10日間

https://gyazo.com/331dc54a67814273d5dbd3a593c1d890

まずは、やさしいAndroidプログラミングの写経から始めました。

やさしいAndroidプログラミング 第3版 (「やさしい」シリーズ)

やさしいAndroidプログラミング 第3版 (「やさしい」シリーズ)

ドキュメント共有サービスのesa.ioを使って、

  • 必要と思われる部分のコードを写経しコードが実行できることを確認し記事にしてメンバーに共有
  • その記事を読みメンバーが写経し、理解。

この繰り返しで、入門レベルの部分を10日ほどでクリアしました。自分が写経し、動いたという保証があるコードをメンバーに写経してもらうことで、変なところで躓くことを防ぐことができました。 躓いたとしても、動くことは保証されているので「俺もそのエラー解決出来ない…」みたいな共倒れは起きませんでした。

調べまくる

入門レベルをクリアしたところで、さっそく先が見えない状況になりました。

「xxxな機能を実装したい」

どうしたらいいんだろう。わからない。

Google先生に聞きまくる。答えが見つかる→実装できる。先人たちの備忘録が本当にありがたかったです。

結局発表の前日まで、Google先生に聞きまくって、やっとのおもいで実装する、その繰り返しでした。

この時点で、周りのメンバーはなかなか厳しい状況になっていて、タスクを割り振っても、しばらくして、進捗を確認すると「出来ない」との返事で、3日後ふたたび確認しても「出来ない」という感じでした。

参考になりそうなサイトや技術書を探して教えてあげるなど、自分なりのサポートをしてみたものの、思うように捗らないようでした。実装できないことで自信をなくしていくのが目に見える感じで、徐々にチーム全体の士気が下がっていきました。この辺、わりと自分も精神的にきつかったです。

自分も力量不足で目の前にあるタスクでいっぱいいっぱいで、メンバーへ教示してあげるという時間も割くことができませんでした。結果、この時点で自分のみコードを書くことになりました。

メンバーには、データベースの入力作業、フリー画像素材の収集などのタスクをお願いすることになりました。

なんだかんだで、かたちになった前日。

https://gyazo.com/4eea6816dcd7039d820fd28770a70956

一週間前にやっと、それっぽい、かたちになってきました。 データベースのデータを乗せて動作確認、「おぉ、動く。スゴイ。」みたいな。

この時、当日発表する資料も同時並行で作っていました。応募した時点で仕様として書いていた機能のいくつかが未だに実装できてない状態だったので、コンテスト三日前に提出しなくてはならない発表資料にもその機能を実装した前提で書いてもいいものだろうか。もし実装できなかったら、その発表資料はどう説明したらいいのか。。。とか考えましたが、結局書きました。

その懸念していた実装は発表前日に完了できたので、結果オーライということになりました。

発表当日

お腹の調子が優れないなどのトラブルがありましたが、なんとか無事に発表することが出来ました。

内容については以下のスライドを用いて発表しました。


発表は思ったよりも会場の反応が良くて、ところどころで軽い笑いが起きたので、「笑いもあるプレゼンをしよう」という目標は達成できました。

他のエントリーした方々のアプリはどれもレベルがとても高くて驚きつつ、内容が面白く、この日はかなり刺激を受けました。

その後、昼にはブース型の説明コーナーがあり、プレゼンを聞いて興味を持ってくれた人がアプリを触りに来てくれたのは、非常にうれしかったです。 この時間に、たくさんの方からフィードバックを得ることが出来ました。 ここでの話は、とても印象的で、充実していて、これまで頑張ってきた一ヶ月が報われた感がありました。

審査結果

f:id:azuuun:20160202234632j:plain

大賞とモバイルファクトリー賞をいただきました。賞金も!

モバイルファクトリー賞では、駅メモのTシャツやぬいぐるみを頂きました。とても、かわいい。 さっそく懇親会でみんな揃って駅メモTシャツを着てました。

まとめ

  • あきらめないで最後までやり遂げられた達成感。
  • 発表したアプリ、Rootersを実際にリリースする段階まで頑張りたい。
  • yurueとしてさらにもっと頑張りたい。
  • 期末試験もベストを尽くした(と思う)

追記

大学で所属しているデジタル手芸サークルの「DH LTM Ver 1.2.6(LT会)」にて報告させて頂きました。 そのときの資料を貼っておきます。

DH LTM Ver 1.2.6 | Facebook

SQLiteでno such columnが出た

Android 備忘録

Androidアプリ開発でSQLiteを扱っていてno such columnというエラーが出た。

今回は、Androidアプリ外(sqliteBrowserなど)で作成したデータベース(hoge.db)をassetsにコピーして読み込み、活用しているパターンです。

発生したタイミング

  • データベースの内容を更新し、assets内にある古いデータベースから新しいデータベースに入れ替えた。
  • 中身だけ更新しているのでデータベース名は一緒。
  • エミュレータで実行。
  • 「おめーの定義したcolumnねぇから!!」

原因

  • 通常デバッグするときは、エミュレータ内に既にインストールされている開発中のアプリにさらに上書きする形だが、データベース自体は上書きされていないことがある。
  • 名前が一緒だと更新されないで再利用される?
  • ということなので、更新して新しいSQL文に書き換えても古いデータベースを参照し「存在しないカラムがある」というエラーが出た。

解決方法

  • 一度、エミュレータ内にインストールされた開発中のアプリをアンインストールし、再度デバッグを実行する。

実は、no such columnエラーは二度目で、ずっとSQL文とにらめっこしていた。