TomoProgの技術書

底辺プログラマーが達人プログラマーになるまで

Azureを使ったXamarin.FormsアプリをiPhoneにインストールしてみた Part1

皆さん
こんにちは、こんばんは
TomoProgです。

Microsoft Azureと連携したXamarin.FormsアプリをiPhoneにインストールすることに成功したので、インストールまでの道のりを何回かに分けて書いていこうと思います。

Visual Studioを使っている人には申し訳ないですが、私がMacユーザーなので、Xamarin Studioを使うことを前提で書きます。

それでは頑張っていきましょう。

Xamarin Studioをインストールしよう

さてインストールのやり方は・・・
と言いたいところですが、ぶっちゃけますとほとんど覚えていません。笑

Microsoftエバンジェリストのちょまどさんのブログに超詳しく書いてあるので、ここを参考にすると良いと思います。
https://blogs.msdn.microsoft.com/chomado/xamarin/getting-started-xamarin-on-mac-for-free/blogs.msdn.microsoft.com
というわけで、
Xamarin Studioのインストールはちょまどさんに任せて次に進みましょう。笑

Microsoft Azureのアカウントを作成しよう

次にAzureのサービスを利用するためにAzureのアカウントを作成します。
アカウント作成にはクレジットカードが必要なので、準備しておきましょう。
azure.microsoft.com

Azureは本来は課金制ですが、無料で使える期間があるので、今回はそれを利用します。
Azureについて詳しく知りたい人はGoogle先生に聞いてみてください。

Microsoft Azureでモバイルアプリを作ろう

さてここまでかなり端折りましたがアプリ開発に入っていきましょう!!
まずは作ったAzureアカウントでAzureにログインします。

ログインしたら新規->Web + モバイル -> Mobile Appからモバイルアプリを作成します。
f:id:TomoProg:20160616224906j:plain
アプリ名は世界で唯一の名前にしないと設定できません。
リソースグループはとりあえずアプリと同じ名前に設定しておきました。
App Service プランは無料のものを選択しています。

作成すると自動でデプロイされるのでデプロイが完了するまで少し待ちます。
デプロイが完了するとこんな感じでメッセージが表示されます。
f:id:TomoProg:20160616225943j:plain

次にApp Service->自分が作成したアプリ名->設定->クイックスタートを選択します。
クイックスタートの検索バーでXamarinを検索し、Xamarin.Formsを選択します。
f:id:TomoProg:20160616230745j:plain

Xamarin.Formsを選択したらまずはデータベースを作成します。
Data Connections->Add data connection->データベース
から新しいデータベースを作成します。
データベースが作成出来たら、Data Connectionが出来るまでしばし待ちましょう。
f:id:TomoProg:20160616233505j:plain

Data Connectionが出来たらCreate a table APIチェックボックスにチェックを入れ、Create TodoItem tableのボタンを押します。
TodoItemテーブルが完成したら、Downloadボタンからアプリをダウンロードします。
f:id:TomoProg:20160616234421j:plain

ここまででAzure側の設定はすべて終了です。
と同時に今日はここまでにしておきます。

次はXamarin Studioでのビルドから実機にインストールするまでを書いていこうと思います。

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter

Xamarin使ってスマホアプリ開発をやってみようと思う Part0

皆さん
こんにちは、こんばんは
TomoProgです。

気がつけば5月が終わってしまいました。
時が経つのは本当に早いですね。

5月は何を作っていたのか振り返るとDjango掲示板を作成してましたね。

とりあえず、動くものを目指して作ったところ今回は挫折せずに動くものを作ることが出来ました。
PythonBoardという簡単な掲示板です。

http://ik1-326-23085.vs.sakura.ne.jp/PythonBoard/

まだまだ実装していない機能もありますが、次にやりたいことが出てきたので、そっちに移ろうと思います。

次にやりたいことって何よ?
それは・・・

Xamarinを使ったスマホアプリ開発!!

最近Microsoftで話題のちょまどさんの影響でXamarinを使ったアプリ開発をやってみたいと思いました。
twitter.com

こんなアプリ作りたいなという構想はあるので、それを実現できるようなアプリを作っていこうと思います。

今日から頑張っていこう!!

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter

Djangoを使って掲示板を作ってみる Part2

皆さん
こんにちは、こんばんは
TomoProgです。

久しぶりのDjangoを使って掲示板を作ってみるシリーズを書いていこうと思います。

それでは頑張っていきましょう。

完成した・・・?

こんな風に考えていたんです。
とりあえず、作りながら切りが良いときにブログ書いていくか。

そんなことを思いながら手当たり次第に作っていったところ、

キリがいいところってどこだよ・・・。

となって結局ブログをほぼ更新しませんでした。

