"Simple" is "Best"

開発時に詰まったところや 調べた結果日本語での情報が無かったり古かったりした場合に自分用のメモとして高校生(?)が更新していくブログ

Debian9にNode.jsのLTS版を入れる

何も考えずに

sudo apt install nodejs

なんてすると悲しい結果になる

(実行コマンドがnodejsになり、かつバージョンが古い)

 

てことで2018/04/12時点の最新LTS及びnpmを導入する手順をメモ

参考サイトは以下

linuxconfig.orgココに書いてある内容が8系になっただけ

 

インストール

以下のコマンドをコピって貼っつける

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

 

後は普通にaptでインストールするだけ

まぁ簡単

sudo apt install nodejs build-essential libssl-dev

最後にバージョンを確認して終わり

node -v
 -> v8.11.1
npm -v
 -> 5.6.0

Bot職人にでもなりましょうかね〜

 

おまけ

curlで引っ張ってきたスクリプトで何をやっていたのか気になったので覗いてみる

OSの確認とかははすっ飛ばして重要そうな部分を引っ張ってみる

原本はココから見れる

 

export DEBIAN_FRONTEND=noninteractive
SCRSUFFIX="_8.x"
NODENAME="Node.js v8.x LTS Carbon"
NODEREPO="node_8.x"
NODEPKG="nodejs

print_status() {
    echo
    echo "## $1"
    echo
}

bail() {
    echo 'Error executing command, exiting'
    exit 1
}

exec_cmd_nobail() {
    echo "+ $1"
    bash -c "$1"
}

exec_cmd() {
    exec_cmd_nobail "$1" || bail
}

node_deprecation_warning() {
    if [[ "X${NODENAME}" == "Xio.js v1.x" ||
          "X${NODENAME}" == "Xio.js v2.x" ||
          "X${NODENAME}" == "Xio.js v3.x" ||
          "X${NODENAME}" == "XNode.js v5.x" ]]; then

        print_bold 【省略】
        echo
        echo "Continuing in 10 seconds ..."
        echo
        sleep 10

    elif [ "X${NODENAME}" == "XNode.js v0.10" ]; then

        print_bold 【省略】

        echo
        echo "Continuing in 5 seconds ..."
        echo
        sleep 5

    elif [ "X${NODENAME}" == "XNode.js v0.12" ]; then

        print_bold 【省略】
        echo
        echo "Continuing in 3 seconds ..."
        echo
        sleep 3

    fi
}

print_status "Installing the NodeSource ${NODENAME} repo..."

if $(uname -m | grep -Eq ^armv6); then
    print_status "You appear to be running on ARMv6 hardware. Unfortunately this is not currently supported by the NodeSource Linux distributions. Please use the 'linux-armv6l' binary tarballs available directly from nodejs.org for Node.js v4 and later."
    exit 1
fi

PRE_INSTALL_PKGS=""

# Check that HTTPS transport is available to APT
# (Check snaked from: https://get.docker.io/ubuntu/)

if [ ! -e /usr/lib/apt/methods/https ]; then
    PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} apt-transport-https"
fi

if [ ! -x /usr/bin/lsb_release ]; then
    PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} lsb-release"
fi

if [ ! -x /usr/bin/curl ] && [ ! -x /usr/bin/wget ]; then
    PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} curl"
fi

# Populating Cache
print_status "Populating apt-get cache..."
exec_cmd 'apt-get update'

if [ "X${PRE_INSTALL_PKGS}" != "X" ]; then
    print_status "Installing packages required for setup:${PRE_INSTALL_PKGS}..."
    # This next command needs to be redirected to /dev/null or the script will bork
    # in some environments
    exec_cmd "apt-get install -y${PRE_INSTALL_PKGS} > /dev/null 2>&1"
fi

IS_PRERELEASE=$(lsb_release -d | grep 'Ubuntu .*development' >& /dev/null; echo $?)
if [[ $IS_PRERELEASE -eq 0 ]]; then
    print_status "Your distribution, identified as \"$(lsb_release -d -s)\", is a pre-release version of Ubuntu. NodeSource does not maintain official support for Ubuntu versions until they are formally released. You can try using the manual installation instructions available at https://github.com/nodesource/distributions and use the latest supported Ubuntu version name as the distribution identifier, although this is not guaranteed to work."
    exit 1
fi

DISTRO=$(lsb_release -c -s)

check_alt() {
    if [ "X${DISTRO}" == "X${2}" ]; then
        echo
        echo "## You seem to be using ${1} version ${DISTRO}."
        echo "## This maps to ${3} \"${4}\"... Adjusting for you..."
        DISTRO="${4}"
    fi
}

check_alt 【省略】

if [ "X${DISTRO}" == "Xdebian" ]; then
  print_status "Unknown Debian-based distribution, checking /etc/debian_version..."
  NEWDISTRO=$([ -e /etc/debian_version ] && cut -d/ -f1 < /etc/debian_version)
  if [ "X${NEWDISTRO}" == "X" ]; then
    print_status "Could not determine distribution from /etc/debian_version..."
  else
    DISTRO=$NEWDISTRO
    print_status "Found \"${DISTRO}\" in /etc/debian_version..."
  fi
fi

print_status "Confirming \"${DISTRO}\" is supported..."

if [ -x /usr/bin/curl ]; then
    exec_cmd_nobail "curl -sLf -o /dev/null 'https://deb.nodesource.com/${NODEREPO}/dists/${DISTRO}/Release'"
    RC=$?
else
    exec_cmd_nobail "wget -qO /dev/null -o /dev/null 'https://deb.nodesource.com/${NODEREPO}/dists/${DISTRO}/Release'"
    RC=$?
fi

if [[ $RC != 0 ]]; then
    print_status "Your distribution, identified as \"${DISTRO}\", is not currently supported, please contact NodeSource at https://github.com/nodesource/distributions/issues if you think this is incorrect or would like your distribution to be considered for support"
    exit 1
fi

if [ -f "/etc/apt/sources.list.d/chris-lea-node_js-$DISTRO.list" ]; then
    print_status 'Removing Launchpad PPA Repository for NodeJS...'

    exec_cmd_nobail 'add-apt-repository -y -r ppa:chris-lea/node.js'
    exec_cmd "rm -f /etc/apt/sources.list.d/chris-lea-node_js-${DISTRO}.list"
fi

print_status 'Adding the NodeSource signing key to your keyring...'

if [ -x /usr/bin/curl ]; then
    exec_cmd 'curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -'
else
    exec_cmd 'wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -'
fi

print_status "Creating apt sources list file for the NodeSource ${NODENAME} repo..."

exec_cmd "echo 'deb https://deb.nodesource.com/${NODEREPO} ${DISTRO} main' > /etc/apt/sources.list.d/nodesource.list"
exec_cmd "echo 'deb-src https://deb.nodesource.com/${NODEREPO} ${DISTRO} main' >> /etc/apt/sources.list.d/nodesource.list"

print_status 'Running `apt-get update` for you...'

exec_cmd 'apt-get update'

node_deprecation_warning

print_status "Run \`apt-get install ${NODEPKG}\` (as root) to install ${NODENAME} and npm"

なるほどわからん

日頃Scriptを組まんのでなおさらわからないが

色々と勉強にはなった(気がする)

Debian9のキーボード配列を変える

状況

  1. その昔、ThinkPad E440(JIS配列)を購入
  2. Winを捨ててLinux
  3. Debian9を入れた
  4. キーボードをUSへ変更した
  5. キーボードの設定がなんかへん ←ここのお話

キーボード入力ではFcitxを使用して管理をしている

USに組み替えた後にしっかり変更したはずなのになんか一部ずれた挙動をする

どうすればいいのだろうと調べてたら以下の記事を見つけたのでDebianでやってみる

qiita.com

大体UbuntuでできることはDebianでできる

 

やってみる

sudo dpkg-reconfigure keyboard-configuration

これでコンフィグ画面が現れるのだが

言語設定がおかしいのか、めでたく文字化け

f:id:bigbuddha:20180224114035p:plain

こういうミスるとヤバそうな設定画面がしっかり読めないのは痛い

先述の記事のスクショを信用してことを運ぶ

文字数的に選択している行は「標準 102 キー (国際) PC」

これを選択して次へ

 

f:id:bigbuddha:20180224114402p:plain

ここまで化けられると何もわからなくて心配になる

先頭の「英語 (US)」を選択

 

f:id:bigbuddha:20180224114601p:plain

AltGrってなんぞやってことでググってみる

どうやら装飾キーの一種で、欧州のほうの文字を入力する際に用いるらしい

AltGr key - Wikipedia

もし今後欧州の文字を入力する機会がある場合はここをいじれば良いのか

(果たして機会は・・・)

今は縁がないのでデフォルトでスルー

わからないときはデフォルトですな

 

f:id:bigbuddha:20180224115118p:plain

Compose Keyってなんぞやってことで再度ググる

さっきと一緒で装飾キーの一種

二打鍵で一つの文字を入力する時に使うらしい

欧州の方は大変ですな

 コンポーズキー (Compose, Comp)

後続のアルファベットとアクセント記号(と似た形の記号)を合成するよう指示するためのキー。たとえば、「Compose」「a」「'」の順に入力すると「á」が入力される。

from 修飾キー - Wikipedia

  

f:id:bigbuddha:20180224115629p:plain

最後にX Serverが死んだ時に強制終了するショートカットを追加するかどうか

まぁ、なしでいいでしょう(適当)

 

以上で設定は終了

無事正しい配列認識になりました

これでようやくまともにコーディングができる

高校生がDroidKaigiに参加する話(まとめ)

DAY1までの様子はこちら

DAY1の様子はこちら

DAY2の様子はこちら

 

 

DroidKaigi2018から早一週間が経過しました

今を支えているAndroidDeveloperの集まりの中に高校生が参加したら

一体どうなったのでしょうか?

ようやく周りが落ち着いてきたので、これまでのまとめ的な何かを書こうと思います

本当は謝辞を最初に書きたかったのですが

長くなりそうなので一番最後にまとめさせていただきます

 

OJIという人間

DroidKaigiの感想を書く前に、少々私について書かせていただきます

なぜ高校生という身分でDroidKaigiに参加することができたのか

なぜ私OJIはプログラミングをしているのか

そこに関係するお話ですので、少々お付き合いください

 

今から17年前、2001年に私はこの世で生を授かりました

しかし、不幸なことに仮死状態で生まれてきました

どうやら出産直前に羊水で溺れたようです

その時に脳にダメージがいき、軽度の脳性麻痺を持つことになりました

詳しいことは省きますが、アテトーゼ型というもので

筋肉が自分の意志とは関係なく痙攣する(不髄運動)という症状があります

幸い、軽度であったため現在は普通に生活する分にはあまり不自由なく生活しています

ですが、手が勝手に震えるので細かい作業や筆記等は他人に劣るところがあります

そうなると将来大人になり、いざ仕事につこうとしたとき

周りと比べてかなりハンディを追っているので、普通に戦うのは厳しい

そう親が判断をし、小さなときから私はパソコンを触ってきました

お陰様で小学校高学年になるぐらいには作文課題等をWordでこなしたり

他の人よりもパソコンができたりと有用なスキルを手に入れていました

こういう経緯もあって、私は他の方よりプログラミングの世界に入りやすいのかもしれません

 

私がプログラミングの世界に入った一番大きな原因は恐らくサマーウォーズです

これは見たとき、私は純粋にコンピュータの世界に魅力を感じました

そこからは自分で調べてVBSを組んだり、HTMLを組んだり

中学校に入る頃には、塾で知り合った方から頂いた本でC言語を勉強していました

そして中学2年生の春、Life is Techのキャンプに参加しました

そこでAndroidJavaを組み始めて、今に至ります

 

これで私に関することは以上です

こっから本題に移ります

 

DroidKaigiで感じたこと

高校生になってからIT系のイベントに何回か参加していましたが

こんなに大きいイベントは初めてでした

「どんなんなんかなワクo(゚ー゚*o)(o*゚ー゚)oワク」な気持ち半分

「何かあったらどうしよう(・_・;)」な気持ち半分

てな感じを一週間ぐらい前から過ごしていました

 

そして迎えた当日

私の語彙力では一言で表せないぐらいの衝撃と驚き、わくわく感を感じました

「これで自分も1Developerの仲間入り」なんていう錯覚と共に

OPや様々なセッション、ブースに参加しました

 

セッションを聞いて、ブースをまわって、色々な方とお話をして

「俺もこの世界で生きていきたい!」

そんな意識がめばえてきました

日頃は高校生として学校に通っていますが

学校なんて早くやめてこの世界へ早く飛び込みたい

どんだけ苦が待ってようと、それ以上の幸を感じることができる

若造ながらそんなことを思っていました

 

現実として、親や学校は大学へ行けといいますし

私の周りの友人も大学へ行くことが当然という人がほとんどです

しかし、DroidKaigiやその後のWantedlyさんとの食事会で

大学に行かないという道もあるんだなということを改めて感じました

 

そして、やっぱり同志の強力は凄いなと思いました

ボランティアスタッフの方を始め、色々な方がDroidKaigiへ

様々な形でContributeされていました

(自分は何ができるんだろうと考えた結果、なるべくセクションに関するTweetをするという方法をとりましたw)

そんなContributeがあってこそ、あんな素晴らしいカンファレンスができるのかな

そんなことを期間中ずっと感じていました

これからの世の中では今まで以上にそういうものが必要になってくるような気がします

 

DroidKaigiで身についたこと

Kotlinの一言につきます

もちろん他の技術や知見を得ることはできました

しかし、その中でも私の中で最も大きいものはKotlinです

これまで私はひたすらJava(もどき)でAndroidを組んできました

Kotlinの存在は知っていましたが

見た目が好きじゃなかったり、時間がなかったりと触れようとは思っていませんでした

しかし、ハンズオンで実際に触ったり

ほとんどのセッションでKotlinが使われているのを見て

これからは本当にKotlinの時代なんだなというのを感じると共に

Kotlinをやらないとまずいという危機感を感じました

現在は空いた時間を見つけてはDroidKaigiで藤原さんから頂いた

Kotlinイン・アクションという本をひたすら読んでいます

気がついたら授業中でも読んでたりしますね(おい

もしこれからKotlinをやってみようと思っているJavaな方は

全力で読むことをおすすめします

Javaの知識を前提としてKotlinの開発者がKotlinの紹介をされているのですが

とてもわかり易いです

KotlinはJavarであれば皆さん惚れると思います

まだ二歳の小鳥に惚れるなんて罪ですよね

 

他にも、年上の方との話し方や、ピッチャーとはなんなのか

飲み会ってこんなものなんか、新幹線の乗り方など本当に開発関係に限らず

色々なことを学ぶことができました

(本当に自分は無知だなと痛感しました)

 

謝辞

この記事も終わりに近づいてきました

ここらへんで感謝の気持を書き連ねようと思います

 

まずはDroidKaigi運営スタッフの皆さん

高校一年生の私にとって、DroidKaigiはとても刺激になりました

これからの進路や考え方、生き方全てに良い意味で影響していくと思います!

とても素敵な場を提供してくださってありがとうございました

そしてスピーカーの皆さん

全てのセッションは無理ですが可能な限り

色々なセッションをまわらせていただきました

全てためになるものばかりでした、ありがとうございます(ウマウマ

 

Wantedlyさん

Wantedlyさんがスカラーシッププログラムをしていなかったら

私はDroidKaigiに行けていませんでした

交通費・参加費・宿泊費を全額出してもらった上、晩御飯までごちそうになりました

ありがとうございますの一言では表せきれないぐらい感謝しています

特に人事の稲生さん

最初から最後まで面倒をおかけしてすみませんでした

そして、私を選んでくださってありがとうございます

稲生さんの目に狂いは無かったと証明できるようにこれから精進していきます!

また春ぐらいにオフィスに遊びに行かせてください!

 

Wantedlyさんを含むスポンサーの皆様

ブース内のお菓子・飲み物・バリスタさん、全て量・質共に驚かされました

DroidKaigiがあるのも、スポンサーの皆様がいるお陰なんだなと感じています

私がお酒が飲める歳になってスタッフとして参加するまで

ぜひスポンサーになっていてください!

 

私をここまで成長させてくれたLife is Tech関係者のみんな(メンバー含む)

LiTが無かったら私はここまでプログラミングをしていなかったし

今なんか比べ物にならないぐらい退屈な人生を送っていたと思います

LiTに参加して、色々なことを体験して、色々な人と出会って

私の青春はLiTと言っても過言ではないです

 

平日にもかかわらずDroidKaigiに参加することを許可してくれた担任の先生

いつも授業を休みがちで出席日数も危ないのに

いってらっしゃいと言ってくださいました

言う前までいっぱい話し合わんとあかんのかなと怯えていましたが

予想以上にすぐ承諾してもらえて驚いたのは今でも覚えています

感謝感激雨あられ

 

そしてなんかテンプレ感がありますが、これまで私を育ててくれた両親

父がいなければここまでパソコンができるようにならなかっただろうし

母がいなければ私はここまで関西人になることはありませんでした

日頃はやっぱり恥ずかしくて面と向かってありがとうなんて言えないけど

インターネットの片隅で叫んでるよ

いつもありがとう!

 

最後に

ここまで読んでくださった方

ほとんど自分の中を整理するために書いているため、中身も文章もぐちゃぐちゃですが

よくぞここまで読んでくださいました

感謝してもしきれません

ぜひ周りの方に高校生にもこんなやつがおるんやで宣伝していただければと思います

ちなみにGithubは以下です

OldBigBuddha (Big Buddha) · GitHub

 

これからもしばらくはDroidKaigiネタを書いていくので

もし興味がありましたら

Twitterの方で私のアカウントを監視していただければと思います

 

では、また会う日まで

さよなら〜

高校生がDroidKaigiに参加する話(DAY2)

DAY1までの様子はこちら

DAY1の様子はこちら

 

仲間と明かした朝

8日の夜はWantedlyさんが事前に取ってくださった宿に

他のスカラーシッププログラムの参加者の希望者と一緒に泊まりました

男4人のむさ苦しい集まりでしたが、学校の研修旅行みたいで楽しかったです

 

朝ご飯は近くのおうどん屋さん

意外と朝からやっているお店が多くて調べるのに苦労しましたw

 

DroidKaigi DAY2

二日目はOPがなく、10:30から各ルームでセッションが始まります

前回同様僕が参加したセッションについて軽く触れます

近いうちに動画が公開される予定なので、全部のセッションまとめてみたいです

はじめてのKotlinハンズオン

Kotlinの第一人者である長澤太郎氏によるKotlinのハンズオン

Kotlinの素晴らしさに触れることができました

なんで最近Kotlinが流行っているのかわかったような気がします

speakerdeck.comこれからAndroidはKotlinで書いていこうと思います

 

Lunch Time

ハンズオンの時間は2コマ分でしたので、ハンズオン一回ですぐご飯です

前日同様和食・洋食の2種類でした

今回は洋食にチャレンジ

ダブルチーズバーガーだそうです

和食は、ちらしずしのようでした

 

気を取り直して午後の部

アプリを成長させるためのログ取りとログ解析に必要なこと

Wantedlyの住友さんによるログを取る際のいろいろについて(語彙力)

私は個人で小さいアプリしか組んでおらず、またリリースもしていないため

「今すぐ役に立つ!」というネタでは無かったですが、とてもためになりました

良いアプリを作ると言われたときには、やはり指標や現状が必要ですよね

どんな感じでログを取るのかからその結果を可視化するまでを発表されていました

www.slideshare.net将来大きなプロダクトを持ったりビジネスとしてアプリをリリースする際に

参考にしようと思います

 

Android Things codelab / Android Things であそぼう

これは少し特殊で

午後の間ずっと同じRoomで開催されていました

入退場自由ということなんで、空いた時間にちょちょっとやってみました

内容としてはAndroid ThingsとRainbow Hatで色々遊ぶとい言った感じです

何かお話があるというよりかは、ハンズオンに近い感じです

機材は準備してあるので、以下のリンクに書いてあることをひたすらやっていきます

Android Things であそぼう!

Debianでやってたんですけど、Permission周りでややこしいことになったので

途中で諦めてしまいました

もしこれからやってみようと思う方いらっしゃったら注意してください

ラズパイとRainbow Hatで色々できたので、とても楽しかったです

あんまりこういう系は触らないので新鮮でした

 

ConstraintLayout, now and future

Googleの方によるConstrainLayoutに関するセッション

中身は全て英語での発表でした

何気に初のEnglishSession

高1の英語力でどこまで理解できるか心配でしたが

デモがあったり、専門用語が多かったりで思ったより理解できました

デモ動画が多いためか、スライドは見つけられませんでした

とりあえずConstraintLayoutはエモいということがわかりました

ただ、XML書き書き人間からするとちょっと移行に時間がかかりそうです

 

自由すぎるDroidKaigi

空き時間にブース周りをしていたときです

メルカリさんのブースがえらい盛り上がっていたので

なんだろうと野次馬精神で見に行ったらなんかドラゴンボールで遊んではりました

恐らくPS4の「ドラゴンボール ファイターズ」

ブースの設備でやるのってなかなか勇気あるな・・・

他にもフォトブースがあったので一枚パシャリ

なんかクラッシュしてますねw

 

そして安定のラテ

DroidKaigiいっぱいちゅき

 

HTTPS通信の基本からNetwork Security Configurationまで

二階堂さんによるHTTPS通信をする際の注意に関するセッション

前提としてHTTPはもう使わない

過去に一度通信をするアプリを使ったことがあるので

どうしないといけないのかが知りたかったので参加

ただ、内容としては企業内で鯖を立てる場合の話なような気がしました

タイトルの通り、HTTPS通信の基本が学べてよかったです

speakerdeck.com

AI is ready for you. Are you ready for AI

rejasupotaroさんによる人工知能に関するセッション

ごめんなさい、これはまじで何もわからなかったです

多少何かわかるかなと思ったんですが、予想以上に聞き取れない&&理解できない

人工知能についてはまだまだ日本語で理解をしないといけなさそうです

speakerdeck.com

開発者が知っておきたい通知の歴史

長いようで一瞬で過ぎ去った2日間

ついにラストセッションです

通知はよく使うので、気楽に聞けるかな〜なんて思ってましたが

そんなことは一切なかったですw

恐らく2日間の中で一番スピーディーかつ中身の濃いセッションでした

公式としてはAndroid ICSからサポートをしているのでその話から

Android Nで追加されたNotification Channelまで

30分の中に全てをつぎ込まれました

speakerdeck.comAndroidAPIレベルが上がるごとに仕様がどんどん変わっていきますが

その中でも通知は大きな変化が3回ほどあってその度に対応に困っていました

一応KitKatの時代から開発しているので、そこら辺の事情はある程度覚えていますw

 

そして打ち上げ

以上でDroidKaigiで私が聞いたセッションのまとめは終わりです

最後にEDトークなどはなく、各セッションが終わったら各自解散でした

しかし、我々スカラーシッププログラム参加者はこれで終わりではありません

なんと、WantedlyAndroidエンジニアの皆さんと一緒に

お食事ができるのでございます!(もちろんWantedlyさんの奢り)

ということで新宿近くのしゃぶしゃぶへ

私ともう一人は時間の関係で前菜とお肉一枚という中途半端な結果で

帰宅を余儀なくされました

ですが、その間様々なお話が聞けてとても楽しく有意義な時間を過ごせました

やっぱり現場の人が仰ることは説得力ありますし

周りの年上の方の経験談や夢を聞いていると

自分もこれからだななんて思っちゃいます

 

これで2日目のレポートは終了です

ちょっと時間が経ってから書いたので、内容があやふやな部分がありますが

後日公開される動画等を見て確認して頂けたらなと思います

 

もう少し先、身の回りが落ち着いてきたら総まとめ的な記事を最後に書こうと思います

そちらの方もぜひ読んでいただいて

高校生がDroidKaigiをどう感じ取ったのか

DroidKaigiが高校生に対してどのような影響を及ぼしたのか

見ていただきたいと思います

ありがとうございました

高校生がDroidKaigiに参加する話(DAY1)

DroidKaigi前日までの様子はこちら

 

宿出発

朝食を友人とともに食べるという予定がたったので

Wantedlyさんに取ってもらった宿を7時40分頃にチェックアウト

新宿ワシントンホテルという宿を取っていただきました

ビジネスホテル初体験だったので驚きの連続でしたね

 

(朝食は吉野家でした)

 

Hello DroidKaigi!

開場時間の9時20分ぐらいに会場へ到着

そのまま一階のホールで待機

すると超かっこいいOP

 

その後、主催のヒダカさんによるWelcome  Talk

www.slideshare.netどうやらDroidKaigiの参加人数は毎年200人ずつほど増加しているようで

なんと今回は1000人を突破したようです!

そんな記念すべき回にスカラーシッププログラムで参加できたってのは

とても喜ばしいことです、Wantedlyさまに感謝感謝

そして、なんと今年中にKotlinのジャパンカンファレンスがあるようです

ぜひ行ってみたいですね

カンファレンスのことは当日のサプライズでした

 

そんなWelcomeTalkも終わり、次のセッションへ

「Kotlinアンチパターン:Naoto Nakazato」

www.slideshare.netJava勢の私にとってはほとんどわかりませんでしたw

でも、なんとなく「こういう流れがだめなんか〜」的な雰囲気は

感じ取ることができました

そんな感じで次のセッションへ

次のセッションからは複数のセッションが同時並行で行われます

なので各自行きたいセッションを一つ選んでいくか

企業ブースに回るかのどちらかを選択します

 

この記事では私が参加した各セッションの内容をざくっと紹介し

戦利品を紹介して

アフターパーティの紹介をして終わろうと思います

 

Androidアプリの中を覗いてみよう

AndroidアプリのファイルであるAPKファイルをデコンパイルをして

中のコードを覗いてみようと言う話

APKは実質ZIPファイルなんで拡張子を.zipに変えると普通にUnzipできる

それをゴニョゴニョすれば中が覗けてしまうというかなりエッチな(ry

 

みんな大好きLunch Time

参加者にランチボックスが配布されました

今回は和食と洋食の2種類準備されていました

ということで和食を注文

洋食はハンバーガーのようでした

Googleさんのブースの方(外国人)が皆さん揃って和食を食べてたのが面白かったです

 

お昼休憩の間にブース訪問

WantedlyさんやLINEさんはじめ、色々な企業さんが出展されていました

各ブースでは色々なもの(シールやシールやシールなど)がもらえます

最後にまとめて紹介します

 

今から始めるAndroidアプリ開発

今からAndroidアプリをするのに重要なものだけをピックアップしたセクション

環境構築(Gradle)から非同期処理まで広く浅くと言った感じ

初めて作るというよりかは久々に手を出す方向けのお話だったのではないかと

speakerdeck.comアーキテクチャ以降は時間が押していたのでサラッと触れるだけ

MVVMやMVPは知ってたけど、AndroidCleanってのは初めて知った

DataBinding周りの基本もやったのでほんまに今時な入門ですねw

 

実例で理解するMaterial Design Animation

Wantedly People」というアプリの「話題」機能で実装されたアニメーションを

例にして、どんな感じでアニメーションを実装していくのかという内容

ただ自己満足や自慢のためだけではなく

ユーザのためのアニメーションを考えないといけない

いかにユーザの視覚をダマすか、これがアニメーションの仕事

speakerdeck.comCardUIでの実装例でとても勉強になりました

近いうちにCardUIを触りたい・・・

 

やっぱり色々なものがもらえる

DroidKaigiほどの大規模なイベントはやっぱり色々なものが頂けます

皆さんめっちゃ気前がいいですね

今回勝ち取った戦利品がこちら

ホンマにいっぱいいただきました

一番素晴らしかったのはCyberAgentさんから頂いた「Kotlin イン・アクション」

著者の藤原さんとたまたま話す機会があって、その時にタダで譲っていただきました

それ以外にもWantedlyさんからTechBookをもらったり(なかなか濃い)

ステッカーを大量に頂いたり

本当にたくさんの企業さんから様々なものが頂けました

ありがとうございました

 

そして最後のアフターパーティ

全てのセクションが終了したら最後はアフターパーティが行われました

みんなでわいわい自由に飯を食おうって感じで、ホンマに自由でした

形式は立食ビュッフェ

 

カロンめっちゃ美味かった

 

他にも色々な方と交流したり

おふた方ともWantedlyの方

左がAndroid開発の住友さん

右がCTOの川崎さん

とてもよい方と知り合えました

 

他にも唐突にスーファミの復刻版が動いていたり

 

「いつのやねん」と突っ込みたくなるようなアーケードで遊んだりしてました

 

そして時間になってDAY1閉幕

たった1日でしたが、私にとっては1日には感じられないぐらい濃密な一日でした

それがもう一日あるのかと思うとうずずしますね

 

ではリクルートさん、Pixivさん、Maney Forwardさん(Drink Sponser)

が呼んでくださったバリスタさんのラテアートとともに

お別れしたいと思います

また明日

高校生がDroidKaigiに参加する話(DAY0)

はじめに

恐らくTwitterから来てくださった方がほとんどだと思うので自己紹介を

ネット上ではOJIやOldBigBuddhaなんて名乗っているものです

本名等は現地で名刺を配りまくったりしますのでそのときにでもw

Linuxをこよなく愛する高校一年生です

Androidは今年で3年目、他にもWeb周りを少々

アプリ甲子園で一次審査突破という中途半端な実績があります

近いうちにインターンをしてみようと思っているので

興味がある方、お声がけしていただけると泣いて喜びます

では、本編へどうぞ

 

「DroidKaigiに行きたい」

そう思い始めたのはちょうど一年ほど前の話です

当時は中学三年生、高校受験真っ只中で行けたら来年にでも行くか〜

そんな軽い気持ちでいました

 

それから半年ほどがたち、高校生とは思えない高校生活をエンジョイしていた私

にやってきたのはDroidKaigi2018チケット販売開始のお知らせ

開催場所は東京でかつ宿泊とわかっていたので

親をどう説得しようかと考え始めようとしたその瞬間わかった事実

 

「DroidKaigi平日ですやん」

よし落ち着けと私は「public static void ...」と唱えだすのです

そして10回ほど唱えて落ち着いてきた頭で考えてみても

やっぱり親を説得するのは難しそうです、だって平日だもん

大学生ならともかく高校生となれば毎日授業があるわけです

しかも私が通っているのは自称進学校

これは大学生まで諦めるしかないか・・・

そう思った時に目に入った素晴らしいものがこちら

medium.comWantedlyさんから提供される学生向けプログラム

なんと交通費・参加費・宿泊費を出していただけて(上限あり)

しかも2日目にご夕食に誘っていただけるというとても素晴らしいプログラム

言ってしまえばWantedlyさんがスポンサーになってくださるわけです

これを利用すればなんとかなるかもしれない

おそらく落ちるであろうと思いつつエントリーシートを提出

そして運命の日・・・

 

「よっしゃいけるぞDroidKaigi」

なんと通っちゃってました

通過の知らせをもらったときは声を出して喜びましたね

しかし喜んでいるのもつかの間、参加するには親・学校を説得しなくてはいけません

ちょうどその週に二者面談を控えていたので思い切ってその場で相談しました

結果は思ってたよりすぐにOKがもらえました

先生が僕はそういう人間だということをもともと理解されていましたし

2017年のアプリ甲子園で一次審査を通過していたのも関係していたのでしょう

ということで学校側はOK

 

続いて親

親も金を出さなくて済むのであればどうぞということで一発OKもらいました

僕自身があまり普通の生活ができない人なので

親としても自らこういうところに行こうと努力しているのが良かったのでしょう

 

ここまでが長い長い前置き

次からが本日(2月7日)のお話

 

学校から直行って、ねぇ

Wantedlyさんとうまく連絡ができてなくて

プレパーティーに出席できると思っていたので「19時には原宿にいないと!」

と思って終礼もパスしてチャイムと同時に学校出発

そっから京都駅に行き、新幹線に乗って東京へ(どこのサラリーマンや)

今の時期持久走大会の練習とかいう引きこもりには地獄でしかない授業もあり

新幹線では意識が朦朧

でも終点じゃない(品川下車)から意識は保たないとということで無事品川到着

その後新宿へ

 

Wantedly様、マジ神です

今回のプログラム中のお宿はWantedlyさんにおまかせしてました

前日入りをするのでその分も含まれているのだろうと思ってよくよく見ると8日のみ

これはやばいと担当の方へすぐ連絡

そしたら新宿駅周辺で素泊まりの部屋を取ってくださった

しかもめっちゃいいところ(お金はWantedlyさん)

今回のプログラムといい神対応といい

ほんま私にとって神様です

 

次回予告

次回はDroidKaigi20181DAYの感想を書こうと思っています

0DAY~2DAY + 全体を通しての感想

の計4本記事を書こうと思っています

これを見て私のような高校生の参加者が増えることを楽しみにしています

Debian9でJava開発

まっさらなDebian9にJDKをセットアップしたのでその記録

過去のメモを元にセットアップしてある

特に手順の変更点はない

インストールディスクは以下から拾ってきたものを使用

Index of /cdimage/unofficial/non-free/cd-including-firmware/9.3.0+nonfree/amd64/iso-dvd

インストール時のオプションはDesktop環境とGNOME以外はチェックを外してある

 

JDKのインストール

とりあえずJREが入っているか確認

$ java -version

 入っていないようであれば以下コマンドで入れる

$ sudo apt install openjdk-8-jre

続いて本題のJDKをインストールする

$ sudo apt install openjdk-8-jdk

以下コマンドで結果が帰ってくればインストールは完了

$ javac -version

完了したら次はパスを通す

 

JAVA_HOME

JavaのインストールといえばJAVA_HOME

それはWinであろうとMacであろうとLinuxであろうと変わらない(多分)

まずはどこにインストールされたかを調べる

$ which javac

私の環境ではこのように出た

/usr/bin/javac

これでホイホイとこのパスを通すと

後々わけがわからなくなる

la(ls -al)上記パスを確認する

$ la /usr/bin/javac 
lrwxrwxrwx 1 root 23 Jan 5 20:21 /usr/bin/javac -> /etc/alternatives/javac*

どうやら先があるようだ

再びla

$ la /etc/alternatives/javac
lrwxrwxrwx 1 root 43 Jan 5 20:21 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac*

いい感じのパスが見えてきた

一応念の為確認

$ la /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 
-rwxr-xr-x 1 root 6488 Nov 1 23:17 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac*

うむ、見つけた

あとはこいつをJAVA_HOMEにぶち込んでやる

.zshrcは割愛

 

IDEがほしい

やっぱりIDEがないと開発は捗らない(私の場合は)

一番オススメはIntelliJ IDEA

Win/Mac/Linux全てに対応しており、恐るべき補完能力を持っている

一度その補完の強さに慣れてしまうと、他のIDEを使うことができない

ということでDL

DLページの右側にある「Community版」を入れる(無料)

落としてきたらtar.gzなので解凍

$ tar -zxvf ideaIC-2017.3.2.tar.gz

さて、解凍したブツをどこへ放り投げるか

ホームディレクトリ直下でもよいのだろうが

今回は/usr/localに入れる

AndroidStudioのチュートリアル

解凍後にそこへ突っ込め、と書いてあったので真似をしてみる

$ sudo mv ./idea-IC-173.4127.27 /usr/local/

続いてエイリアスの設定

別にしなくてもよいのだろうが

ターミナルから立ち上げやすくなるので

私はいつもしている

設定するのは以下

alias intellij='/usr/local/idea-IC-173.4127.27/bin/idea.sh &' 

最後につけている&がミソ

こいつがあると、実行中でもそのターミナルでもコマンドが打てる

では実行

$ intellij

あとはよしなしにカスタマイズしていく

 突っ込むべきところが少ないので

とりあえずスクショを貼っておく

 

Themeの設定

f:id:bigbuddha:20180105231157p:plain

 

ショートカットの有無

作るようであれば正直さっきのエイリアスは無意味かも・・・

f:id:bigbuddha:20180105231238p:plain

 

Toolの設定

AndroidはAndroidStudioを使うので不要

VCSはGitとGithubのみ(それ以外使わない)

Pluginを作るつもりはないので除外

f:id:bigbuddha:20180105231344p:plain

 

Pluginをどうするか

Vimは心惹かれるがそこまでVimerではないのでパス

Scala?知らんな

f:id:bigbuddha:20180105231725p:plain

 

無事インストールが完了すると以下の画面が現れる

f:id:bigbuddha:20180105231844p:plain

 

試しに一つProjectを作ってみる

上の「Project SDK」がさっき通したパスになっているか確認

他にもあるので、間違えないように

f:id:bigbuddha:20180105231924p:plain

f:id:bigbuddha:20180105232124p:plain

変えるのを忘れていたが、Package名はちゃんと自分のにしよう

f:id:bigbuddha:20180105232135p:plain

無事完了

f:id:bigbuddha:20180105232256p:plain

 

なんとなくHello World

f:id:bigbuddha:20180105232533p:plain

 

以上

 

もしもっと良い方法があったり、疑問などがあれば

ぜひ連絡ください