今年も高専プロコンに出場します!

こんにちは、村人Bです。
私、今年度はシス研の副部長を務めさせていただきます。

さて、先日、今年度のプロコンの予選結果が発表されましたが、本シス研からは自由部門に1チーム、協議部門に1チーム、競技アイデア部門に3チームが予選通過となりました。私は、担当した課題部門のチームはD判定で予選落ちでしたが、競技アイデア部門に熊本キャンパスの電算部と合同で出場します。5チームも出場するので、10人を超える徳島への大移動となりそうです。(移動にもかなりの時間がかかりますし)

複数のチームを掛け持ちしている人もいるので、今年も大変な夏休みになると思います。私はかなり特殊な条件での本戦参加なので、自分の担当以外の仕事を多くすることになると思います。

また、今年はプロコンの日付が高専祭とかぶってしまい、高専祭のシス研のブースを管理する人間が非常に少なくなっています。人間だけでなく、展示物もさほど用意できないかもしれません。もし時間があればカトルちゃん(私のアイコンのAI)を完成させ、展示物として置くことができればいいなと思います。

大事なことは書いたので、今回はこのあたりで終わらせていただきます。今年のプロコンも賞をとれるよう、部員一丸となって頑張ります。この記事を読んでいる皆様も応援のほどよろしくお願いいたします。

UnityでARアプリを作ろうとした話【Vuforia】

どうも、スーパーおひさしぶりなXPです。
GW 1日目いかがお過ごしでしょうか

最近は卒業研究にモチベーションを吸い取られて部活に全然顔を出せていないので、
部員の皆様への近況報告も込めてこの記事を書いています。
後輩くん達はプロコンのアイディア出しが難航しているようですが、この記事がアイディアのネタにでもなれば幸いです。

今回は自分がハマったエラーを中心に書いていきます。

 

■作ったモノ

動画の通りARマーカーを読み込むだけの簡単なiphoneアプリです。
iphoneの画面をキャプチャしました。


 

■動作環境

PC      : macOS HIghSierra
スマホ : iphone iOS 11.2

Unity2017.4 (64bit)
Xcode 9.4 beta

AR用のライブラリ
Vuforia (公式サイトhttps://developer.vuforia.com )

 

■やったこと

https://qiita.com/murasan/items/b31d9deb6d8b24bd9134
まず、こちらのサイトを参考にしました。
動画での画像もこちらのサイトからお借りしたものです。

もともとUnity5で制作していたのですが、途中でUnity2017を使用することにしました。

Unity5ではVuforiaを利用するためにSDKのダウンロードが必要でしたが、
Unity2017では Player > XR Setting から Vuforia Augm(ry にチェックを入れると導入できます。
(「Unity2017 Vuforia」でググると色々と出てくるので、詰まったら参考にしてみてください。)

さてさて、先人達のお陰でPCで動作するARアプリは簡単に作成できました。
後は File > Build Settings からプラットフォームをiOSに変更して Build & Run するだけ!
めっちゃ簡単!

と思っていたんですが、
iphoneにビルドする時に地味にエラりました。

 

■エラーの対応

Unity側の対応 
・利用デバイスをiphoneのみに (デフォルトは iPhone & iPad)
・カメラの使用理由を記述

Xcode側の対応
 ・Architectures を arm64 のみに変更

 


こんな感じで対応しました。
色々調べたのですが、こちらのサイトにがまとまってて非常に役に立ちました。
http://korechipostit.hatenablog.com/entry/2017/10/31/203952


カメラの使用利用を記述しないといけないのには驚きました。
本職の方々からすると常識なのかもしれませんが()
こちらのサイトを参考にしました。
https://qiita.com/JunSuzukiJapan/items/e7c04072ac5e83fa6595

上のような対応をしたところ無事に実機で動作しました。
今回のアプリを色々と発展させて今後なんやかんや作って行こうと思います。
(モチベが続けばまた記事書くかもです)

 

 

だいぶざっくりですが、メモ書き程度に書き始めたので許してください…
それじゃ皆さんも良きGWをノシ

 

 


担当:XP

日本情報オリンピック2017-2018 本選参加記

2/10(土)から2/11(日)につくばで行われた第17回日本情報オリンピック本選に参加してきました.

 

会場までの移動(2/10)

飛行機で関東まで向かいました.あまり飛行機には乗ったことなく耳が痛くてつらかったです.

関東についてから会場があるつくばまでの途中で秋葉原に昼食をとるために寄りました.蒙古タンメン中本に一度は行ってみたいなと思い蒙古タンメン中本まで向かったんですが,行列がすごいことになっていて並んでいたらプラクティスに間に合わないことを悟り適当に店を探して昼食を済ませました.ヨドバシカメラすごかった.

昼食を済ませた後はつくばエクスプレスで会場であるつくばカピオまで向かいます.

 

会場到着後(2/10)

会場に到着したので本人確認や交通費振込申請などの受付を済ませます.
20180210_210836
受付で予選Aランクの楯をもらいました.うれしい.

荷物置き場に荷物を置きに行ったんですがプロたちがたくさんいてこわかったです.

会場についてしばらくすると本選環境に慣れるためのプラクティスが行われました.
プラクティスはそこまでの難易度はなかったので何とか全完しました.4問目がかなり苦手な類だったのでバグらせずに実装出来てよかったです.

プラクティス後はCiscoの方による講演会がありました.詳しい話をすると長くなるので省きますが,情報セキュリティ関係の話でした(Ciscoなのでそれはそう).情報セキュリティにはそれなりに関心があったので講演を聞けて良かったです.

講演会後は夕食も兼ねての交流会がありました.1人1人自己紹介があったんですが名前しか言えなかったうえにコミュ障を拗らせすぎて席の確保さえ困難でした.つらかった.コミュニケーション力大事.

 

本選競技(2/11)

翌日の2/11(日),9:00~13:00の4時間にかけて本選競技が行われました.問題や解答はこちらで公開されています.

結果としては150点,Bランクでした.最初の20分くらいで1問目を解きましたが,2問目の小課題3までは簡単に思いついて部分点をとるために提出して50点を得て以降は満点解法を狙って残りの時間ずっと詰まっていました.他の問題の部分点をとるために時間を回すべきでしたね…

もともと春合宿にいける精進も実力も全く足りないと思っていたので,Bランクをとれただけでも割と満足ではあるんですが最後のJOIともあって少し悔しさが残りますね.

本選後は問題作成者による解説がありました.解説を聞いていた感じだと2問目があと少しのところだったのでさらに悔しさがありました.
飛行機の時間の関係で解説を4問目まで見て会場をあとにしました.

 

最後に

もともと予選さえなぜAランクをとれたのかわからないくらいの精進量だったので本選へ出場できただけでも良い体験になったと思います.
僕はもう本選には参加することができませんが,まだ本選参加資格のある後輩,来年度入ってくるかもしれない新入部員には是非予選でもAランクをとって本選に出場してくれたらなと思います.しかし本選となるとかなりの実力が求められるのでそれなりの勉強や精進が必要になってきます.あまり精進しておらず結果を残せなかった僕が言えたことではありませんが,競技プログラミングは才能の差が顕著に表れる世界なのでそれを埋めるためにもより多くの努力をする必要があります(弊部活に競技プログラミングに触れている人が僕以外にいないという問題もありますが…).競技勢増えて(切実).

来年度にもSuperConやパソコン甲子園などがありますのでもこれ以上に精進していきたいと思います.

引率してくださった顧問の先生,情報オリンピック日本委員会の方々,スタッフの方々,本選参加者の皆さん,とてもいい体験になりました.本当にありがとうございました.

はじめまして。

後期から新規に入部したfurufuruです。まだ覚えることはたくさんありますが、少しずつやっていきたいと思います。
学ぶことが多く、なかなか難しいなと思います。でも授業が楽にわかるのでとても助かっています。これからはもっとプログラミングの世界を自分の中で広げていけたらと思います。

そんな授業で先日課題が出ました。合格はできたのですが、教えるうえで自分の欠点を見つけました。ある同級生の部員から「コピーできない人が多くて困った」と言われました。
どういうことかと思いましたが、変数の値を決めずに式の答えとして代入させていたみたいです。私は入力された変数をもう一度使っていて、そのため値が入った状態だったみたいです。
こういうところで学ぶことって多いですね、、、。

こんなまだまだ未熟すぎる部員ですがどうぞよろしくお願いします。

STLを活用しよう

この記事は熊本高専Advent Calendar2017 3日目の記事です.


数か月ぶりの投稿になります.民です.最近書いてなかったので僕が言えたことではないですがみんなブログ書きませんね.そもそも存在を忘れていそう

用途にもよりますが皆さんプログラミング言語は主に何を使用しているでしょうか?
僕は主にC++とHaskellを使っていて,新入生に対してもC言語を教えているので今回はC++のSTLについてお話しようと思います.

STLとは?

STLとは,Standard Template Libraryの略で,C++の標準ライブラリの1つになります.ヘッダファイルをインクルードすることで使うことができます.
しかしここで注意してほしいのは,Cの標準ライブラリのように関数名だけを書くだけでは駄目で,std名前空間を指定する必要があります.名前空間については説明が面倒なのでC++の参考書を読むなりググるなりしてください.

今回はSTLの中でも自分が特に便利だと思うものを紹介します.今回はあくまで紹介なので使い方に関しては参考書読(ry

~アルゴリズム系~

・std::sort

algorithmヘッダをインクルードすることで使用することができます.
概要としては名前そのままで,引数の範囲をソートします.
クイックソート(C++11以降ではイントロソート)で実装されており,計算量はO(N log N).

・std::next_permutation

algorithmヘッダをインクルードすることで使用することができます.
順列を生成してくれます.ただしソートされている必要があります.計算量は最大O(N).

・std::lower_bound

algorithmヘッダをインクルードすることで使用することができます.
指定された要素以上の値が現れる最初の位置のイテレータを取得することができます.いわゆる二分探索みたいなものです.計算量はO(log N).

・std::upper_bound

algorithmヘッダをインクルードすることで使用することができます.
指定された要素より大きい値が現れる最初の位置のイテレータを取得することができます.std::lower_bountと同じく二分探索みたいなものです.計算量はO(log N).

~データ構造系~

・std::vector

個人的にダントツで使ってます.重いけど便利.
vectorヘッダをインクルードすることで使用することができます.
いわゆる動的配列と言われるもので,可変長配列として実装されています.配列の動的確保と何が違うかというと,vector自体がストレージを管理しているため,自動的に領域が確保されます.

 ・各要素への添字アクセス(定数時間)
 ・全要素の両方向の走査(線形時間)
 ・末尾への要素の追加・削除(償却定数時間)
という点で優れているのが特徴です.いろいろなメンバ関数があるのでぜひ触ってみましょう.

・std::map

mapヘッダをインクルードすることで使用することができます.
キーとそれに対応する値を格納するデータ構造,いわゆる連想配列といわれるもので,二分木(赤黒木)で実装されています.
こちらにもさまざまなメンバ関数が存在します.

・std::priority_queue

queueヘッダをインクルードすることで使用することができます.
いわゆる優先度付きキューといわれるものになります.

 

以上,本当にざっと紹介しただけでしたがSTLはかなりの数が存在し,正直列挙できるような量ではありませんのでその都度調べたりしましょう.
これを機にSTLや標準ライブラリに対して興味を持ってもらえたらなと思います.
アルゴリズムだったりデータ構造だったりを一から実装していくのもアリですが,ライブラリに存在するものは積極的に活用していくことしていくことをおすすめします.

 

次は高専プロコンの振り返りとかをAdventCalendarも兼ねて誰か書いてくれるはず…書いてくれるよね?