しかし、とりあえず動くものを作るという目標は達成せねば・・・

というわけで、とりあえず動くものを作ってみました。

PythonBoardというPython関連のことについて話し合える掲示板です。
http://ik1-326-23085.vs.sakura.ne.jp/PythonBoard

Python関連のことに限定していますが、この記事を見ていただいた方は是非トピック立ててみたり返信してみたり、適当に使ってみてください!!

まだ追加したい機能がいくつかあるので、その時は機能ごとにブログを書いていこうと思います。

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter

辞書型のKeyErrorを回避する

皆さん
こんにちは、こんばんは
TomoProgです。

久しぶりにブログ書こうと思います。

今回はPythonの辞書型を使っていると遭遇するKeyErrorについて少し調べてみました。
それでは頑張っていきましょう。

辞書型って何?

KeyErrorの前にまずは辞書型について少し書いておきます。
辞書型とは任意のキーに対して値を持てる型のことです。
他の言語でハッシュマップや連想配列という言葉を聞いたことがある人はそれとほぼ同じ型だと思います。

辞書型を使う場合は波括弧を使って「'キー':'値'」の形で表現します。

#-*- coding:utf-8 -*-

def main():
    person_dict = {'name':'tomoprog', 'age':24, 'blood':'A'}
    print(person_dict['name'])
    print(person_dict['age'])
    print(person_dict['blood'])

if __name__ == "__main__":
    main()
実行結果:
tomoprog
24
A

person_dictという変数に辞書型を定義し、「変数名['Key']」で定義した辞書型の値にアクセスしています。
ちなみに辞書型の値は数値でも文字列でも構いません。

KeyErrorを出力してみる

それでは今回の本題に入っていきましょう。
まずはKeyErrorを実際に起こしてみます。

とは言っても引き起こすのは簡単で、存在しないキーで辞書にアクセスするだけです。
実際にKeyErrorを引き起こしたコードがコチラ

#-*- coding:utf-8 -*-

def main():
    d = {'name':'tomoprog', 'age':24, 'blood':'A'}
    print(d['name'])
    print(d['age'])
    print(d['blood'])
    print(d['height'])

if __name__ == "__main__":
    main()
実行結果:
tomoprog
24
A
Traceback (most recent call last):
  File "dict.py", line 11, in <module>
    main()
  File "dict.py", line 8, in main
    print(d['height'])
KeyError: 'height'

heightという存在しないキーで辞書にアクセスしたためKeyErrorが出力されています。

KeyErrorを回避する

KeyErrorが出力されると強制的にプログラムが終了してしまいます。
強制的に終了されては困る場合はこのKeyErrorを対処しないといけません。

対処する方法としては

  1. 辞書にキーが存在するかを確認してからアクセスする
  2. try-exceptを実装する

この2つの方法が考えられます。

実際に2つの方法で対処してみましょう。

辞書にキーが存在するかを確認してからアクセスする

キーを確認してからアクセスする場合はinまたはgetを使用します。
inを使う場合はもし、キーが辞書にあればというif文を書くことでKeyErrorを回避できます。

#-*- coding:utf-8 -*-

def main():
    d = {'name':'tomoprog', 'age':24, 'blood':'A'}

    if 'age' in d:
        print(d['age'])
    else:
        print("d do not have 'age' key")

    if 'height' in d:
        print(d['height'])
    else:
        print("d do not have 'height' key")

if __name__ == "__main__":
    main()
実行結果:
24
d do not have 'height' key

getを使う場合は辞書型.get()メソッドを使用します。
存在する場合は第1引数、存在しない場合は第2引数を返します。

#-*- coding:utf-8 -*-

def main():
    d = {'name':'tomoprog', 'age':24, 'blood':'A'}
    print(d.get('name', None))
    print(d.get('height', None))

if __name__ == "__main__":
    main()
実行結果:
tomoprog
None

どちらかと言えばgetを使うほうがif文が必要ない分綺麗に書けそうです。

try-exceptを実装する

try-exceptを使用する場合はKeyErrorが出力される部分をtryで囲み、exceptでKeyErrorを捕捉します。

#-*- coding:utf-8 -*-

def main():
    d = {'name':'tomoprog', 'age':24, 'blood':'A'}
    try:
        print(d['height'])
    except KeyError:
        print("KeyError Exception.")

if __name__ == "__main__":
    main()
実行結果:
KeyError Exception.

try-exceptが実装されることで、KeyErrorが出力されたときも強制終了することなく実行できます。

まとめ

今回は辞書型のKeyErrorの回避方法として、いくつか例を上げてみました。
個人的にはgetを使う方法が一番綺麗に簡潔に書けるので好きです。
KeyErrorで詰まった時は是非参考にしてみてください。

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter

Djangoを使って掲示板を作ってみる Part1

