Jupyter Notebookを使ってみよう

春から大学で友人と輪講もどきみたいのをやる事になりました

こういう場所にアウトプットすると定着度も全然違うので発表用資料&確認も兼ねて書いてみようと思います

ちなみに自分はJupyterNotebook自体は使った経験は少ししかない程度のレベルです

Jupyter Notebookって何

JupyterNotebookのサイトより引用

The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.

自分のいい加減な英語能力でまとめると「コードとかグラフとか数式とか含んだドキュメント作るソフトだよ。使用用途は数値シュミレーションとかデータの可視化とか機械学習とかそこらへんに使えるよ」みたいなことが描かれています。

自分のいい加減な印象だとLaTeXやWord内にコンソールとテキストエディタを埋め込んだ感じだと思っています。まあ実際に使ってみればなんとなくわかると思うかな

 

起動

JupyterNotebook自体はanacondaに付属しているのでPython入れるときにanacondaで入れている人は特に準備無しで使えるはず

使い方は簡単でコマンドプロンプト上で

ってするだけ

しばらくするとブラウザが立ち上がってJupyterNotebookが表示される。webアプリケーションだからブラウザで動くんよね

JupyterNotebookを起動した場所にファイルとかが保存されるから作業場所に移ってから起動するといいかも

起動したらこんな感じ。まだ何もない

 

ファイルを入れてみる

JupyterNotebookを起動したディレクトリにKaggleから持ってきたタイタニック号のcsvを入れました。Notebook側にはすぐに反映されブラウザ上でフォルダの移動やファイルの中身を見ることができます

  1. JupyterNotebookが起動している場所にファイルを入れてみよう
  2. 入れたファイルをブラウザ上で見てみよう

実際にJupyterNotebookを使ってみる

JupyterNotebookではNotebookっていうファイルを作成してその中で色々弄ったりします。作成方法は右の方にあるNew→Python 3から

クリックすれば別タブでnotebookが表示されるかと!

このページでコードを動かしたりドキュメントを作成したりします

中央にあるInとか書かれているのはセルって言います。使い方や利点は使っている間にわかるかと

notebook内でコードを動かしてみる

このセル内に適当なPythonのコードを書いてShift+Enterでコードを実行できます。

tabキーによる補完にも対応しています。補完機能が優秀なテキストエディタ程ではないですがそれなりに便利

こんな感じで対話的にできるのが良いですね。

過去のセルを編集してもう一度実行することができます。トライ&エラーなどの試行錯誤が多い時とか便利。In[ ]の数字は実行した順番が書かれています。次の画像を見ると3個目

のセル動かした後に2個目のセルを修正してまた実行したんだなってのがわかるかと

Markdownでドキュメントの作成

セルにはコード以外にもMarkdownで記入することも可能です

MarkDownにしたいセルを選択した後上部のバーからcell→cell type→MarkdownでセルをMarkDown記法のセルに変更できます

こちらもShift+Enterで表示されるように

コード間にドキュメントを簡単に入れれるので簡単なレポートとか作ったりするのに便利そう

データをいじってみる

先ほど得たkaggleのデータを使って実際にちょっといじってみる

コードの中にドキュメントが入っていたり、コードがセルで分割されているのは視認性が良くそれはそれで利点があると思います。

出力してみよう

File→Download as で様々な形式でダウンロードできます。HTMLとかで出力もできるのでべったりブログに張り付ける事も可能

終了する

終了する際はFile→Close and Haltをする事。ブラウザを閉じるだけじゃ終了せず裏で動いているため注意

 

おわりに

簡単に紹介をしてみました。他にも便利な機能やショートカットコマンドなどがあったりするのでそういったことはへっぽこな自分よりも偉大な先人達に頼ってください…

利用も開発も盛んなツールなので期待度大なJupyterNotebookでした

コードを修正→保存→コンソールで動かす→もう一度修正→保存→コンソールで動かす みたいなことをやっている人に是非お勧めしたいツールです!

Appleの発表イベントで思ったこと

今日Appleの発表イベントがありましたね。Appleの発表イベントと言えば新型iPhoneの発表とかがあってギークな中高生の頃の自分は楽しみなイベントだった記憶があります。

 

今回の発表イベントで発表されたものは以下の物です

雑誌や新聞が読み放題のサービス「Apple News+」

Apple製のクレジットカード「Apple Card」と高還元率の「Daily Cash」

定額でゲームがし放題の「Apple Arcade」

Appleの動画配信サービス「Apple TV+」

今日のAppleイベントで発表されたものまとめ! サービス4つ、ハードも1つ!?

といった感じでしょうか。

 

Appleの発表会と言えばハードの発表な印象があったのでこのようにサービスばかりの発表はちょっと意外でした。実際に自分の周りでも新型ハードの発表がないことに失望している声はちらほら見えました。Appleってハード屋のイメージがあったんですけど今回の発表を見るとこれからはApple製品×サービスでもお金を稼いでいくぞっていうAppleの路線変更?を感じますね。AppleはiPhoneの販売不調とかも抱えているのでハードだけじゃちょっと厳しい時代に入っているのかな?

 

各サービスの詳細は詳しい記事に投げてここでは自分が感じた事をつらつらと

 

Apple News+

Appleって過去に雑誌のサブスクリプションサービスを提供する「Next Issue Media」って会社買っているんですよね。Appleが買収した企業のサービスがそのままApple製品として出る良い例だと思います。個人的にはAppleってこれからいろいろなサービスを発表していくと思っているのでAppleの買収ニュースとか見たら将来のサービス予想できるのかなあって思ってみたり?

 

Apple Card

クレジットカードビジネスって手数料で簡単に稼げる印象があるので「Appleも小銭稼ぐビジネスに参入か…」って思ったんですけど多分そんな感じで参入したわけじゃないですよね。Appleがクレジットカード界に参入!って印象持たれがちだけど個人的にはApple Payの機能強化みたいに見えます。これからはApple Payが使えない場所でもMaster Cardのインフラ使って決済できるよ!みたいな印象。たしかに世界中のレジがApple Payに対応するのを待つよりは大手クレカのインフラと提携した方が手っ取り早くシェア伸ばせますもんね

スマホ決済インフラを掌握するとどんな良い事があるのかわかりませんがAppleはApple Payの普及に結構力を入れいているみたいです。ライバルのGoogle PayがVISAあたりと提携してクレジットカード発行し始めたらアツいですね

金属製カードってのも良いですよね~自分が知っている範囲だと金属製クレカはAMEXプラチナ以上とかラグジュアリーカードとか年会費高いカードの印象

金属製カード触ったことあるんですが質感はかなり良いです。あれは予想以上の高級感ですよ。これはiPhone持つようなお洒落層には刺さると思います。

他にもApple Card関係にはAppleらしい機能がありますが提携しているMaster CardもライバルのVISAも株価に影響ほぼ無し…そこまで市場インパクトは大きくなさそうですね…

個人的にPayPalあたりにも影響出るかなって思ったんですがPayPalの株価も特に影響なしでした

 

Apple Arcade

今回の発表はサブスクリプションまみれだ~~。最近IT企業がゲーム業界に接近しているトレンドなのはGoogleのStadia発表とか自分の書いた記事を見るとわかるかなって。

GoogleStadiaについて個人的に思ったこと

Appleは各地にデータセンター持っていないからStadiaみたいな事はできなさそうだなあって過去に書いていたんですがこういった形で参加するのは意外でした。

これからの流れはいかにユーザーのプレイ時間を自分のプラットフォーム上で稼げるか?みたいな戦いになるんですかね。ITの巨頭達がユーザーのプレイ時間を奪い合っている図はちょっと面白いです。

 

Apple TV+

Appleの提供する動画配信サービスですね。この分野にはNetflixがいるんですがどうなんでしょう…あのAmazonでも苦戦している印象があるので後発のAppleには厳しい戦いになりそう…

Netflixの株価はむしろ前日よりも上がってるみたいなのでApple TV+は脅威と思われていないみたい。Apple TV+評価されてないんかなぁ…

この分野では先駆者がいる状態なのでいかに独自コンテンツを充実させられるか、Appleにしかできないことをユーザーに提供できるかってのがAppleに試されている課題に思えますね~

 

って感じで様々なサービスの発表が盛りだくさんな発表でしたね。これからのAppleはモノを売るだけじゃなく広く普及したApple製品を軸に様々なサービス展開していくのかな~って思えるような内容の発表でした

 

しかしAppleの株価は発表を受けて下がってしまいました。サブスクリプションサービスが多いのでそれなりに軌道に乗れば安定した収益を上げて株主や投資家には嬉しい事になりそうですがApple TV+やApple Arcadeはライバルがいるので短期的には覇権とるための激戦になるだろうからすぐには収益でなさそうだしそこを織り込んでいるのかな…

個人的には悪くない発表だったと思います。さすがAppleや

 

個人的にAppleが次に出しそうなサービスは「教育」と「ヘルスケア」だと思いますね。

教育ではiPadが活用できそうだしヘルスケアではApple WatchとiPhoneがあるしね

これからのAppleの動向に注目だ~~

 

おまけ

この記事を書いた後にTwitter上ですごく同感できるツイートを見かけた

これだよ自分の伝えたかった事はこれ~!

上手くまとめるのが下手で長々と書いてしまうのでこういう風に簡潔にまとめられる人尊敬します

[Django] URLから動的に値を取得する

URLから動的に値を取得する方法です。

クエリパラメーターを使った方法はDjangoでURLから値を受け取るココ参考に

URLから動的に値を取りたい…たとえば

http://retasu0.com/mypage/1234

http://retasu0.com/mypage/retasu

この2つにアクセスした際にそれぞれ1234、retasuを取得する方法です。

こういった場合はurls.pyの編集が必要になります。urls.pyに以下のように記述します

<foo>ってのが今回のミソです。

一方でviews.pyには次のように記述します

1行目に注目してほしいのですが引数にfooがありますね。ここで先ほどの<foo>に入る値を取得できます。

あとURLの形を制限?することも可能です。

このようにすればmypage/1234から1234が取得できますがmypage/retasuからretasuを取得することはできません

 

GoogleStadiaについて個人的に思ったこと

GoogleがStadiaってサービスを発表した

Googleが新ゲーミングプラットフォーム「Stadia」を発表!あらゆるデバイスからゲームがプレイ可能

簡単に概要を言うと今までPCで高画質なゲームをするにはかなりの投資が必要だったんだけどGoogleのコンピューターを使ってゲームできるようにするからみんなはもうゲームするために高級なPC買わなくてもいいよ!って話

 

巷では技術的な話やサービスの内容についての話が多いですがちょっと別の視点からこのサービスを見て思ったことをアウトプットも兼ねて書いてこうかなって

 

これから先e-sportsが盛り上がるにつれてゲームって大衆に浸透していくと思うんです。でも一方でゲームをやるためにポンと投資できる人って多くは無いと思うんですよね。PS4は2.5万円くらいで買えますがゲーム用PCとなると10万円くらいになってしまいます。これ簡単に出せる人の方が少ないですよね…

stadiaはそういう層をまるっと取り込めるのでブルーオーシャンに見えますね。データセンターへの設備投資とかもかなり必要なので参入も難しいですし…

 

自分はNVIDIAっていう企業が同様のサービスを結構前からやっているのを知っていたので「ふーん別に革新的な事ではないじゃん」ってのが初めの感想だったんだけど一方でこの発表を受けての市場の反応がこんな感じだった

 

グーグル、ゲーム市場に本格参入-クラウドで高価なゲーム機不要に

強敵グーグル参入でソニーや任天堂株下げる、自社株買いも終了

 

なんでこんなに影響があるんや。天下のGoogle様だから猫も杓子も大騒ぎしてるんかと思ったんだけどそもそもGoogleがノリで行動するわけがない。何か目論んだうえでの参入だろうなって思って少し考えてみた

 

よく見るとstadiaは開発者向けツールも出しているんですよね。おそらく今のandroid向けアプリストアのGooglePlayみたいなプラットフォームを作って包囲網を作る予定でしょう。またGoogleはYouTubeを持っていてゲームの配信と相性が良い。YouTuberっていう絶大な影響力を持つ広告塔達も抱えていますから知名度皆無なNVIDIAとは雲泥の差だしお金を稼ぐ部分が違う。なるほどそりゃインパクトあるわと

 

じゃあstadiaに対抗できる企業って何があるかなって考えてみた。

ゲームのストリーミングだと遅延にシビアそう。こういうのに対応するには各地にしっかりとしたデータセンター抱えてないと難しいと思うんですよね。どんなに立派なデータセンターを構えていても地理的に遠ければどうしようもないですし…

そうなるとGoogle以外に挙がる企業はAzure持ってるMicrosoftとかAWS持ってるAmazonとかかな

 

AppleとかFacebookはそういう印象がないので参入は厳しそう。インフラ屋としてしっかり投資をしてきた先ほどの3社+Nvidiaくらいですかね

 

この2社についてちょっと調べたらこんな記事がありました

 

Microsoft、新ゲームストリーミングサービス「xCloud」のトライアルを年内に開始へ

Amazonが独自のゲームストリーミングサービスを計画中、2020年にサービス開始との噂

 

やっぱりライバル達も参入しそうじゃないか!と。IT業界の巨頭達の次の激戦区はどうやらゲームストリーミング市場っぽい

 

GoogleがYouTube抱えているみたいにAmazonは過去にTwitch買収しているのでこの2社は配信界隈を巻き込んでの激戦になりそう

AmazonはFire TVやタブレットもそれなりに普及させているのでここら辺をどう使うのかも個人的に注目ですね

 

Googleに包囲網作らててユーザー囲われちゃったら今プラットフォームやっているSteamどうなっちゃうの。今回の発表でSteamは悲鳴上げているのかなそれとも将来的にGoolgeに買収されてウハウハかなって思って調べてみたらこんな記事が

マイクロソフトがEAやPUBG、Steam買収??トランプ減税で得た莫大な資金の投資先に検討

うおお過去のニュース達の点と点がつながっていく感じゾクゾクしますね。

確かにSteamみたいな偉大なプラットフォームが枯れて衰退していくなんてありえないですもんね。衰退させるなんて勿体ない事せずにどこかに買収されるのが丸いでしょう

 

MSはプラットフォームやブランドを買収することで一歩先に抜き出る事を考えているみたいですね。

ゲーミングストリーミング界隈は結局のところこの3社の三つ巴な戦いになりそう。最終的にどこが勝利するのか

 

おまけ

stadiaはNVIDIAのライバルのAMDと手を組むらしいです(そりゃNVIDIAのサービスと競合するから当たり前か)

AMDの株価は前日比で12%近くの上昇…すごい…

個人的にはNVIDIAはこれを機にストリーミング界隈から手を引いて供給側に徹した方が利益が多そうに思えるけどNVIDIAのこれからのビジョンとかのそこら辺の事情はわからんな…二頭追って一頭も得ない結果になっちゃったりするのかなあ

[Django] “‘block’ tag with name ‘content’ appears more than once”ってエラーが出た

この記事を参考にテンプレの中にテンプレを…といれたら「’block’ tag with name ‘content’ appears more than once」ってエラーが出てしまった

contentという名前のブロックタグが何度も出ているよって意味だ

問題のコードはこんな感じ

自分勘違いしていたみたいなんですけど{% block content %}じゃなくて{% block 〇〇 %}って使い方なんですね。〇〇は好きなわかりやすい名前にしてOKだけど同じ物を同じテンプレ上で2回以上使うと上記のエラーが出るっぽい

 

よってこんな感じにすれば上のテンプレは問題なく動くと

 

[Django] モデルを任意の個数取得する方法

モデルを全部持ってくるのじゃなくて5個とか10個とか任意の個数を持ってきたいそんなケースに当たったのでメモ

全部持ってくるときは

これは簡単

 

10個だけ持ってきたいときは

これでおけ

[0:10]の部分適宜弄ってあげればスライスも自由自在

 

ちなみに最初の1つだけとか最後の1つだけ取りたいって場合は.first()や.last()つけてあげればよい

もしページネーション関係でここを参照しているならDjangoには専用の関数などがあるのでそっちの方が便利

DjangoでPagination

[Django] ログインしているか調べる方法

ログインしていると見れるけどログインしてないと見れないページを実装する機会は少なくないと思います。上記の事をするだけなら

って感じ@login_requiredをつけてあげれば実装可能です。

しかしこの方法だとログインしていない状態でアクセスすると「Page not found」の404エラーが返ってきます。

ログインしている場合はアクセス出来てそうじゃない場合は別のページ(例えばサインアップページ)に飛ぶように分岐させるには以下のようにします

 

参照

https://qiita.com/haessal/items/2c4077f3600bc3039e06

[Django] 3ステップで実装するログアウト

サインインとログインを実装したので次はログアウトの実装をしてみたいと思います。

ログアウトの機能もDjangoに既にあるのでそれを使うだけ。めっちゃ簡単

まずURLを登録しておきます。urls.pyにこんな感じに追記してけば大丈夫だと思います。

 

次にsettings.pyにログアウトしたらどこに飛ぶかを記入しておきます。

 

次にテンプレートに以下のように記述しておけば完成!

 

ログアウトって書かれたリンクをクリックするとログアウトし任意のページ(今回だとname=’toppage’で登録したURL)に飛ばされます。

 

[Django] ログイン中のユーザーを表示する方法

http://djangoproject.jp/doc/ja/1.0/topics/auth.html

ドキュメントは1だけどDjango2でもこのままで動きます

[Django] ログインフォームでログインに失敗した際は

前回作成したログインフォームではログインに失敗したとき(ユーザー名とパスワードが異なる等)はloginフォームにもう一度飛ばされるという実装になっていました。

それだけだと不親切なのでもし失敗したらエラーメッセージを出してあげましょう

login.htmlを以下のようにします

3~7行目が新たに足されました。

それでは間違ったユーザー名などでログインしてみます

こんな感じでメッセージが出るようになりました。