どくぴーの備忘録

真面目なことを書こうとするクソメガネのブログ。いつ投げ捨てられるのかは不明

所謂「エンジニア逆求人系」イベントを開催している3社のイベントにいろいろあってここ二ヶ月で全部参加した話

1/17に,ジースタイラス社開催の「ITエンジニアプレミア逆求人」というイベントがあったので参加しました.

どんなイベント

www.studenthunting.com

所謂「逆求人系」イベントという,企業との面談を行えるイベント.最近増えてきた気がします.マイナビとかでよくある企業の説明会というと,企業がブースを構えていて,学生が行きたいとこに行く.という形を取ると思うのですが,学生がプレゼン資料とかを構えて企業の側が「お話したい」という学生をその中で回る,という意味で「逆」ということだと思います.

今回参加した「プレミア逆求人」は,同社が今年度中に開催した各イベントで全体的に良い評価を受けた学生が参加できるとかなんとかだそうです.ちなみに誰かが言った「プ求人」という略称が妙に気に入ってるのでこれ以降使っていきます.

どんな話するの

学生次第なところがありますが,就活とかそんな話が主と思いきや.逆求人系イベントはエンジニアの方々(CTOの方の場合もある)が来てくれるので,技術の話や,果てはキャリア等人生相談までできる,なんてこともあります.と言うかソッチのほうが長くなったりします.自己PRのスライドからフィードバックをもらったりもします.多分.

感想

あまり就活就活した雰囲気がなく,自身としても就活就活したものを用意してなかったので,企業さん自体のお話以外でも技術に関する雑談や人生相談がはかどりました.後述しますが自分としては逆求人系イベントには就活と同じくらい「一度会ってみたかった企業さんに会える」ことに重点をおいているので ,個人的にはとても良かったのかなと思います.

タイトルに戻る

「エンジニア逆求人系」イベントを開催している企業さんは,今回のプ求人のジースタイラス社以外に,サポーターズ社やキャリアセレクトという就活支援サイトを運営しているローカルイノベーション社等あります.僕はなんやかんやあって,その3社の開催しているイベントに参加しました.どうやら二ヶ月間の間でだそうです..

なんか違ったの

微妙には違います.良し悪しとか言う点ではないので大丈夫です.イベントによっていらっしゃる企業さんの範囲が変わったりするのもありますが…

  • ジースタイラス社:Skype等で通話によるプロフィールやプレゼン資料の添削がある.企業さんからのアクションが「メッセージ」という形でくる.お話した企業からフィードバックが仕組みとしてある.開催しているイベントは(見える限りは)説明会やセミナー.
  • サポーターズ社:プロフィールを読んだ企業から「スカウト」という形で直接面談やイベント等のお誘いが来たりする.更新頻度が多い.フィードバックは仕組みとしては無い.学校に来てセミナー等のイベントをやったりしていることもある.京都にオフィスがあるので関西でイベントが開かれることが多め
  • ローカルイノベーション社:キャリアアドバイザーにプロフィール等の添削をしてもらえる.フィードバックが仕組みとしてある.開催しているイベントは(見える限りは)説明会とかセミナー.企業さんからのアクションは特に無いがイベントリストにはセミナーに加えハッカソンなども.

と,このような感じです.ちなみにどのイベントを選択しても交通費は出してもらえます.交通費の算出方法は違いますが….ジースタイラス社の「逆求人のしおみさん」などが高専界隈でずば抜けて有名なので,ジースタイラス社のイベントに出ると高専生が多いような気がします.

全部参加したらいいの?

全部参加すると少なくともダブる企業さんが出るので,「あっ,お久しぶりです」とかそんなやり取りをする回数が増えてきます.時期が合ってるものを選ぶという考えでも十分ありかなと思います.

プ求人に出て思ったこと

多少は必要ですが,就活という意思でガチガチに固めていく必要なんて全然ないなと思いました.お話するのはエンジニアの方,ということもあるので,技術の話もしたりするので,すごい好きな話をできるというのもあると思います.企業さんを知る,考えるきっかけづくりというスタンスになるとすごい気持ちを楽にして臨めるかな…?また,企業の方との会話もそうですが他の参加者の学生さんとの会話からも刺激をえられるので,そういう意味でも良いイベントかなと思います.ただ,連続して出ると話すネタがなくなったりするし,単純に疲れる(1回の参加でも結構疲れる)ので気をつけましょう.