皆さん
こんにちは、こんばんは
TomoProgです。

Djangoを使って掲示板を作ってみる Part0を書いてから3日ほど経過しました。
そろそろPart1を書こうと思います。

それでは頑張っていきましょう。

掲示板に必要なページを考える

まずは掲示板に必要なページを考えていきます。
とりあえず、思いついたものをどんどん書いていきます。

1. トピックの一覧ページ
2. トピックの内容を一覧できるページ
3. トピックを作成するページ
4. トピックの内容に対して返信するページ
5. 使い方の説明をするページ
6. お問い合わせページ
7. ログインページ

かなり大雑把ですが、とりあえずこの7ページを作れば掲示板としては機能しそうかなと思いました。
作っていく間にこれも必要、あれも必要となった場合は臨機応変にいきましょう。

DBを設計する

とりあえず、DBも大雑把に設計してみます。
djangoのmodels.pyに定義した内容は以下の通りです。

from django.db import models

# Create your models here.
class Topic(models.Model):
    """ Topic Table """
    title = models.CharField(max_length=500)
    register_name = models.CharField(max_length=20)
    register_datetime = models.DateTimeField()
    update_name = models.CharField(max_length=20)
    update_datetime = models.DateTimeField()

    def __str__(self):
        return self.title

class TopicDetail(models.Model):
    """ TopicDetail Table """
    title = models.ForeignKey(Topic, on_delete=models.CASCADE)
    text = models.TextField()
    register_name = models.CharField(max_length=20)
    register_datetime = models.DateTimeField()
    update_name = models.CharField(max_length=20)
    update_datetime = models.DateTimeField()

    def __str__(self):
        return self.title

Topicという親テーブルとそれに紐づくTopicDetailという子テーブルを作りました。
Topicテーブルの一覧を表示するページからトピックを選択することで、TopicDetailの内容を表示するページに遷移するようにイメージして作ってみました。

DBに関しても別のテーブルが必要になったり、テーブルのフィールドや属性を変更したくなった時は随時変更していきます。

とにかくざっくり動くものを目指して作っていきます!!

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter

Vimで「;」(セミコロン)を使ってみる

皆さん
こんにちは、こんばんは
TomoProgです。

今日はVimで「;」(セミコロン)の使い方を知らなかったので、ここに書いておこうと思います。

例えば以下の様な例文があったとしましょう。

My favorite programming language is python!!

カーソルが先頭にあったとして、programmingの「p」にカーソルを移動させたいときはどうすればいいでしょうか?

地道に「l」を押して右にカーソルを移動させてもいいですが、今回の例文では「fp」と入力すると瞬時に移動できます。

「f」を押してから任意のキーを押すことで、現在のカーソル位置から前方検索を行い、マッチした場所にカーソルを移動させることが出来ます。

ここまでは知っていたのですが、ここからさらに次の「p」に移動しようと思った時、もう一度「fp」と入力しないと移動できないとずっと思っていました。

しかしそんな面倒なことはしなくていいです。
なぜなら、
「;」を押すことで直前の「f」コマンドを繰り返す事が出来ますから!!

今まで「.」コマンドでなんで「f」コマンドを繰り返せないんだろうと思っていたのですが、「;」だったのですね・・・

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter

Djangoを使って掲示板を作ってみる Part0

皆さん
こんにちは、こんばんは
TomoProgです。

GWも最終日となりました。
皆さんはどのように過ごしましたか?

私は3泊4日で福岡に旅行に行ってきました!!
博多ラーメン、モツ鍋も食べれたし、太宰府にも行けたので、満足いく九州旅行でした。

それはさておき、前のブログでDjangoを使ってWebアプリを作るという目標を掲げたので、どんなWebアプリを作るのかをここに書いておこうと思います。

それでは頑張っていきましょう。

どんなWebアプリを作るの?

まずはどんなWebアプリを作るのかですが、
Python質問掲示板」
を作成したいと思います。

質問掲示板と書いてありますが、基本的にPythonに関する情報なら何でも有りにしようと思います。

なんで作ろうと思ったの?

理由としては、

  1. Pythonの情報は英語が多いので、日本語でも気軽に情報交換できるサイトが欲しい。
  2. PHPPerlを用いた掲示板作成は多いが、Python掲示板を作ったという情報は見かけない。
  3. 掲示板作成を通じて、Djangoの使い方やDB設計などを経験し、自分自身のスキルを磨く。

それらしいことを理由としてあげていますが、
作ってみたいなと思ったから作る。
これが全てだと思います!!

期間は?

2ヶ月を目標にしようと思います。

最後に

実は一度掲示板を作成しましたが、挫折しました。
今回はとにかく動くものを目指して頑張っていこうと思います。

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter