竹の子エンジニア

30代から目指すエンジニアの日記

C#のメモ

初心者のくせにSwiftやったりPythonやったりしていますが
仕事でC#やる機会に恵まれたので、メモです。

C#使っていると文末のセミコロンを忘れてあたふたしています。
それと、{}(中括弧)の位置が他と違うのもちょっと悩ましいですね。
※余談ですが{}をチューカッコと読むと初めて口頭で聞いた時、
チューしてるように見えるからチューカッコなのかと思ってたのは秘密です。

あと、SwfitとPythonと比べてクラスとメソッドの定義方法が
違うので、それのメモです。

ちなみにC#使うときはVisual Studio 2013を使っています。

クラスとメソッドの定義の仕方。(C#)
//testApplicationという名前でプロジェクトを作成
namespace testApplication
{
    class Program
    {
        static void Main(string[] args)
        {
        
            Person takeshi = new Person();
            takeshi.name = "Takeshi";
            takeshi.age = 32;

            string takeshi_data = takeshi.getData();

    //[Takeshiは32歳です]と表示される。
            Console.WriteLine(takeshi_data);

            //なにかのキーの入力があるまで待機
            Console.ReadKey();

        }
    }

 //Personクラスを定義
    class Person
    {
        //C#の場合、フィールドの変数の前に、publicと入れないと
  //クラスの外側からアクセスできなくなる。
        public string name;
        public int age;

        public string getData()
        {
            string data = name + "は" + age + "歳です";
            return data;
        }
    }
}

pythonでじゃんけんゲームを作成する

pythonを使ってじゃんけんゲームを作成してみました。
以下コードです。

# coding: utf-8

import random

#ゲームクラス   
class Game:
    
    hands = { 1: "グー", 2:"チョキ", 3:"パー" }
    decision = { 0:"引き分け", 1:"負け", 2:"勝ち"}

#ゲーム開始クラス
class GameStart:
    
    print("じゃんけん!")

    #判定処理
    def Judge(self, player):
        #入力された値が1~3以外の場合は、戻り値(0)を返す
        if 0 < player <= 3:
            self.player = player
        
            #相手の手をランダムで決定
            enemy = random.randrange(1,4)

            #自分と相手の出した手を出力
            print("あなたは" + Game.hands[player] + "をだしました")
            print("あいては" + Game.hands[enemy] + "をだしました")

            #勝負の判定
            decision = (self.player - int(enemy) + 3) % 3

            #結果の出力
            print(Game.decision[decision] + "です")

            #判定結果を返す
            #引き分けの場合は0を返す
            return decision

        else:
            print("1~3の範囲で数字を入力してください")
            return 0


#メイン処理
draw = 0

#GameStartクラスの戻り値が引き分け(0)の場合、処理を繰り返す
while draw == 0:
    game = GameStart()
    try:
        player_hand = int(input("1=グー, 2=チョキ, 3=パー: "))
        draw = game.Judge(player_hand)
    except ValueError:
        print("数値で入力してください")
        draw == 1

勝負の判定については以下のサイト様を参考にしています。
qiita.com

このクラスはもっとこうやって抽象化したほうがいいとか
正解がわからないのがもどかしい。

Pythonを触りながらのメモ

どうもこんにちは。
ご無沙汰しております。

最近業務で開発に携わることになり、現在は閑散期に入っているため
業務中はpythonを使いながら言語の習得を目指しています。
Swiftを触れるのが一番よかったんですが、社内環境がWindowsオンリーのため。。

このブログ、最初はRubyやってたはずなんですがRubyは完全に忘れてしまいました。。

そんな中でのちょっとしたメモです。

pythonでの2次元配列の定義
list = [ 1, 2, 3]
array = [ "A", "B", "C"]

list[0] = array     // [["A","B","C"], 2, 3 ]
list[1] = array[1] //[["A","B","C"], "B", 3 ]

print(list)            //B
print(list[0][1])    //[["A", "B", "C"], "B", 3]

Swiftを触っていて、以下のような引数にクラス使うのが
理解できなかったのですが、言葉としてはコンポジションと呼ぶらしい。
has-a関係(犬の飼い主は竹氏であるみたいな)を結ぶときに使えるようです。

classのコンポジションの使い方
class Dog:
    def __init__(self, name, breed, owner):
          self.name = name
          self,breed = breed
          self.owner = owner

class Person:
    def __init__(self, name):
         self.name = name

takeshi = Person("takeshi")
pochi = Dog("pochi", "sibaken", takeshi)

print(pochi.owner.takeshi)     //takeshi

いろいろ間違っていたらすみません。。。

参考

以下の書籍を参考にしてたりします。

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

最近。

Swiftの学習は継続中です。

これまでいろいろな教材を通して、とりあえずヤッテミヨウ!という
精神の元、コードを書いておりましたが、やっぱりやっているだけでは
もろもろ気持ちわるいところが出てきているので、
改めて基礎からやっています。

基礎をやっては、ヤッテミヨウ!を繰り返してやってる状態なので
特に進捗はなし!

***余談

Kindle Unlimitedで多動力を読んでると話ましたが
自己啓発として、こちらの書籍もおもしろかったので紹介します。

とりあえず、やれ。っていう本(笑)

これまでプログラミングの勉強を志してはやめ、
志してはやめを繰り返してた私にはベストマッチな本です。

まだ読んでる途中ですが、テレビを見るのをやめたければ
まずリモコンの置き場を決めるところからはじめようっていうところが
おもしろかったです。

そこからはじめることが大事なのと、そこまででもやることが大事。

自分もスプラトゥーンをやるのを抑制するために、
まずコントローラーの置き場を決めたところ、徐々に
やる頻度が下がっている気がします。(笑)

いろいろ言い訳を連ねてできない人は、一度読んでみるといいかもしれません。

自分自身も、とりあえずやることとして、
家の空いた時間でパソコンの前に座ることを心がけています。
まだ数日なので、いつか実を結ぶと信じている。(笑)

Swiftの学習について

どうもこんにちわ。

現在Swiftを学習中であることを書きました。
それは変わらず学習中であるんですが、
ずっとやっていると飽きてくるっていうのはありますね。

で、いい方法なのか不明なのと、
お金もかかるので推奨するものではないですが
以下を見ながら学習中です。

はい。

前回学習していると話したときの書籍は以下です。

まったく似たような書籍ですね。(笑)

ただ、ずっと同じ書籍を読んでいると気持ちも飽きてくるので
交互に読み替えたりすると思いの外集中できています。

あと片方でわからない内容が、もう片方を読むと理解できるという
思わぬ収穫もあったりしました。(プロパティまわりとか)

学習結果が出たらいいな!

余談

前回余談にて紹介した、ホリエモンこと堀江貴文さんの
多動力を読み終わりました。

本が読みやすく、内容もおもしろかったので
すぐ読み終えることができました。

堀江貴文さんの考え方について書かれた本なのですが
今後つまらない人間にならないように、いろいろな事に興味を持って実行し、
他人に流されすぎないようになりたいな、と思いました。

興味のある方は是非に。

CocoaPodsの導入方法

どうもこんにちわ。

学習においてはアウトプットが大事ということで
今回Swiftのライブラリ管理ツールであるCocoaPodsについてと、
CocoaPodsのインストールおよびライブラリの導入方法について記載します。

CocoaPodsのインストール方法なんかは
ぐぐれば吐いて捨てるほど出てくるので、
そっちのほうを見てくれたほうがわかりやすいと思います。

あくまで私がアウトプットしたいだけです。
ちなみに以下の内容に関しては、Macユーザー+XcodeでのiOS開発者向けです。

CocoaPodsで何ができるの?

iOS開発などに使えるライブラリ管理ツール。
手動でライブラリの追加なども可能ですが、
CocoaPodsを用いることで、ライブラリ管理などが容易になります。

ちなみにライブラリとは、他の人が開発した便利ツールのようなもので
ライブラリをインストールして使用することにより
わざわざ自分で作らなくても便利ツールが利用できるといったものです。

RPGでいうと銅のつるぎを武器屋から購入して装備するといったイメージです。
武器屋から購入すれば銅のつるぎは装備でき、
わざわざ自分で銅のつるぎを素材の入手からはじめて作成する必要はない
といった感じですかね。
FF7でいうとマテリアみたいな感じです。

CocoaPodsのインストール方法

実際のCocoaPodsのインストール方法については以下になります。

Macのターミナルを起動し、以下のコマンドを実行します。

まず、gemを最新にします。

$ sudo gem update --system

次に、cocoaPodsをインストールします。

$ sudo gem install -n /usr/local/bin cocoapods

もし、上記コマンドを実行してない場合は以下でインストールできるかも?
※上記コマンドはMac OS Elcapitan以降でインストールできるコマンドです。
下記コマンドについては実証していないため、不明。。

$ sudo gem install cocoapods

最後に以下のコマンドを実行し、cocoaPodsのセットアップを行います。

$ pod setup

CocoaPodsが正常にインストールされたかを確認する場合は、
以下のコマンドを実行し、バージョン情報が表示されればOKです。

$ pod --version

CocoaPodsの使用方法(外部ライブラリの導入方法)

次にCocoaPodsを使用し、外部ライブラリの導入の仕方についてです。
外部ライブラリはXcodeのプロジェクト単位で適用するため、
外部ライブラリを導入するプロジェクトを導入前に作成します。

以下の操作をしている際にXcodeを開いていると怒られたりするので
事前に閉じておいてください。

また、今回は例として以下の外部ライブラリを導入します。
外部ライブラリの導入方法については以下のURLにも記載があるので
わかりやすいかと思います。

github.com

まず、ターミナルで外部ライブラリを利用するプロジェクトフォルダに移動します。
※プロジェクトフォルダに関しては適宜読み替えてください。

$ cd ~/SampleXcodeProject

プロジェクトフォルダに移動後、以下のコマンドを実行し
Podfileというものを作成します。

$ vi Podfile

上記コマンドを実行すると、Podfileの編集画面が開きます。
viで編集する場合は、ターミナルの画面でキーボードで"i"を押すと、編集モードになります。
編集後、ESCキーを押し編集モードを終了し、
キーボードから「:wq」を押すと保存して終了となります。

Podfileの編集画面にて、以下のように記載します。
※今回は上記リンクにPodfileの作成方法が明記されているため、
コピペしています。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target 'SampleXcodeProject' do
    pod 'Alamofire', '~> 4.7'
end

Podfileの作成後、ターミナルより以下のコマンドを入力し
外部ライブラリのインストールをおこないます。

$ pod install

以上で、外部ライブラリのインストールが完了となります。

インストールすると、プロジェクトファイル内に
xcworkspaceというファイルが作成されているかと思います。

今後プロジェクトを開く場合は、このxcworkspaceを開くと
外部ライブラリを使用することができます。

外部ライブラリを使用する際は、プロジェクト内で
importすることで外部ライブラリを利用することが可能になります。
※外部ライブラリの詳細な利用方法については、リンクなどを参照ください。

また、ライブラリを追加する場合は、
Podfile内に新たに外部ライブラリの指定を追加し、以下のコマンドを実行すると
新しいライブラリをインストールすることができます。

$ pod update

以上、CocoaPodsに関するアウトプットでした。

余談

ここ一年くらいひたすらスプラトゥーン2にはまっていたせいで
ぼろぼろぼろぼろと時間を無駄にしていたこともあり
一日30分は読書週間を設けようと思った最近です。

ひとまず人気の本を読もうと思い、kindle unlimitedに登録し
以下の本を読んでいます。

多動力 (NewsPicks Book)

多動力 (NewsPicks Book)

これまでホリエモンは敵という謎の認識をしていたので
彼の人柄については触れてこなかったのですが、
本を読むにつれ、やっぱり社長になる人っていうのは
どこかしら突出しているんだなと感じています。

これまであまり考えてこなかった話が盛りだくさんで
まだ読書中ではありますが、おもしろいです。
興味のある方は是非。

ちなみにスプラトゥーン2ははまってしまうと抜け出せないのでやめましょう。
いや、ほんと。。。

Splatoon 2 (スプラトゥーン2) - Switch

Splatoon 2 (スプラトゥーン2) - Switch

脳出血になってぶっ倒れた話

どうもこんにちは。

ご無沙汰しております。
だいぶ更新しておりませんでしたが、みなさまいかがお過ごしでしょうか。

久しぶりの更新すぎて、たぶん誰も知らない状態だと思うので
自己紹介をしたいと思います。

名前:たけ氏
年齢:30代前半
仕事:インフラまわりのエンジニア未満
家族構成:嫁と娘(11ヶ月)

そんな感じです。

ブログを更新しようと思ったのは、
タイトルのとおりのことが起こったからです。(笑)

ことのはじまりは、今年の7月に脳出血により意識を失い
痙攣をお越し、病院に担ぎこまれたことからはじまります。

最近は休職などをしており、経過観察中ではあるのですが
病院にいったところ、まだまだ出血をしている状態とのことで
今後出血を繰り返す場合は、出血している部分を取り除くとのことです。

取り除いた場合のリスクとして、その部分周辺は運動神経になっているらしく
最悪手足に麻痺がでる可能性があるとのことです。

なにそれ怖い。

ってことで、まだまだ元気なうちになんかしらの形を残しとこうと思い
ブログを更新しようと思った次第です。

そして、元気なうちに家族には何かを残しておきたい。。(主にお金)

加えて、最悪手足に麻痺が出た場合、在宅の仕事になる可能性があるので
在宅でもできる仕事として、これまで挫折し続けてきたプログラミングの勉強を再度
一念発起して頑張ってみようと思っています。

そしてアプリとかだして稼げればいいな!っていう今更かよっていう
考えも多少あります。
それ以外にも何か在宅+副業+合法で稼げる方法あれば教えてください。(笑)

ひとまずアプリといえばiPhoneアプリだろという考えのもと、
Swiftを勉強しております、

これまでも様々な書籍を紹介してきた私ですが、
今回はこちらの書籍です。(笑)

あとこれ以外にも、udemyというサイトでも動画による勉強をしております。
こちらはハンズオンでも学べるのでおすすめです。

それ以外にも、なにか効果的な学習方法があれば本当に教えていただきたい...。

そんなわけでこれからちょっと頑張りたいと思います。