終わり.

Retrofit 2 + Google Maps API v2 for Android + Google Places API Web Serviceを使って指定座標付近のスポットを検索する

PlacePickerというものがある

https://developers.google.com/places/android-api/placepicker?hl=ja

PlacePicker には、地理的住所やローカル ビジネスに一致するプレイスを含むインタラクティブなマップや近隣のプレイスの一覧を表示する UI ダイアログが用意されています。ユーザーがプレイスを選択すると、アプリでそのプレイスの詳細を取得できます。

ということで,intentで専用のダイアログに飛ばして,その選択結果(1件のみ)を forActivityResult() で受け取って処理したりするのだが,わざわざ検索で別の画面に飛ばして選択させて帰ってこさせるのがなんか回りくどいと思ったのと,一度に複数件アプリ側のMap上にスポットのピンを立てたい!ということで,直接WebAPIの方を叩けば周辺nメートルのスポットを検索できたりするので,今回試してみることに

まずはじめに

兎にも角にも.Google Maps API v2 for AndroidGoogle Places API Web ServiceをGoogle Developer Consoleで有効にしましょう.Google Maps APIにはAndroidキーが,Google Places APIには(恐らく直接RESTでAPIを叩くため)ブラウザキーが必要です.

有効化ができたら.app側のbuild.gradleのdependenciesに次の記述を追加して,okhttpとretrofit,google play servicesを導入します.

dependencies {
    compile "com.squareup.okhttp:okhttp:2.4.0"
    compile "com.squareup.okhttp:okhttp-urlconnection:2.4.0"

    compile "com.squareup.retrofit:retrofit:2.0.0-beta2"
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

    compile 'com.google.android.gms:play-services:8.1.0'
}

その後,AndroidManifest.xmlパーミッションを追加します

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

また,Google Maps APIを使うためのmeta-dataをapplicationタグ内に追加したりします

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

Responseの受け皿となるPOJOクラスを用意する

Google Places API Web Serviceのレスポンス例は公式サイトで確認できます.

developers.google.com

ということで,これを受け取るためのPOJOクラスを作成します.今回は,後述しますがGsonConverterを使うので,各クラスのメンバには"m"はつけず,レスポンスのJSONの属性名に合わせます.例えば,nameであれば,mNameとするのではなく,nameのままで記述します.

まず,一番深いところにあるLocation.java

public class Location {
    private static final String TAG = Location.class.getSimpleName();
    private final Location self = this;

    private double lat;
    private double lng;

    public Location(double lat, double lng) {
        this.lat = lat;
        this.lng = lng;
    }

    public double getLat() {
        return lat;
    }

    public void setLat(double lat) {
        this.lat = lat;
    }

    public double getLng() {
        return lng;
    }

    public void setLng(double lng) {
        this.lng = lng;
    }
}

続いて,その外側にあるGeometory.java

public class Geometry {
    private static final String TAG = Geometry.class.getSimpleName();
    private final Geometry self = this;

    private Location location;

    public Geometry(Location location) {
        this.location = location;
    }

    public Location getLocation() {
        return location;
    }

    public void setLocation(Location location) {
        this.location = location;
    }
}

更に外側にあるResult.java

public class Result {
    private static final String TAG = Result.class.getSimpleName();
    private final Result self = this;

    private Geometry geometry;
    private String icon;
    private String id;
    private String name;
    private String place_id;
    private String rating;
    private String reference;
    private String[] types;
    private String vicinity;

    public Result(Geometry geometry, String icon, String id, String name, String place_id, String rating, String reference, String[] types, String vicinity) {
        this.geometry = geometry;
        this.icon = icon;
        this.id = id;
        this.name = name;
        this.place_id = place_id;
        this.rating = rating;
        this.reference = reference;
        this.types = types;
        this.vicinity = vicinity;
    }

    public Geometry getGeometry() {
        return geometry;
    }

    public void setGeometry(Geometry geometry) {
        this.geometry = geometry;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPlace_id() {
        return place_id;
    }

    public void setPlace_id(String place_id) {
        this.place_id = place_id;
    }

    public String getRating() {
        return rating;
    }

    public void setRating(String rating) {
        this.rating = rating;
    }

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public String[] getTypes() {
        return types;
    }

    public void setTypes(String[] types) {
        this.types = types;
    }

    public String getVicinity() {
        return vicinity;
    }

    public void setVicinity(String vicinity) {
        this.vicinity = vicinity;
    }
}

最後に,一番外側のResponse.java

public class Response {
    private static final String TAG = Response.class.getSimpleName();
    private final Response self = this;

    private List<Result> results;

    public Response(List<Result> results) {
        this.results = results;
    }

    public List<Result> getResults() {
        return results;
    }

    public void setResults(List<Result> results) {
        this.results = results;
    }
}

このように記述することで,ネストしているJSONレスポンスでもGsonConverterでうまいことパースしてくれるようになります.

RetrofitでAPIを叩く仕組みを作る

まず,使うAPIを記述したServiceのInterfaceを記述します.

/**
 * URL Sample:
 * https://maps.googleapis.com/maps/api/place/search/json
 * ?types=cafe
 * &location=37.787930,-122.4074990
 * &radius=5000
 * &sensor=false
 * &key=YOUR_API_KEY
 */
public interface PlaceApiService {
    @Headers("Accept-Language: ja")
    @GET("/maps/api/place/search/json")
    Call<Response> requestPlaces(@Query("types") String types,
                                     @Query("location") String location,
                                     @Query("radius") String radius,
                                     @Query("sensor") String sensor,
                                     @Query("key") String key);
}

そして,このServiceを利用してPlaces APIにアクセスするためのクラスを用意します.

public class PlacesApiHelper {
    private static final String TAG = PlacesApiHelper.class.getSimpleName();
    private final PlacesApiHelper self = this;

    private Context mContext;

    public PlacesApiHelper(Context context) {
        mContext = context;
    }

    public void requestPlaces(String types, LatLng latLng, int radius, Callback<Response> callback) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(mContext.getString(R.string.places_api_url))
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        PlaceApiService service = retrofit.create(PlaceApiService.class);

        Call<Response> call = service.requestPlaces(types,
                String.valueOf(latLng.latitude) + "," + String.valueOf(latLng.longitude),
                String.valueOf(radius),
                "false",
                mContext.getString(R.string.google_maps_key_browser));
        call.enqueue(callback);
    }
}

R.string.places_api_url にはPlaces APIのURL(https://maps.googleapis.com)を,R.string.google_maps_key_browser にはDeveloper Consoleで取得したブラウザキーを記述しておきましょう.

ActivityにGoogle Mapを表示させ,ボタンをクリックしたらスポット検索させるようにする.

次のようなLayoutを用意します. SupportMapFragment を利用します.EditTextがありますが今回は使わなかったりします.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                tools:context=".MainActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit_search_word"
        android:layout_toStartOf="@+id/btn_search"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Search"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/btn_search"/>

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_below="@+id/edit_search_word"
              android:layout_marginTop="5dp"
              android:name="com.google.android.gms.maps.SupportMapFragment"/>

</RelativeLayout>

そしてMainActivityを記述します.今回は始点の座標は決め打ちです.

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    private static final String TAG = PasteActivity.class.getSimpleName();
    private final PasteActivity self = this;

    EditText mSearchEdit;
    Button mSearchButton;

    PlacesApiHelper mHelper;

    private GoogleMap mGoogleMap;
    private SupportMapFragment mMapFragment;
    private LatLng mCurrentLatLng;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSearchEdit = (EditText) findViewById(R.id.edit_search_word);
        mSearchButton = (Button) findViewById(R.id.btn_search);
        mSearchButton.setOnClickListener(mOnSearchButtonClickListener);

        mHelper = new PlacesApiHelper(this);

        mMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mMapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;
    }

    private View.OnClickListener mOnSearchButtonClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mCurrentLatLng = new LatLng(34.694487, 135.19517);
            // Places APIへリクエスト.5000は現在位置からの半径(m)
            mHelper.requestPlaces("food", mCurrentLatLng, 5000, mResultCallback);
        }
    };

    // レスポンスの処理
    private Callback<Response> mResultCallback = new Callback<Response>() {
        @Override
        public void onResponse(retrofit.Response<Response> response, Retrofit retrofit) {
            mGoogleMap.clear();
            // レスポンスからResultのリストを取得
            List<Result> results = response.body().getResults();
            // Resultの数だけピンを立てる
            for(Result r : results) {
                Location location = r.getGeometry().getLocation();
                LatLng latLng = new LatLng(location.getLat(), location.getLng());
                String name = r.getName();
                mGoogleMap.addMarker(new MarkerOptions().position(latLng).title(name));
            }
            mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(mCurrentLatLng, 15));
        }

        @Override
        public void onFailure(Throwable t) {
            t.printStackTrace();
        }
    };
}

と,ここまでやれば地図に周辺の検索数だけピンを打てるようになります.

今年終わるってよ

2015年,終わるみたいですね

今年何やったの

  • 神戸大学に無事に編入
  • ハッカソンそこそこ
  • Mashup Award 11(なんだかんだ3年連続なんかの賞とった)
  • 関西Ruby会議06にお話聞きに行った
  • 情報科学若手の会に行った
  • リブセンスさん,Wantedlyさんにインターンに行った
  • 高専カンファレンス100に行った
  • 東京かれこれ10往復位(死ぬ)
  • konashi-android-sdkリリース
    • id:izumin5210 先輩にめっちゃお世話になりました.ありがとうございます(土下座)

イベントだけで見ればそこそこ慌ただしい感じですが,スキルアップの点で考えると,大学に慣れるのと編入できた安心感で妙に滞ったなぁと.

来年どうしたいよ

大晦日ハッカソン2015正月ハッカソン2016を利用して,勢いで契約したさくらのVPSに謎のAPIサーバを立てる練習をしてます.大学の演習用のネタAPIを作りたい.

とりあえず来年は色んな意味で頑張らないとまずいとおもうので,遊び呆けずに頑張っていきたいと思います.プログラミング然り,研究然り.

あと id:nwpct1 こと,カレーメシ先輩に「クソメガネ先輩としてコンテンツ力落ちてんじゃね?」って煽られたのでクソメガネ先輩で通るように頑張りたいです.頑張りたくないです.どっちだ.

今年一年,皆さん,ありがとうございました.来年もよろしくお願い致します.

DataBindingについて + 高専カンファレンス100 in 東京 #kosenconf で発表してきました + 感想

この記事は KobeUniv Advent Calendar 19日目の記事も兼ねています

高専カンファレンス100 in 東京,100カンファに行ってきました.そこで(毒にも薬にもならない)Androidの発表をしてきました.

www.slideshare.net

どんな内容だったの

いろいろとAndroid開発を楽にできたらいいなと,そういうことで設定いじったりライブラリ使ってみたりとそんな内容です.

補足

「ButterKnife使うんならDataBinding使えば良いんじゃね?」的なことをカレーメシ先輩( @c_bata_, id:nwpct1 )に聞かれたので,一応DataBindingについても解説します.

DataBinding?

Google I/O 2015で「つけるよ!」って言われた機能.XMLjavaコードを静的ないしは動的に結合してくれます.

雑な使い方例

とりあえずは,app/build.gradleに次の記述を追加しましょう.

app/build.gradle

User.java

こんな感じに普通のPOJOなクラスをBaseObservableのサブクラスにして,getterに @Binding アノテーションをつけます.そんでsetterには notifyPropertyChanged(BR.hoge) で,変更を伝えるようにしてみます.

activity_main.xml

activity_main.xmlは,まず, <layout> タグで囲んでから, <data> で宣言を行います.この時の name 属性をMainActivity.javaで使います.その後に表示するLayoutを書きますが, android:text=@{user.firstName} の様に代入したい値を書き入れます.この時,prefixとかのmは消して先頭は小文字にします.ちなみに使えるのは参照元のクラスがpublicなメンバかgetterが存在する時です. app:onClickListener="@{activity.buttonClickListener}" の様に,Activity等に書いたリスナも代入出来たりします.便利.

MainActivity.java

MainActivityでは onCreate 内で ActivityMainBindingインスタンスを立てます.クラス名はXMLのファイル名のキャメルケースになってますね.XMLが正しければ name に書いた要素に対して binding.setUser() などのメソッドができているので,ここに代入します.MainActivityを書いた時点でこのままコードを走らせると mUser に格納した変数が setText() もしてないのに表示されてますね.ついでに app:onClickListener="@{activity.buttonClickListener}" で設定したメソッドOnClickListenerインスタンスを返すようにすると,ちゃんとリスナが実行されます.ここでは mUser.setLastName() で名前を変更しているだけですが,ちゃんと notifyPropertyChanged(BR.hoge) してあるので,変更がViewに反映されます.

細かいことは

[Android] – Data Bindingつかってみた
tech.recruit-mp.co.jp

こちらの記事に非常によくまとまっているので,こちらを参照するといいかと思います.

感想

初めて高専カンファで発表しましたが,とても良かったなと思ったりしてます.最初は「誰も来ないんだろうなーこわいなー」とか思ってたらちゃんと10人以上来てくれたり,ポジティブな反応してくれていた人も居たので,ありがたい限りです.ただもっとぶっ飛んだ内容にしても良かったかな…なんて.

カンファ自体もとても楽しかったです.基調講演に始まり,アイスブレイク,夢これ,懇親会,複数トラック(B102にしか居なかった),一般発表,LTと,充実のプログラムだったと思います.運営,発表者の方々には頭が上がりません.ありがとうございました.(発表上手い人ばっかで正直泣きそうになりました.)ちなみに夢これボードなる,夢を貼り付けまくるホワイトボードがあったのですが,5分くらい考えて「夢を探す」などと書きました.

あと,初日の夜にでなり( @denari01, id:denari01 )カレーメシ先輩( @c_bata_, id:nwpct1 ),ルータ芸人( @puhitaku, id:puhitaku )らと調布で飲んでました.いろいろあって行く店が大体潰れていて「調布って競争激しいんだな」とか言いながらどうやら電通大生の間では「DJ」などと言われているさかなや道場で「調布ビール最高」などと言ってました.くっそ楽しかったです.

補足書いてて感想書くこと忘れてしまった(☝ ՞ਊ ՞)☝

おわりに

実行委員の方々,本当にお疲れ様でした,ありがとうございました.発表者,参加者の方々もお疲れ様でした.今度は近畿圏でlolカンファがあるみたいなので,そこでもっと変な発表が出来そうならしてみたいと思います.

おまけ

クソアプリ Advent Calendar でつくったすらこん!をアップデートしたので,今回使って見ました.どうやら動きはなかなか良いみたいなので満足です.ついでに らりょすくん ( @raryosu, id:raryosu )にも貸しt…もとい,押し付けてみたところ,ちゃんと動いてました.どうやら大丈夫そうですね.

死亡フラグと編入学

この記事は Kosen Advent Calendar 17日目の記事となっております

そもそも高専生ですか

はい.元明高専生です.電気情報工学科です.今は神戸大学の工学部です.

高専生の進路について

知ってる人も大半ですが,簡単に高専生(本科生)が歩く進路について挙げると

  • 就職
  • 専攻科への進学
  • 大学への編入学
  • 退学からの大学入学(多いとは言ってない)

こんなところですね.大半が上3つに固まります.私は大学への編入学ですね.

私の編入学まで

もともとこんな感じの志望校でした

第一志望:大阪大学基礎工学部
第二志望:大阪大学工学部
第三志望:神戸大学工学部
第四志望:明石高専専攻科

ピンと来るかと思いますが,第三希望に今所属しているということは,第一,第二はツルッと滑った事になりますね.

なんで滑ったのか

当たり前の話ですが,勉強不足でした.早い人は4年,ヘタすればそれ以前から受験勉強をしているのに対し,こちらは6月に入るまで,バイトやらハッカソンやらで遊び呆けていたので,まるで勉強が進んでいませんでした.

直接的な関係は別として,うちの高専,4年生の時の年度末に産技高専の荒川キャンパスと一緒に取材されたんですよね.「プレジデントファミリー」っていうプレジデントの姉妹誌に.雰囲気的には「名門大学にホイホイ受かるお子さんを量産したいお母様のための雑誌」です.言い方があまりに失礼ですが目次をみてるとこんな印象しかつきませんでした.ごめんなさい.その時取材に呼ばれて「進路希望とかあるんですか?」って聞かれて「うーん…,阪大…行けたらいいですね…」って言ったつもりだったんですけど,(何があったのか)記事のしょっぱなに「(どくぴーの本名)はさらりと言った.大阪大学に行きます』」って書いてありました.雑誌こわい.こんな感じでビンッビンの死亡フラグを立て,見事に回収をしたというわけです.嘘ですすいません勉強しなかっただけです.ちなみに取材ではずっと課外活動のこと言ってたんですけど一切書いてもらえませんでした.かなしい.これを僕は勝手に「サラリツルリ事件」といってます.

今更考える編入学

一口に編入学と言っても,入る大学とかいろいろあると思いますが,大学編入学を志望する人の(邪な)志望理由を当時振り返ると

  • 研究したい,行きたい研究室がある
  • 大学は出ておきたい
  • そもそも大学に入るために高専入った
  • 働きたくない

などなど,考え上げればキリがないとは思いますが,そんな中でも編入学する上で考えておいてほしいことを幾つか.

ちょっと油断するとすぐフラグが立つ

編入学試験はセンター試験からの入試と比べると確かに簡単かもしれません,ですがそれ故にサラリツルリ事件程ではないにしろ,軽率な一言が露骨な死亡フラグになる可能性があります.いくら自信があってもちゃんと勉強しましょう.

複数校受験できる

編入学試験だけの強みを考えると,受験料さえ払えば国立大学が日程がかぶらないかぎり何校も受験することができることでしょう.行きたい大学をとりあえず片っ端から受験できることも,「滑り止め」とか言いながら国立大学をウケることも出来ます.ただ,受験する大学の数だけ勉強量が増えるのでそれだけは注意.ちゃんと大学ごとの受験科目を確認したり,過去問から出題範囲を絞って対応しましょう.

単位認定

3年次編入(一部の大学は2年次)する以上,必ず単位と言うのは問題になってきます.そこで「単位認定」という制度があるのですが,結構これが厄介です.「上限付きで大学の科目と対応する科目を認定する」学校がほとんどだと思うのですが,「前の在籍校でどの単位を取得していようが固定数の単位を認定する」学校があります.特に神戸大学のうちの学科がそうだったりします.大学内でも学部,学科によって制度が全然異なったりするので,ネットで調べたりしただけじゃわかりません.コネがある場合はちゃんと辿って調べるようにしましょう.ただし,どんな制度であろうと正規の学部生と比べると圧倒的に単位数が少なく,取れる限界に近い量の単位を取るかしないと進級すら厳しくなる場合があるのでご注意を

「大学生活」を満喫できるわけはない

単位のことと絡みますが,普通の大学生みたいな生活は出来ません.まぁ理系大学生っぽいと言われればそうですが.サークルと両立とか考えていると結構つらいかもしれません.サークル,バイトなんて言い出すと本当に大変な目に合うかもしれません.せいぜい2つが関の山かもしれません.

そんな「新しいこと」ばかり勉強するわけではない

高専で授業を真面目に受けていたら,編入先の学科を変えないかぎりは,大学での内容は見たことのある内容がかなり多くなると思います.そのため,新しい内容ばかり学べるかといえば,一概にそうではありません,が,もっと深く学ぶことはできると思います.

高専の枠を外れる

良くも悪くも高専の枠を外れます.高専の中だけで終わらない関係を作れたりできると思います.…半分コミュ力次第なところもあると思いますが.

とまぁ,この辺です.つまるところ,「思い描いていた大学」とは限らないということを知っておいてほしいなと思います.といっても,大学は行くとやはり楽しいって思うと思います.住めば都です.高専生の間に(遊び呆けずに)「自分が何をしたいのか」を明確に決めて進路を考えることができれば,編入学試験の面接でも落ち着いて応えることができると思います.現場からは以上です.

宣伝

あ,100カンファ行きます.複数トラックでAndroidの話をします.お願いします

ハッカソンで我を貫くのも悪くはない

この記事は Hackathon Advent Calender 12日目の記事となっております

近年,ハッカソン流行ってますね.すごい流行ってますね.僕も

e10dokup.hateblo.jp

こんな記事を書いたりしてしまいましたが,大小含めて

と,今年もなんだかんだでいろいろなハッカソンに参加してました.よく参加したことはしたけどハッカソン荒らしではないのであまり賞とかを獲得した記憶はありません.

大体のハッカソンだと,チームを組んだり,チームで参加したりして,アイデアソンでアイデアを出しあったりして,みんなで「これだ!」となったアイデアとかをハッカソンで実現していくのが普通だと(個人的には)思ってます.が,全然そうじゃない方法で挑んだハッカソンについて振り返ってみようかなと思います.

【ハッカソンレポート@大阪】Don’t Think. Hack!! Mashup Awards 11 ハッカソン予選大阪 〜ぶっ飛んだ Hackしたって ええんやで〜 | Mashup Awards

togetter.com

Mashup Awards 11の大阪ハッカソン予選です.今年のMAに申し込んだ作品のプロトタイプができたハッカソンだったりします.このハッカソン,これまで僕が参加したハッカソンと何が違うのかというと,

チームメンバーが誰もいないということです.すなわちボッチソン.

なんでそんなことになったのか

イデアソンで最初に出したネタが一番人気になったのにもかかわらず.誰も来てくれませんでした.それで,後に引けなくなったのと「楽しくハッカソンできればいいか」なんて気楽な気持ちでもともと挑んていたのと,アイデアに妙な愛着が湧いたのがあって,ぼっちを敢行しました.後々「ネタが一人でもできそうな内容だったんじゃない?」という話になったんですが,そこも含めてアイデアソンで深めていくんじゃなかったっけ…???というのは置いといて,確かに規模は小さかったなー,と今更ながら.

結局どうだったの

MA運営の方々のフリーダム具合(?)にも助けられ,唐突に一人席が用意され,みんながチームでワイワイしているところを見ながら一人モクモクとコーディングをしていました.正直寂しかったです.「一人なのでこれ絶対つらまるだろうなー」とか言いながら必死こいて作業していたのですが,なぜかどうしてびっくりするくらいの進捗を叩き出し,使ったことのないAPI,ライブラリを組み合わせながら作ったにも関わらず基本的な部分が初日のうちに片付くとかいうハイペースで作業がすすみ,今年最高に余裕のあったハッカソンになってしまいました.ちなみに作品で使った素材の権利関係をガン無視だったりしたこともあってか,何も賞はもらっていませんでした.ただ,審査員の方に「笑えた」という言葉を頂いたので僕はもう満足です.

ボッチソン,結局何がちがうのか

そんなボッチソンを幸か不幸か味わった視点からボッチソンについていろいろ考えてみようと思います.

イデアメイクがびっくりするくらい速く進む

当然です.アイデアを吟味する人が自分以外に誰も居ないので,自分の中で考えることはあってもそのアイデアに反対する人なんか誰も居ません.やりたい放題です.更にいうと自分のスキルセットに合わせてハッカソン内での目標を決めることができ,無謀なアイデアに肥大化する可能性が見事に減少します.ただし,反対する人が誰も居ないということは自分の感性「だけ」でハッカソンをすることになるので,自分が面白いと思っていただけの盛大なダダスベリアイデアを投げ込むことも当然ありえます.

作品に妙な愛着が湧く

ボッチソンで生まれた作品は他人がなんと言おうと「自分が面白い」と思ったアイデアからの作品です.スベろうがウケようが「もっと面白いものにしてやる!」という作品に対しての熱意が芽生えます.たった二日間で作ったものに対してここまでの愛着が湧くのはハッカソン,ひいてはボッチソンならではの現象かなと思います.

制約が多すぎる

まず,実現できるアイデアの幅が完全に自分のスキルセットに依存します.最近は便利なAPIとかも増えてきたりしてスキルセットの問題はある程度ごまかしが効かなくもないですが,今度は分担しようにもまず分担する相手が居ないので,当然時間的制約もチームでやるより圧倒的に厳しくなります.逆にそれを逆手に取って,自分のできることにちょっとプラスしたアイデアで「圧倒的成長👊👊👊」ごっこ(?)とかもできますね.

話し相手はTwitter

最悪です.コミュ障です.みんなワイワイガヤガヤしてたり熱心に話し合いしているのを見ながら.自分はTwitterハッシュタグを付けてメモを残してみたり,実況したりします.後でTogetterとかにまとめられようものなら,ハッキングタイム中は運営さんの実況ツイートと自分の悲壮感あふれるツイートで埋め尽くされることでしょう.

賞は諦める

ある程度ハイスペックなフルスタックできる方でもない限り,一人でチームに張り合おうとするのは大変です.勝ちにこだわるよりも,楽しくものづくりしたほうがハッカソンを楽しめるかもしれませんよ?

そもそもボッチソンできないハッカソンの可能性がある

本末転倒ですが,個人参加でもハッカソンまでにチームを編成することが要求されるハッカソンも当然有ります.優勝に賞金が絡むような規模の大きいハッカソンだとそんな気がしますね.そんな時は素直に諦めてアイデアに共感してくれる人を血眼で探してみたり,他の良いアイデアを持っている人を探してみましょう.無理に食い下がっては運営さんに迷惑を掛けてしまうかもしれません.

と,まぁ,こんな感じです.ハッカソンは"Hack"の"Marathon",楽しく完走すること自体にもすごい大きな意味があるのかなと思います.みなさんも「一緒にやってくれる人は見当たらないけどこのアイデアは絶対に実現したい!」というあるかわからないような状況に出会ったら,ボッチソンで挑んでみても良いのではないでしょうか?

意外と居ない身近な和田とそんな半生について考える

この記事は Wadavent Calendar 10日目の記事となっております

Wadavent Calendarに参加していることから察しがつくように.私も「和田」でございます.よろしくお願いいたします.

和田についておさらい

myoji-yurai.net

上記サイトによると,

【全国順位】 58位
【全国人数】 およそ269,000人

で,和田の由来は

大阪府である和泉国大鳥郡和田郷発祥の族は和田首、橘姓楠木氏流、清和天皇の子孫で源姓を賜った氏(清和源氏)、宇多天皇の皇子敦実親王を祖とする源氏(宇多源氏)、桓武天皇の子孫で平の姓を賜った家系である平氏桓武平氏)、中臣鎌足天智天皇より賜ったことに始まる氏(藤原氏)秀郷流などにもみられる。語源は、曲がっている田、輪のような地形の田、丸田から来ている。また、よい田、稔りのある田、吉田のことである。全国に姓氏・地名ともにきわめて多い。家紋は木瓜、橘、月星など。

ということらしい.ちなみに全国で一番多い姓は佐藤で,これまた先ほどのサイトを参照すると180万人以上いるとか.

そんなにいるのに…

かれこれ21年間生きてきたわけですが,身近な人(ここではせいぜい同学年や,同じ集団に属する人間)に「和田」という姓の人を見たことがありません.不思議なもんですね.27万人弱もいたら一度くらいあってもおかしくないとは思うんですが….せいぜい高専時代の学校の門衛のおっちゃんが「和田」で学校の外で会った時に朝ごはん代もらう程度に仲良くなったくらいです.結構イベントとかにも顔を出したりしているのもあって,名刺とかを頂く機会もなかなか多いのですが,その中に和田は1枚2枚あったかなー…というくらいですね.Facebookの友達一覧にはもはや和田は居ません.圧倒的ですね.よく「和田っていっぱいいるじゃんー」って言われたような記憶があるんですが,全然そんなことは無いみたいですね.

そんな21年間ですが,その中で「和田」について思ったことでも.

出席番号がだいたい最後

他の方の記事でもありましたね.出席番号がとりあえず最後です.僕の場合はフルネームがY.Wadaになるので,並の和田では相手になりません.高専時代,他のクラスに「わたなべ」「わまた」の姓の方が居ましたが,助かりました.多分「わたなべ」が濁音の力で勝てるけど,「わまた」には勝てない.ちなみに編入生や留学生とは戦う権利も与えられませんでした.

身体測定,健康診断が地獄

学校の身体測定や健康診断,高校とかでは割と空いている場所に自由に行ったりしますけど,中学とかだとクラスで固まって出席番号順で受けたりしますよね.ということは,和田はいつまでたっても終わらない憂き目に遭います.授業中に始まるような歯科検診,内科検診だともっと大変です.クラス全員が移動して保健室に行くような感じになるので,先生がその授業を自習にします.更には宿題を出します.つまり,出席番号が早い人はさっさと検診を終わらせて宿題をしますが,後ろのほう,和田ともなると,ずっと待っているだけで自習も宿題も出来ません.更には皆いなくなってとてもさみしい思いをします.

苗字で呼ばれる

下の名前が読みにくいのもあると思いますが,皆だいたいアダ名を使わない時は苗字で呼びます.「和田」「和田くん」「和田さん」など.「和田っち」などもありますね.

割と早いうちに名前が漢字で書けるようになる

和は小学3年生,田は小学1年生で習います.形もシンプルですし,漫画とか読んでたら和くらいはもっと早いうちに書けるようになるかもしれません.田中とか山田とか小学1年生のうちから書けるようになる苗字もあるにはありますが,結構早いうちから名前が漢字で書けるようになるので,小学生ながらにちょっとした優越感があったりなかったりするような気がします.

とまぁこんな感じですが,和田あるある(?)は言い尽くされている,言い尽くされそうなのでこの辺にしておきます….

これからも和田という姓を背負って生きていく所存です.よろしくお願いします.