アラフィフの普通のサラリーマンが、将来フリーランスになれるかを目指してプログラミングをいちから勉強をはじめました。 夫がブログに残した勉強の過程を公開できるようにブログ編集しながら一緒に学んでいきます。
自己アフィリエイト報酬の確認方法とおすすめしないセルフバック
ここまで、動画配信サービス系・クレジットカード系・株やFXの口座開設系のセルフバックをやってきた人は、多い人なら3万円以上の報酬が発生しているかと思います。 もっといろんな種類のセルフバックをやってみたい、自分で案件を探してセルフバックしたい、という人も多いでしょう。 今回は、A8ネットで報酬の確認方法とおすすめしないセルフバックについて解説していきます。 報酬(成果発生)の確認方法 A8ネットの(ログインした状態で)トップ画面から、「発生レポート」を押します。 成果発生レポートが「月別」で表示されます。「日別」を押すと、成果が発生した日付がわかります。 セルフバックに申し込んだはずなのに成果…
※ 当ブログでは商品・サービスのリンク先にプロモーションを含みます。 FXとは? 外国為替のことを英語では「Foreign Exchange」と言います。本来は外貨の両替を意味する言葉ですが、頭文字で「FX」と書くと店頭外国為替証拠金取引を指します。 わかりやすくアメリカドルで説明すると、 1ドルが今何円になるのかを「為替レート」といい、日々常に変化しています。 ドルが欲しい人が多いとドルの価格は上がり(円安ドル高)、ドルを売りたい人が多いとドルの価格は下がります(円高ドル安)。 この為替レートに沿って通貨の売り買いを行うことで、その差額で利益を出そうとすることがFXです。 利益や損失がでる仕…
第5回 株やFXの口座開設系(自己アフィリエイトを使って3ヶ月で5万円稼ぐ方法)
セルフバックの流れ セルフバックの流れは、 1.A8ネットに、無料登録する 2.セルフバックの案件を申し込む 2ー1.動画配信サービス系 2ー2.クレジットカード系 2ー3.株やFXの口座開設系 2ー4.キャッシング系 3.指定した銀行口座で報酬を受け取る です。 今回は、「2ー3.株やFXの口座開設系」のセルフバックを詳しく解説していきます。 株やFXの口座開設系の注意点 株やFXの口座開設系は、条件が厳しいところもあり難易度が高いですが、いろんな証券会社に申し込めるメリットがあります。 株式取引やFXがはじめての方は、口座だけを開設しておいて、株式取引やFXを本格的にはじめるのは資金管理や…
第4回 クレジットカード系(自己アフィリエイトを使って3ヶ月で5万円稼ぐ方法)
セルフバックの流れ セルフバックの流れは、 1.A8ネットに、無料登録する 2.セルフバックの案件を申し込む 2ー1.動画配信サービス系 2ー2.クレジットカード系 2ー3.株やFXの口座開設系 2ー4.キャッシング系 3.指定した銀行口座で報酬を受け取る です。 今回は、「2ー2.クレジットカード系」のセルフバックを詳しく解説していきます。 クレジットカード系の注意点 クレジットカード系は、いろんなクレジットカード会社から頻繁にカードを発行するのはおすすめしません。 今回限りなら3社までを同じ日に申し込む、継続するなら一ヶ月に1〜2社までの申し込みにしましょう。 短い期間で何社も申し込むと、…
第3回 動画配信サービス系(自己アフィリエイトを使って3ヶ月で5万円稼ぐ方法)
セルフバックの流れ セルフバックの流れは、 1.A8ネットに、無料登録する 2.セルフバックの案件を申し込む 3.指定した銀行口座で報酬を受け取る です。 今回は、「2.セルフバックの案件を申し込む」を詳しく解説していきます。 ここからは、稼げるセルフバックの案件を具体的に紹介していきます。 安全で簡単な順でいうと、 2ー1.動画配信サービス系 2ー2.クレジットカード系 2ー3.株やFXの口座開設系 2ー4.キャッシング系 です。 動画配信サービス系は、30日間無料トライアルなどが多く、トライアル期間中に解約すれば無料でそのサービスを利用して、その上で報酬がもらえるというメリットしかない案件…
第2回 A8ネットに無料登録する(自己アフィリエイトを使って3ヶ月で5万円稼ぐ方法)
※ 当ブログでは商品・サービスのリンク先にプロモーションを含みます。 自己アフィリエイトの流れ A8ネットのセルフバックを使えば、自己アフィリエイトは簡単です。 以降、このブログでは自己アフィリエイトのことを「セルフバック」を呼ぶことにします。 セルフバックの流れは、 1.A8ネットに、無料登録する 2.セルフバックの案件を申し込む 3.指定した銀行口座で報酬を受け取る です。 今回は、「1.A8ネットに、無料登録する」までを詳しく解説していきます。 セルフバックをはじめる前に メールアドレスを準備する 普段使っているもの以外にセルフバック用にメールアドレスを1つ用意しましょう。 フリーメール…
第1回 本当に3ヶ月で5万円稼げるか?(自己アフィリエイトを使って3ヶ月で5万円稼ぐ方法)
※ 当ブログでは商品・サービスのリンク先にプロモーションを含みます。 アフィリエイトとは? アフィリエイトとは、企業の商品やサービスを紹介してその商品を購入してもらえたら報酬が発生する成果報酬型広告です。 例えば、下の広告リンクからA8ネットに無料登録してもらえると、私に1件あたり1コインくらいの報酬がもらえます。 なぜ報酬がもらえるのか? 企業は商品やサービスをお客様に買ってもらうために「テレビCM」や「折込チラシ」「立て看板」などの広告宣伝費を使っています。 その宣伝方法の一つが「アフェリエイト」で、企業が報酬を支払ってブログ・X(旧Twitter)・Instagramなどで商品を宣伝して…
Python FlaskとBrythonで三目並べの人工知能AIを作る(後編)
はじめに 前回の続きです。前編では2手目まで条件式で指示を与えていました。 3手目からはミニマックス法もどきで、コンピュータ側の全通りの手を調べて勝つ手があればそれを打ちます。次のプレイヤーのターンも全通り調べて、負ける手があればそこには打たないようにします。(深さが2層のミニマックス法です) コンピュータを完璧にしてプレイヤーがまったく勝てないと面白くないと思うので(本当は邪魔くさい)ある条件の負ける手は打ってしまうように考えます。 3手目以降 「元の位置(self.koma_no)」から大きさ(self.koma)を調べる 「元の位置(self.koma_no)」候補は最大6つ 「移動先(…
Python FlaskとBrythonで三目並べの人工知能AIを作る(前編)
はじめに 今回は、Q学習やミニマックス法などの機械学習を使わずに一から人工知能を作っていきます。人間側で全て指示を与えるタイプの一昔前のAIで、自ら学習することはできません。 1手目と2手目は条件式で指示を与えます。 下の図でマスの位置番号と呼び方を決めておきます。 赤・・「中心」 青・・「角」 白・・「辺」と呼ぶことにします。駒の種類は「大」「中」「小」です。 1手目を考える 先手の場合 「大」を中心に打てばよさそうですが、ランダムで角にも打ちます。 後手の場合 相手の「中」を調べてその位置に「大」をかぶせて打ちます。相手の「中」がなければ「大」を中心か角に打ちます。 # コンピュータの1手…
PythonでWEBアプリの三目並べを作る(完成品:FlaskとBrythonを利用)
はじめに 今回はソースコードを一から見直して作り直します。新たに追加したいのはこちらです。 クリックイベントの整理 ドロップアンドドラッグの実装 スマホのタップにも対応 こちらから遊べます。 http://startpython.pythonanywhere.com/game2/ クリックイベントの整理 JavaScriptだと当たり前かもしれないですが、イベントの発生条件がどのようにすればわかりませんでした。前回までは各要素をクリックした時に関数を呼び出すようにしていましたが、「マウスダウン」「マウスムーブ」「マウスアップ」にまとめて関数を作ります。 # マウスイベント document["…
PythonでWEBアプリの三目並べを作る(改良品:FlaskとBrythonを利用)
はじめに 2戦目の初期駒と先攻後攻を変更しました。「もう一回遊ぶ」で持ち駒をランダムにしてましたが赤と青の差があったので、赤と青の持ち駒は同じにしました。先攻が圧倒的に有利なので負けた方を次戦の先攻にしました。 変更前のソースコード # ゲームの初期化 def initgame(self, event): if document["btn_text"].textContent != "もう一回遊ぶ": alert(self.board) # テスト表示 return #alert(self.board) # テスト表示 # 盤面を初期化 self.board = [0] * 9 for squ…
PythonでWEBアプリの三目並べを作る(試作品:FlaskとBrythonを利用)
はじめに ブラウザ上で動く三目並べを作っていきます。とりあえず試作品が完成したのでソースコードを載せていきます。細かい解説は省略します。 動作環境 Windows10Python 3.7.5Flask 1.1.1Brython 3.8.7 作業フォルダ/ ├ game1/ │ ├ templates/ │ │ └ game1/ │ │ └ oxgame.html │ └ server.py ├ static/ │ ├ brython.js │ ├ brython_stdlib.js │ ├ oxgame.css │ └ oxgame.py ├ templates/ │ └ index.html…
PythonでWEBアプリの三目並べを作る(準備編:FlaskとBrythonを利用)
はじめに 三目並べをブラウザ上で動かすにはどうしたらいいか考えました。本当はJavaScriptを使うのがいいのでしょうが、Brythonモジュールを使えばJavaScriptの代わりができるみたいです。 動作環境 Windows10Python 3.7.5Flask 1.1.1Brython 3.8.7 作業フォルダ/ ├ static/ │ ├ brython.js │ ├ brython_stdlib.js │ └ test.py ├ templates/ │ └ sample.html └ main.py Brythonを使ってみる Brythonは、Pythonをブラウザ上で動かすこ…
2月を振り返って ブログの更新はしばらく間が空いてしまいましたが、プログラミングの勉強は続けています。今やっているのは三目並べの変化系でテレビなどで紹介されていたアレです。 JavaScriptを使わずにPythonのモジュール「Brython」というのを使ってブラウザ上で三目並べを作り始めています。 マウス操作で駒を移動させたり駒を置いた場所から変数を取得したりを勉強しながらプログラミングしています。 思ったより苦労するところが多くなかなか先に進めないので、ブログに書くのもゴールがある程度見えてからにしようと思います。 今のところはこんな感じまで進んでいます。
Python ミニマックス法で五目並べに挑戦します(AIプログラミング 第8回)
はじめに まず、5×5の盤面での「五目並べ」を作成してみます。前回の「三目並べ」を少し変更するだけで完成しました。それほど難しくはなかったです。 実行してみましたが時間がかかりすぎます。メモリ不足でフリーズしてしまいました。 3手先まで読むようにプログラムを変更しました。(深さを3に変更しました) 上手く動きました。(5手先までで時間がかかって待つのは限界です) 5×5の盤面での五目並べは引き分けにしかなりません。(勝敗が付かないです) 次に、5×5の盤面での「四目並べ」を作成しました。5手先まで読むようにしています。そこそこいい勝負?はするのですがかなり弱いです。できれば7手先まで読ませるよ…
Pythonで人工知能搭載の三目並べが完成しました(AIプログラミング 第7回)
こちらのサイトを参考にさせていただきまいた。 qiita.com 最後に全てのソースコードを載せておきます。今回新しく学べたことを解説していきます。前回「考えるマッチ箱」でコピペなしでプログラム作成してみたのですが今回「こうすればよかったんだ」と新しく気づけたことが多かったです。「下手でも動く方法を自分で考える」⇒「人の作ったソースコードを参考にする」⇒「新しい発見がある」 この流れが勉強するのには一番良さそうに感じました。 繰り返しリストの作成 # 盤面の初期化 board = [" "] * 9 board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '…
Python 再帰関数をもう少し詳しく学ぶ(AIプログラミング 第6回)
はじめに 実践で「再帰関数」を使ってみようと思ったのですが、少し気になったことがあったのでもう少し詳しく学んでいきます。 応用(動きを追いかける) 前回の最後の例を少し変えました。 def func4(n): if n >= 3: return for i in range(2): #print("n=", n,"i=", i) # 再帰 func4(n+1) print("n=", n,"i=", i) return func4(0) 値の表示を「再帰」の後にもってきてみました。 for文に書き直して考えてみます。 for i in range(2): for j in range(2): …
Python 再帰関数をわかりやすく解説(AIプログラミング 第5回)
はじめに 「ゲーム木」を扱う上で「再帰関数」はほぼ必須っぽかったので詳しく勉強していきます。 再帰関数とは 自分自身を呼び出す関数です。そもそも「再帰」という言葉で検索することは少ないと思います。「def関数内で自分自身の関数を使う」「def内でループしている」などで検索していて「再帰関数」という言葉が出てくることが多いと思います。 基本(前回のおさらい) 例: def func(n): if n <= 0: return n return n + func(n-1) print(func(10)) 実行してみると「55」(1から10までの和)が表示されました。 print(func(10))…
ミニマックス法はわかったけどソースコードがわからない(AIプログラミング 第4回)
はじめに 三目並べに限らず、チェスや将棋などの対戦ゲームでは何手目か先まで読んで一番良い手を打ちます。もし最後までの全通りを読めれば最強です。 それをコンピュータでやってしまおうというのが今回の試みです。 木構造(ツリー構造)とは? 局面が枝分かれして木のようなデータ構造のことをいいます。(始まりを「根(ルート)」、分かれ道を「枝(エッジ)」、次の局面を「節点(ノード)」、最終局面を「葉(リーフ)」と呼ぶことが多いです) 「ここに打てば相手はこう打ってきて、次はあそこに打とう」「こっちに打てばあそこに打たれたら負ける」と人が考えるのを「ゲーム木(木構造)」といい、機械学習などでよく使われます。…
考えるマッチ箱 前回、「マッチ箱」に三目並べを学習させました。2097個のマッチ箱と勝負して果たして勝てるかという実験です。 先手を入力できるように変更したソースコードがこちらです。 import random import csv # csvファイルを読み込む with open("matchbox.csv", "r", encoding="Shift_jis") as f: reader = list(csv.reader(f)) print("マッチ箱の数:", len(reader)) # 繰り返し処理(試行回数) for step in range(10): # 盤面 board_1…
Pythonで三目並べを学習させる(AIプログラミング 第2回)
はじめに 前回、「考えるマッチ箱」というコンピュータを使わずに三目並べを学習する方法を学びました。 start-python.hateblo.jp 今回はその学習手順をPythonでプログラミングしていきます。 ソースコード import random import csv # csvファイルを読み込む with open("matchbox.csv", "r", encoding="Shift_jis") as f: reader = list(csv.reader(f)) print("マッチ箱の数:", len(reader)) # 繰り返し処理(試行回数) for step in ra…
AIとは? AI(エーアイ)とは人工知能のことです。Artificial Intelligence(人工的な知能)です。『「言語の理解や推論、問題解決などの知的行動を人間に代わってコンピューターに行わせる技術」、または、「計算機(コンピュータ)による知的な情報処理システムの設計や実現に関する研究分野」ともされる。』==Wikipediaより引用== AIの定義 実はまだ専門家の間でも定まっていないらしいです。「知能を持つ機械」とも言われますし、「知能の定義が明確でないので、人工知能も定義できない」という意見もあります。その中で「考える機械」ってのが一番しっくりきました。画像認識、音声認識、自動…
FlaskでWebアプリが完成しました!(全ソースコードはこちらです)
画像1 はじめに Webアプリが完成したので全ソースコードを載せることにしました。 こちらから実際に操作できますのでお試しください。 http://startpython.pythonanywhere.com/blog/ ユーザー名とパスワードを何も入れずにログインするとゲストでログインできます。 ※ユーザー名・パスワードは普段お使いのもの以外にしてください。セキュリティーは保証できません。 関連記事 HTML メニューボタンの作り方2(CSSでメニュー一覧を開く・閉じる、表示・非表示) HTML メニューボタンの作り方1(CSS フッターの謎の隙間をなくす方法) HTML 共通テンプレートを…
FlaskでWebアプリを作成 続き3(ユーザーの編集・削除と検索の機能をアップデートまで)
はじめに 前回の続きで、今回は「別のユーザーの投稿は編集・削除不可」と「検索の機能」を追加していきます。 おまけ:絶対位置を中央寄せにする方法「left: 0; right: 0; を追加する」 別のユーザーの投稿は編集・削除不可: データベースにユーザー名を追加 タイトル表示の方法を変更 編集画面の修正(ゲストはゲストの投稿を編集・削除できる) 検索の機能: ヘッダーに検索ボックスを作成 フッターの検索ボタンを修正(フォーカスの移動) 検索ワードで絞り込み処理 1.データベースにユーザー名を追加 「models.py」のSQLiteでデータベースを追加します。 user = Column(S…
FlaskでWebアプリを作成 続き2(編集と削除の機能をアップデートまで)
はじめに 前回の続きで、今回は編集画面を作って更新と削除の機能を追加していきます。 おまけ:CSSが反映されないときの対処法「リロードをshift+F5で行う」 目標: インデックス画面の「サンプル1」をユーザー名に変更 編集画面のレイアウトを作成 編集画面へ移動 編集画面で更新処理 編集画面に削除ボタン ゲストは更新・削除をできないように 1.「サンプル1」をユーザー名に変更 「index.html」の「<h3>サンプル1</h3>」を消してタイトルの部分に「タイトル @ユーザー名」にすることにしました。 server.py(変更部分) #「/diarysave」へアクセスがあった場合「/b…
FlaskでWebアプリを作成 続き1(インデックス画面と入力画面を機能させてアップデートまで)
はじめに インデックス(見出し)画面と入力画面のレイアウトが出来上がったので、以前にログイン画面を作成したWebサイトに追加・変更していきます。 以前の内容はこちら start-python.hateblo.jp 動作環境 Windows10Python 3.7.5Flask 1.1.1 作業フォルダ/ ├ blog/ │ ├ templates/ │ │ └ blog/ │ │ ├ base.html ・・・(1) │ │ ├ edit.html ・・・(4) │ │ ├ index.html ・・・(3) │ │ ├ newcomoer.html │ │ └ top.html │ ├ mo…
HTML メニューボタンの作り方2(CSSでメニュー一覧を開く・閉じる、表示・非表示)
はじめに 今回はボタンを押すとメニュー一覧が表示されるメニューボタンを作成します。CSSだけで(Javascriptは使わずに)ヘッダー部分に配置します。 ソースコード base.html <link rel="stylesheet" type="text/css" href="/static/base.css"> <header> <h3 id="user_name">レイルーク@ふたり暮らし</h3> <div class="menu_box"> <label id="menu" for="toggle">メニュー</label> <input type="checkbox" id="to…
HTML メニューボタンの作り方1(CSS フッターの謎の隙間をなくす方法)
はじめに 今回はメニューボタンを作成します。フッター部分に、リストを一行で配置して外枠を付けてリンクできるようにします。前から少し気になってた「フッターの余白が消えない問題」も解決していきます。 ソースコード base.html <link rel="stylesheet" type="text/css" href="/static/base.css"> <footer> <ul> <li>ホーム</li> <li>検 索</li> <li><a href="/blog/create">新規作成</a></li> <li><a href="/blog/logout">ログアウト</a></li…
HTML 共通テンプレートを作成する(HTMLで変数、if文、for文の使い方)
はじめに Pythonのjinja2モジュールの使います。(HTMLだけでは機能しません) PythonのFlaskでWebサイトを作る時に、複数のページで同じ内容(ヘッダーやフッターなど)を利用することが多いです。jinja2モジュールを使って共通テンプレートを作成しておくと、複数のページからテンプレートを呼び出して使えるので便利です。また、jinja2を利用してPythonでの変数をHTMLに読み込む方法も解説していきます。 jinja2での共通テンプレートの使い方 {% extends "ファイル名" %} ベース(基本)となる「HTMLファイル」で共通テンプレート(ヘッダーやフッターの…
HTML 入力画面を作成(CSSでファイル選択した画像を表示する方法)
はじめに 今回は記事の入力画面を作成します。写真や画像をファイルから選択して張り付けます。ファイル選択の部分はJavascriptを使います。 動作環境 Windows10メモ帳Google Chrome 作業フォルダ/ ├ static/ │ ├ back_image.jpg │ ├ edit.css │ └ edit.js └ edit.html ソースコード edit.hrml <!DOCTYPE html> <link rel="stylesheet" type="text/css" href="static/edit.css"> <script src="static/edit.js…
はじめに 今回は画像を表示させる場所についてです。文章を左に、画像を右に表示してみたいと思います。CSSで「float」を使う方法です。少しハマったところもあったので詳しく解説していきます。 文字の右に画像を表示する方法 float: right; /*右に寄せる*/ 画像サイズを固定(自動で縮小・拡大)させる場合は「width: 300px; /*画像サイズを固定*/」を使います。 「HTMLファイル」での文字の記述場所は、「float」で指定した「画像(要素)」の後ろに記述します。 <h3>サンプル3</h3> <img src="static/images/sample3.gif"> <…
CSSでタイトルとメニュー画面を固定する(ヘッダーとフッターの使い方)
ヘッダーとフッターとは? 「<header>~</header>」「<footer>~</footer>」はHTML5から新たに追加された要素で、それまでは「<div id="header">~</div>」「<div id="footer">~</div>」と書くのが一般的だったらしいです。以前の書き方との違いはわかりませんでした。 <!DOCTYPE html> <body> <p>ヘッダーの上</p> <header> <p>ここはヘッダーです<p> </header> <h1>表題</h1> <footer> <p>ここはフッターです<p> </footer> <p>フッターの下</p…
新規登録画面をサクッと作成してアップロード/Flask Blueprintを利用した時のCSSファイルとjsファイルの保存場所
はじめに 今回は新規登録画面を作っていきます。完成したら「Pythonanywhere」へアップロードします。ログイン画面とほとんど同じなのでCSSは使いまわします。 動作環境 Windows10メモ帳Google Chrome 作業フォルダ/ ├ static/ │ ├ image.jpg │ ├ newcomer.css │ └ newcomer.js └ newcomer.html アップロードのことを考えて「static」フォルダを作りました。 ソースコード newcomer.html <!DOCTYPE html> <meta name="viewport" content="wid…
作成したPC向けのサイトをスマホ対応にする方法(スマホでWebサイトを開くと小さく表示されてしまう問題)
結論 HTMLファイルの<head>~</head>の部分にこれを入れればオッケーです。 <meta name="viewport" content="width=device-width,initial-scale=1"> 通常はスマホで画面を表示する時に、自動で縮小して全体を表示するため小さく表示されてしまいます。幅の初期値960pxをスマホの幅(320~414px:iphon6~8は375px)に合わせて縮小するためです。そこで表示領域をdevice-width(その機種の横幅)に設定することで縮小することなくそのままの大きさで表示できます。「initial-scale=1」は倍率のこと…
HTML ツイッター風のログイン画面を作成する(CSSでレイアウトの調整)
はじめに 前回のログイン画面を新しく作り直します。今回からCSSを本格的に勉強してします。新しく出てきた命令を「【保存版】CSS 逆引き辞典(初心者用 随時更新予定)」に追加していきます。 Twitterのログイン画面を参考にゼロから作りました。 動作環境 Windows10メモ帳Google Chrome 作業フォルダ/ ├─ login.html ├─ login.css └─ login.js cssとjsのファイル名がバラバラだと探すのが大変だと思ったので同じ「login」にしました。 HTMLの解説 login.html <!DOCTYPE html><link rel="style…
使い方 「CSSの説明書(スタイルシートリファレンス)」「CSS命令一覧」「CSSプロパティ一覧」と、いろいろありますがやりたい事をどう命令するのかがわからないと調べられません。何度も同じことを調べて同じサイトに辿り着くことが多かったので、自分で見直す用に「逆引き辞典」を作ることにしました。 とりあえず「何を」「どうする」で調べられるようにしてみます。随時覚えたことを更新していきます。 なにを? ※特定の要素に見つからないときは「要素全体(共通)」にある場合があります。 基本の書き方 要素全体(共通) 特定の要素 文字 テキストボックス ボタン 画像 基本の書き方 要素(タグ、ID、クラス)に…
Flask-Loginを使わずにログイン画面を実装する(Blueprintsでパス指定やSECRET_KEYを設置する方法)
http://startpython.pythonanywhere.com/ こちらから実際に操作できますのでお試しください。(ユーザー名・パスワードは普段お使いのもの以外にしてください。セキュリティーは保証できません。) はじめに Webアプリに必要になることが多い「ログイン機能」を勉強していきます。複数のWebアプリを実行するために「Blueprints」を使用しましたが、結構行き詰ったところがありました。同じような苦労をした方にも参考になればうれしいです。 動作環境 Windows10Python 3.7.5Flask 1.1.1 作業フォルダ/ ├ blog/ │ ├ template…
100記事達成しました! なんと!この記事が100記事目です。長いようであっという間でもあります。 記事数が増えてくるとわからないところを見返して調べるとこも多くなってきました。とりあえず昔のコードもナンバリングして残してあるので、そのコードから引っ張ってきて新しく利用する機会もでてきます。 もしブログをせずにプログラミングの勉強だけ進めていたら「あれ?これ昔やったけどどうだったっけ?」とコードもなくまたググっていたことでしょう。現在プログラミングの勉強中の方はどのようにしてるか気になるところです。(いい方法があれば教えてほしいです。)これからプログラミングを始める方も是非ブログなどで経過や詰…
Flask 複数の実行ファイルを一つにする方法(トップページに目次を作成)
はじめに 新しいWebアプリを作成したいけど「PythonAnywhere」だと無料では1つのトップページしか登録できません。以前作成したのも残したいので、トップページに目次のようなものを作り各Webアプリを実行できるようにしていきます。今回は「Blueprints」というモジュールを使います。通常「Blueprints」は長くなった一つの実行ファイルを分けるために使用するみたいです。ディレクトリ構成やファイル名なども今回から真剣に考えていきます。 start-python.hateblo.jp このときに作成した簡単なWebページのコードを使っていきます。 動作環境 Windows10Pyt…
はじめに 今回はHTMLからCSSとJavaScriptを外部から読み込み、図形を動かす方法について学んでいきます。CSSは何度か使ってきましたががっつり勉強する意味で「はじめてのCSS」にさせていただきました。また、文字に色を付けたりサイズを変更したりがCSSの基本になると思いますが、いきなり図形の表示からはじめます。 動作環境 Windows10メモ帳(テキストエディタです)Google Chrome(ブラウザです) 作業フォルダ/ ├─ test.html ├─ test2.css └─ test3.js // HTMLの解説 test.html <!DOCTYPE html> <htm…
はじめてのJavaScript(HTMLで現在の時刻を表示する)
はじめに 今回はJavaScriptをHTML内に<script>を用いて記述する方法について学んでいきます。JavaScriptを本格的に学ぶのは大変なので必要最小限で理解できるように心掛けます。 動作環境 Windows10メモ帳(テキストエディタです)Google Chrome(ブラウザです) // ただいまの時刻は 上のように現在の時刻を表示します。 <!DOCTYPE html> <html> <head> <title>時計</title> <script> window.onload = function() { setInterval(function() { var dd =…
はじめてのHTML言語(HTML5 タグが省略可能になっていた)
はじめに 今回はHTMLの基本について学んでいきましょう。 はじめての方にも理解できるように具体例を使ってわかりやすく解説していきます。 動作環境 Windows10メモ帳(テキストエディタです)Google Chrome(ブラウザです) まずは作ってみよう <!DOCTYPE html> <html> <head> <title>タイトル</title> </head> <body> <h1>表題</h1> <p>ここに本文が入ります</p> </body> </html> メモ帳で上記の文書を作成します。入力が完了したら、メモ帳のメニューから [ファイル]→[名前を付けて保存] で入力した…
Flask matplotlibを使ってグラフを表示する方法(JavaScriptのChart.jsを使ってグラフを描画)
はじめに 今回はちょっと寄り道してFlaskでグラフを表示してみます。本当はグラフのアニメーションを作りたかったのですが諦めました。あとで調べたところ、JavaScriptを使ったほうが簡単できれいに出来るみたいだったのでそちらも作成してみました。 動作環境 Windows10Python 3.7.5Flask 1.1.1 コード test.py from flask import Flask, render_template, make_response from io import BytesIO import urllib from matplotlib.backends.backend…
Flask ボタンの大きさや位置を変更する(ボタンでページ移動する)
はじめに 今回から「Flask」の基本を勉強していきます。「html」「css」「javascript」の知識が必要になってきます。まずは基本的なwebページを作ってみます。次にボタンを作ります。 動作環境 Windows10Python 3.7.5Flask 1.1.1 作業フォルダ/ ├─ templates/ │ └─ index.html ├─ static/ │ ├─ index.css │ └─ index.js └─ test.py htmlファイルを保存するフォルダ名は「templates」でないといけません。また、CSSファイルとJavaScriptファイルを保存するフォルダ…
Python Flaskを使ってweb公開する方法 第2回(PythonAnywhereの使い方)
はじめに 今回は、前回「PythonAnywhere」で作成した「Flask(フラスコ)」のファイルを確認して編集してみます。そして新しいファイルをアップロードしてみます。今回も「Git」は使いません。 ファイルの確認と編集 前回、webアプリ作成のときの最後に表示されたパス(/home/Startpython/mysite/flask_app.py)の場所を見てみます。 「PythonAnywhere」のサイトを開きます。 https://www.pythonanywhere.com/ 「Browse files(ブラウズファイル)」を押します。 「mysite」フォルダの中にある「flas…
Python Flaskを使ってweb公開する方法 第1回(PythonAnywhereの使い方)
はじめに 前回は「Git」でファイルをアップロードしてインターネットで公開(デプロイ)するまでをやりましたが、PythonAnywhereのヘルパーツールが全部自動でやってくれたので実際の設定方法などがわかりませんでした。また「Django」が難しすぎたためまだ理解できなさそうだったので「Flask」の基本から勉強していきます。 まずは「PythonAnywhere」で「Flask(フラスコ)」を作成してみます。今回は「Git」は使いません。 PythonAnywhereのアカウント作成 こちらのサイトから「PythonAnywhere」の新規登録をします。 https://www.pytho…
Windowsでインターネット上にWebアプリを公開する方法(「Git」と「PythonAnywhere」を使用)
はじめに 前回はサンプルアプリを起動するところまで進みました。今回はそのサンプルアプリをインターネットで公開(デプロイ)していきます。 ここをご覧いただいている方の多くは、デプロイが初めての方もしくは途中であきらめた方だと思いますので、説明は少なめに最短で進めていきたいと思います。 デプロイの方法 前回新規登録した「Git」と「PythonAnywhere」を使っていきます。 1.Gitリポジトリを始める リポジトリを初期化します。コマンドプロンプトから下記を入力(コピペ)します。 cd djangogirls cd instant-django git init git config --g…
Windowsでマッチングアプリを作ってみよう(Djangoの使い方、最短でチュートリアルを進める)
はじめに プログラミング初心者がマッチングアプリ作成に挑戦します。マッチングアプリと言っても恋活アプリではなく趣味を通じた出会いや情報交換ができるアプリを目指します。1つ基本形が完成すればそれを利用していろいろ応用できそうです。 まずは「Django」を使ってマッチングサイトから作り始めてみます。「Django」の使い方を勉強していきましょう。 使い方 説明を少なくしてなるべく最短でサンプルが使えるまでを解説します。 1.仮想環境を作る(フォルダを作る) コマンドプロンプトを起ち上げて下記を入力(コピペ)します。 mkdir djangogirls cd djangogirls python3…
3Dグラフのアニメーションを作成する(Python matplotlibの使い方)
はじめに 前回に続き、今度はmatplotlibモジュールを使って三次元グラフを作ってみます。「from mpl_toolkits.mplot3d import Axes3D」を使用します。サイコロの出た目を、前回の目をx軸、前々回の目をy軸にしたとき、z軸に偶数なら青色で奇数なら赤色で出た目の合計回数グラフで表します。 プログラムのコード import random import numpy as np import matplotlib.pylab as plt import matplotlib.animation as animation from mpl_toolkits.mplot…
棒グラフのアニメーションを作成する(Python matplotlibの使い方)
はじめに matplotlibモジュールの基本的な使い方を勉強します。「animation.FuncAnimation」を使ってサイコロの出た目の合計回数を棒グラフで表します。 棒グラフの表示だけならこちらです。 ※jupyter notebookでグラフを表示する場合は、「%matplotlib nbagg」を最初に入れます。 プログラムのコード import random import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig, ax = plt.subp…
PythonでGIF編集ソフトが完成しました(動画ファイルを読み込んでGIFへの保存も可能)
はじめに GIFファイルを開いて編集(再生、カット、トリミング)ができるソフトです。 保存したGIFファイルがこちらです。 使い方 実行ファイルがあるフォルダにdataフォルダを作ってdataフォルダの中にGIFファイルを用意します。 ソフトを起動するとGIFファイルの一覧が出ます。ファイル名をクリックすると画面が変わってGIFが編集できます。 上のボタン 「<」・・・タイトル一覧に戻ります 「保存」・・GIFファイルを保存します(保存ファイル名はtest.gifにしています) 下のボタン 「 ◀」・・・最初(1コマ目)に戻ります 「◀ 」・・・1コマ戻ります 「▶」・・・再生します(「■」・…
Kivy 範囲選択を行い座標を取り出す(Python 点線の描画)
はじめに 今回は範囲選択を行い座標を取り出します。図形の移動の応用です。 範囲選択(点線の描画) def __init__(self, **kwargs): super().__init__(**kwargs) self.lines = [] def on_image1_down(self, touch): self.x1 = touch.x self.y1 = touch.y if len(self.lines)>0: for line in self.lines: self.ids.image1.canvas.remove(line) self.lines = [] with self.i…
Kivy 「on_touch_move」を利用して図形を移動する(Python 図形の移動)
はじめに 今回は「on_touch_move」を利用して図形を移動させます。 図形の移動 def on_image1_down(self, touch): try: self.ids.image1.canvas.remove(self.lines) except: pass with self.ids.image1.canvas: Color(1, 0, 0) touch.ud['line'] = Rectangle(pos=touch.pos, size=(100, 100)) self.lines = touch.ud['line'] def on_image1_move(self, to…
Kivy 「canvas.remove」を利用して図形を消す(Python 図形の削除)
はじめに 今回は「canvas.remove」を利用して図形を消します。 図形の削除 def on_image1_down(self, touch): try: self.ids.image1.canvas.remove(self.lines) except: pass with self.ids.image1.canvas: Color(1, 0, 0) touch.ud['line'] = Rectangle(pos=touch.pos, size=(100, 100)) self.lines = touch.ud['line'] 解説 クリックしたときに描画する図形を「self.line…
Kivy 特定のウェジットだけでon_touch_downを使う(Python クリックした座標を取り出す)
はじめに クリックした座標を取りたくて「on_touch_down」を利用したらボタンが押せなくなりました。その時に使った対処法です。 def on_touch_down(self, touch): print(touch.pos) これだとマウスをクリックした座標は取れますが、ほかの操作(ボタンを押す)が効かなくなります。 解決策(例) kvファイルで「on_touch_down:」の行を追加して BoxLayout: orientation: "vertical" Image: id: image1 size_hint_y: 10 texture: root.image_texture o…
Python GIFファイルを再生する(Kivy 画像更新)
はじめに 今回はClockオブジェクトを利用して画像を更新する方法です。指定された間隔で繰り返し処理を行います。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 1) import os import glob impo…
Python 一部のレイアウトだけ変更する(kivy 画面遷移)
はじめに 前回の続きでGIFファイルを表示しようと思いましたが、先にレイアウトの切り替えが必要になりました。画面のスライドで使ったCarouselを利用します。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 1) im…
Python ファイル一覧にサムネイルを付ける(Kivy Image画像で一覧を作る)
はじめに 前回の続きです。フォルダ内のファイル名一覧にサムネイルを表示しました。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 1) import os import glob import cv2 import nu…
Python フォルダ内のファイル名を取得する(スライド可能な一覧を作る)
はじめに 今回からGIF編集ソフトを作っていきたいと思います。 まずはファイル選択の部分を作ります。特定のフォルダからGIFファイルだけを抜き出し一覧にします。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) fr…
あけましておめでとうございます! 今までは日記として毎日の進捗状況を書いてきました。明日から正月の間はブログ休みます。 現在のブログの状況です。 ブログを始めてからTwitterも始めました。 今年からは完成した内容や詰まったところを不定期で書いていきたいと思います。 12月を振り返って 人工知能とはどういう仕組みか、どうやっているのかなど、機械学習のやり方がわかりたくて始めたPython(プログラミング)です。 毎日ブログ更新を目標に1日で出来る範囲で何をしようかと考えてきました。いつのまにかプログラミングの勉強よりブログが優先になってた気がします。 今後はアクセス数は気にせずプログラミング…
Python GIFファイルをTwitterに張り付ける(GIFアニメーションに変換する)
はじめに 以前作成したGIFファイルがTwitterに張り付けると動きませんでした。原因を調べてみると色が最大256色しか使えないことがわかりました。 今回はすでに保存したGIFファイルをGIFアニメーションに変換するプログラムを作っていきます。 解説 色情報は、(0,0,0) ~ (255,255,255) の約1677万色(256×256×256)あります。 GIFアニメーションの場合は、最大256色(8×8×4)です。 =====ここから勘違い===== なるほど。RGBなら赤が8段階、緑が8段階、青が4段階の256色か、と思ってしまいました。256を8で割って「32」。おそらく、0, …
Python GIFファイルの読み込み・編集・表示・書き込み
はじめに GIFファイルを編集するための準備を行います。GIFの読み込み、表示、書き込みの基本を勉強していきます。GIFの読み込み方は「OpenCV」と「Pillow(PIL)」がありますが、「OpenCV」が編集しやすそうなのでこちらを利用します。 モジュールのインポート import cv2 import numpy as np from moviepy.editor import ImageSequenceClip 今回はOpenCVを使います。numpyは編集用です。ImageSequenceClipは保存時に使います。 GIFファイルの読み込み gif = cv2.VideoCapt…
Kivy ラベルとボタンの境界線を手動で移動させる(Python Kivyの取説・使い方 第15回)
ラベルとボタンの境界線を手動で移動させる方法 Splitter(スプリッター)ウィジェットを使います。境界をドラッグすることでサイズが変更できます。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) from kiv…
Kivy ファイル選択ダイアログからテキストファイルを読み込む(Python Kivyの取説・使い方 第14回)
はじめに 今回は納得できるまでの結果は出ませんでした。まだまだ課題が残ってますが、Kivyでのポップアップ(Popup)とファイル選択(FileChooser)をやってみました。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizabl…
Kivy テキストファイルの読み込みと保存(Python Kivyの取説・使い方 第13回)
はじめに Kivyのテキストボックスの内容をtxtファイルへ保存する方法を調べるのに苦労しました。それもそのはずで保存はKivyモジュールは使わずPythonのwrite関数を使うみたいです。最近KivyばかりやっていたのでなんでもKivyでしようとしてました。 Pythonでファイルの読み込みと保存する方法 open関数とread関数、write関数を使います。 open関数 変数 = open(引数1, 引数2) 引数1:ファイル名(同じフォルダにないときはパス名にも注意) 引数2:モード。「r」と指定しない場合は読み込み、「w」で書き込みです。 read関数 変数 = 引数1.read(…
Kivy 日本語の表示と日本語を入力する(Python Kivyの取説・使い方 第12回)
日本語表示と日本語入力をする方法 1)kvファイルに日本語を対応させる 2)日本語を表示させる 3)日本語を入力する の順番で解説していきます。 1)kvファイルに日本語を対応させる まずラベル、テキストボックス、ボタンを作ります。 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('gra…
Kivy グラフを表示する(Python Kivyの取説・使い方 第11回)
グラフを表示する方法 今回はMatplotlibモジュールを使ってグラフを表示していきます。BoxLayoutの上にラベル、真ん中にグラフ、下にボタンを表示させたいと思います。 プログラムのコード # フル画面を解除 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label from kivy.garden.matp…
Kivy 写真の向きを正しく表示する(Python Kivyの取説・使い方 第10回)
写真の向きを正しく表示する方法 今回はPILモジュールを使って「画像を回転」してKivyで表示していきます。 画面のスライドのときに使った「Imageウィジェット」では、ファイル名を指定して画像を表示するため画像ファイルを編集する場合は一度保存する必要があります。 出来れば画像ファイルはそのまま残したいので今回は「Textureウィジェット」を使ってcanvas内に表示させたいと思います。 まずはそのまま画像を表示してみます。ここで少し苦労しました。 プログラムのコード # フル画面を解除 from kivy.config import Config Config.set('graphics'…
スマホで撮った写真が横を向いてしまう(Python Kivyの取説・使い方 番外編)
はじめに 前回の画面のスライドで、なぜか縦向きの写真が横を向いてしまう問題を調べていきます。 スマホで撮った写真などは、画像ファイルの中に撮影した日付、位置情報、写真の向きなどのデータが格納されています。そのデータのことを「Exif」というらしいです。 今回はPILモジュールを使用して「Exif情報の取得」と「画像の回転」を行います。 Exif情報のOrientationが「6」のとき、写真は左に90度向いてしまいます。 (Orientationが「8」のときは右に90度、Orientationが「3」のときは180度回転してしまうようです) プログラムのコード from PIL import…
Kivy 画面をスライドさせる(Python Kivyの取説・使い方 第9回)
画面をスライドさせる方法 今回は画面のスライドを作ってみます。Carousel(ウェジットの1つ)を使います。Carouselとは、直訳でメリーゴーラウンドや回転式コンベヤーという意味です。スライド間でスワイプして水平または垂直に移動できます。 まずは基本的なCarouselを作ってみます。 プログラムのコード from kivy.app import App from kivy.uix.button import Button from kivy.uix.carousel import Carousel class MainApp(App): def build(self): layout …
Kivy 画面をスクロールさせる(Python Kivyの取説・使い方 第8回)
画面をスクロールさせる方法 今回は画面スクロールを作ってみます。ScrollView(ウェジットの1つ)を使います。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) from kivy.app import App…
Kivy ボタンでボールの速度を変える(Python Kivyの取説・使い方 第7回)
ボールの速度を変える方法 今回はボタンを使ってみます。スピードアップとスピードダウン、そして逆再生の3つのボタンを作ります。(本当は一時停止を作りたかったのですがグローバル変数とか面倒だったので逆再生にしたのは内緒です) 第6回で使ったプログラムを少し修正します。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'hei…
Kivy サブ画面でボールを動かす(Python Kivyの取説・使い方 第6回)
サブ画面でボールを動かす方法 第5回の続きです。ボールが動くようになりました。 KivyのチュートリアルにあるPong Gameを参考にしていきます。チュートリアルの「ボールのアニメーションを追加する」からです。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('gra…
Kivy ボールが動かない(Python Kivyの取説・使い方 番外編)
はじめに 本日は最後までボールは動きません。 特に進展もないので飛ばしてもらった方がいいです。ハマった様子を見たい方のみ先にお進みください。 Kivyのチュートリアルの「ボールのアニメーションを追加する」でボールが動きません。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.s…
Kivy レイアウトの中に別のレイアウトを作る(Python Kivyの取説・使い方 第5回)
レイアウトの中に別のレイアウトを作る方法 KivyのチュートリアルにあるPong Gameを参考にしていきます。 レイアウトの中に別のレイアウトで「Pong Game」ぽいのを作っていきます。 前回のプログラムを少し変更します。 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graph…
Kivy 背景に色を付ける(Python Kivyの取説・使い方 第4回)
背景のレイアウトを追加する方法 背景に色を付けてみます。 前回のプログラムをそのまま使います。 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) from kivy.app import App from kivy.uix.boxlay…
Kivy kvファイルを使ってレイアウトを変更する(Python Kivyの取説・使い方 第3回)
kvファイルとは? Appで終わるクラス名からAppを引いた小文字で同じ名前を持つkvファイルを呼び出します。例えば、class TestApp(App):の場合は kvファイルの名前は「test.kv」です。ラベルやボタンなどのレイアウト情報を別ファイルで管理して簡単に調整できます。 前回、ラベルとボタンを縦に並べたプログラムでkvファイルを作ってみます。 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'wi…
Kivy ラベルとボタンを配置する(Python Kivyの取説・使い方 第2回)
ラベルとボタンを配置する方法 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) from kivy.app import App from kivy.uix.boxlayout import BoxLayout # 追加部分 from …
Kivy 全画面表示を解除する(Python Kivyの取説・使い方 第1回)
フル画面を解除してウィンドウの大きさを設定する方法 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', 'resizable', 0) fullscreenフルスクリーンのオンオフを設定します。「0」でフル画面を解除できます。 width、height幅と高さを設定しま…
はじめに ボタンを押すとテキストボックスの文字がラベルに表示されるプログラムを日本語入力に対応しました。 解説 こちらのサイトを参考にさせていただきました。 qiita.com cppファイルとdllファイルも同じフォルダに保存してpython multi_language_textinput.pyを編集していきます。 まずkivy languageの部分をkvファイルにしました。 次に変換候補は今回は必要ないと思い、その部分は削除しました。(細かい部分は消しきれてないかもしれません) そしてkvファイルのテキストボックスのsizeとposを指定しました。 ここで問題が発生します。sizeが認…
Kivyでの日本語入力に再挑戦(Python テキストボックス作成)
本日の課題と目標 テキストボックスに日本語を入力する はじめに start-python.hateblo.jp 以前一度挑戦して諦めていたKivyでテキストボックスに日本語入力。dllを作っている方がいるということを教えていただき再び挑戦することになりました。 結論から言うと出来ました! 変換候補を出せてないのでちょっと残念ですが大満足です!これで諦めていたKivyを使ってスマホアプリが作れそうです。教えていただいた方に感謝です。 解説 こちらのサイトから勉強させていただきました。 Kivyで日本語入力 - Qiita プログラムコードをお借りして今回は使わない部分を削ってkvファイルを作りま…
Deep Q-Network(DQN)(最終回)なんとか棒を倒さず安定させられました
Deep Q-Network(DQN)による倒立振子 第7回 はじめに 前回は学習させる方法を見ていきました。今回は残りの部分をさっと流して棒を安定させるためにどこがおかしいか探っていきます。 最後のプログラムのコードです。 if DQN_MODE: targetQN = mainQN # 行動決定と価値計算のQネットワークをおなじにする # 1施行終了時の処理 if done: total_reward_vec = np.hstack((total_reward_vec[1:], episode_reward)) # 報酬を記録 print('%d Episode finished afte…
Kerasで重みの学習をする(Python Deep Q-Network(DQN))
Deep Q-Network(DQN)による倒立振子 第6回 はじめに 前回は学習したモデルで予測した結果を出しました。今回は学習させる方法を見ていきます。 # Qネットワークの重みを学習・更新する replay if (memory.len() > batch_size) and not islearned: mainQN.replay(memory, batch_size, gamma, targetQN) ざっと流れを追ってみましたがなかなか理解するのは難しそうでした。少しずつやっていきます。 プログラムの流れ if (memory.len() > batch_size) and not…
Kerasで予測した結果を出す(Python predictメソッドの使い方)
Deep Q-Network(DQN)による倒立振子 第5回 はじめに モジュールのバージョン問題やクラスの理解不足でなかなか先に進みません。 今回からメイン部分を見ていきます。 # [5.3]メインルーチン-------------------------------------------------------- for episode in range(num_episodes): # 試行数分繰り返す env.reset() # cartPoleの環境初期化 state, reward, done, _ = env.step(env.action_space.sample()) # …
Python クラスって難しい(クラスの使い方を勉強しなおしました)
Deep Q-Network(DQN)による倒立振子 第4回 はじめに 今回はこちらの二行を見ていきます。 memory = Memory(max_size=memory_size) actor = Actor() クラス:Memoryを呼び出しています。 # [3]Experience ReplayとFixed Target Q-Networkを実現するメモリクラス class Memory: def __init__(self, max_size=1000): self.buffer = deque(maxlen=max_size) self.buffer = deque(maxlen=m…
Deep Q-Network(DQN)による倒立振子 第3回 はじめに 今回は「mainQN = QNetwork(hidden_size=hidden_size, learning_rate=learning_rate) # メインのQネットワーク」この一行を見ていきます。 クラス:QNetworkを呼び出しています。 # [2]Q関数をディープラーニングのネットワークをクラスとして定義 class QNetwork: def __init__(self, learning_rate=0.01, state_size=4, action_size=2, hidden_size=10): se…
Tensorflowのバージョンは何を使ったらいいかわからない
Deep Q-Network(DQN)による倒立振子 第2回 はじめに 前回からDeep Q-Network(DQN)を勉強しています。前回のエラーの原因を詳しく調べていきます。 「WARNING:tensorflow:The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.」 この部分を翻訳かけて検索すると、 Python - Pytonで沢山エラーメッセージが出てしまいました...。|teratail こちらに解決策が載ってました。どうやらモジュール…
Deep Q-Network(DQN)エラーが大量に起こって安定しない
Deep Q-Network(DQN)による倒立振子 第1回 はじめに 今回からDeep Q-Network(DQN)を勉強します。ざっとコードを見た感じでは絶望的にまったくわかりません。 一日二日では終わりそうにないのでその日に進んだ分だけ載せていきます。十分に理解できるのには数か月もしくは理解できることはないのかもしれませんがいけるとこまでいってみます。 プログラムのコードは CartPoleでDQN(deep Q-learning)、DDQNを実装・解説【Phythonで強化学習:第2回】 こちらからそのまま使わせていただきました。 まずはコピペで動作確認 200試行を過ぎても安定しませ…
はじめに Deep Q-Network(DQN)の勉強を始める前に気になったことがあったのでちょっと寄り道します。 それは、CartPoleのカートを自分で操作してみたくなりました。(右移動と左移動をキーボードで入力) とりあえず動けばオッケー、ということで完成形がこちら。 プログラムのコード import gym import pygame pygame.init() screen = pygame.display.set_mode((600, 120)) pygame.display.set_caption("test") myclock = pygame.time.Clock() env…
gymの倒立振子を使って強化学習モンテカルロ法 モンテカルロ法とQ-learning、SARSA法の違い モンテカルロ法は、アクションごとにQ値を更新するQ-learningやSARSA法と違い、CartPoleが倒れるまで行動しその行動履歴から一気にQ値を更新します。 モンテカルロ法は一度未来を見てから一気にQ値の更新をかけるため、遠い未来の報酬も比較的早く学習できるというメリットがあります。 20試行回数くらいですでに安定しています。1試行が終わったときに一気にQ値が更新されます。 プログラムのコード # coding:utf-8 # [0]ライブラリのインポート import gym #…
強化学習の歴史 強化学習の始まりは1763年「ベイズの定理」のベースが発表された年だと言われています。1989年「Q学習」が開発され強化学習の実用性がかなり上がりました。その後「冬の時代」が続きますが、2006年「ディープラーニング」の概念が提案されました。そして2009年、ニューラルネットワークをわずか3週間ほどで十分に学習させられることを立証し、最先端の音声認識技術を確立させました。それから10年、飛躍的に進化を続けています。 11月の振り返って 強化学習、楽しいです。やっとQ学習がわかってきて(計算式は相変わらず理解できませんが)1989年に追いついた感じです。勉強するにしたがって「ディ…
gymの倒立振子を使って強化学習SARSA法 Q-learningとSARSA法の違い 次のアクション(next_action)を学習の前に求める(SARSA法)か、学習の後で決定する(Q-learning)かが違います。先に求めるSARSA法だとε-greedy法によりランダムになる場合が出てきます。 むずかしいことはわかりませんが、Q-learningのメリットははランダム要素が少なく結果が早く収束することだと思います。SARSA法のメリットはランダム要素により収束まで時間はかかりますが最適な方向へより安定した結果を出せることだと思います。(間違ってたらごめんなさい) まとめるとSARSA…
gymの倒立振子を使って強化学習Q-learning(Q学習)第2回 はじめに 前回は、状態を「4つの要素を6分割」して1296通りの中から今ある状態のときの「右と左」に「報酬と罰則」を与えながら得点の高い方を選ぶやり方でした。 今回は、状態を「2つの要素を8分割と6分割」にして48通りでやってみます。 これで8✖️6✖️2の三次元配列のq_tableにできるのて、得点の変化を見ながら学習させていけそうです。 表の横が棒の角度(-0.5,~0.5)、縦が棒の角速度(-2.0~2.0)です。上が大きいときは右に移動、下が大きいときは左に移動となります。 30試行回数くらいの様子です。50試行回数…
Q-learning(Q学習)による倒立振子 (棒を立て続ける)
gymの倒立振子を使って強化学習Q-learning(Q学習)第1回 500試行ほどの学習によりかなり安定して棒を支えられるようになりました。 プログラムのコードは CartPoleでQ学習(Q-learning)を実装・解説【Phythonで強化学習:第1回】 こちらからそのまま使わせていただきました。 解説 変数 q_table 【重要】 「6の4乗」個と「2」個からなる二次元配列 (初期値は全て -1~1の乱数) 変数 state 4つの要素を6分割した値を6進数で表して、さらに十進数にしたもの (6個ずつの四次元配列を一次元配列に変換したときの何番目か) np.argmax関数 act…
機械学習とはどういうものか? 機械学習の分類にはさまざまな分類方法がありますが、このアルゴリズムを次の3種類に分ける考え方があります。 ・教師あり学習(Supervised Learning) 過去のデータから将来起こりそうな事象を予測する用途に使われます。 ・教師なし学習(Unsupervised Learning) アルゴリズム自身がデータを探索してその内部に何らかの構造を見つけ出します。 ・強化学習(Reinforcement Learning) どの行動が最大の報酬を生み出すかを、試行錯誤を通して突き止めます。 今回は強化学習について勉強していきたいと思います。 本日の課題と目標 gy…
【完成版】特定のウィンドウだけの動画とGIFを保存したい (Python デスクトップキャプチャ2)
本日の課題と目標 録画時間と待機時間を自由に変更できるようにする 保存するウィンドウの名前を指定できるようにする はじめに 前回作成したデスクトップ画面を録画するプログラムを改良します。録画が始まるタイミングと終わったタイミングがわかるようにしました。 プログラムのコード import cv2 import numpy as np from PIL import ImageGrab import ctypes import win32gui import tkinter import time # ウィンドウのタイトル名 root = tkinter.Tk() root.title('test…
特定のウィンドウだけの動画とGIFを保存したい (Python デスクトップキャプチャ)
本日の課題と目標 Pythonでデスクトップの動画キャプチャを作る 特定のウィンドウだけをキャプチャする 動画と一緒にGIFでも保存する 今後の目標 録画時間と待機時間を自由に変更できるようにする 保存するウィンドウの名前を指定できるようにする はじめに 完成したプログラムの動きのあるところを貼り付けたかったのでフリーソフトを探そうとしましたが自分で作れればいいなと思い挑戦してみました。 苦労した点は、保存した動画の色が変になってしまい原因がわからなかったところです。 プログラムのコード # 画像書き込み import cv2 # 型変換 import numpy as np # スクリーンシ…
Tkinterでスライダーを使ってカウントダウンを作る(Python タイマー作成)
本日の課題と目標 Tkinterでタイマーを作る Tkinterでスライダーを利用する はじめに 以前Kivyで作ったのと同じものをTkinterで作成します。最初に設定した秒数だけカウントダウンするプログラムです。 スライダー(slider)のことをTkinterではスケール(scale)というみたいです。 プログラムのコード import tkinter import time # ウィンドウのタイトル名 root = tkinter.Tk() root.title("test") root.geometry("300x150") # キャンバスエリアの設定 canvas = tkinte…
Tkinterでボタンとラベルを利用する (Python ボタンとラベルの配置)
本日の課題と目標 Tkinterでボタンとラベルを利用する はじめに 以前Kivyで作ったのと同じものをTkinterで作成します。テキストボックスに続きボタンとラベルを作っていきます。 プログラムのコード import sys import tkinter # ウィンドウのタイトル名、幅と高さを設定 root = tkinter.Tk() root.title(u"test") root.geometry("300x150") # ボタンが押されるとここが呼び出される def EntryValue(event): # ここで,valueにEntryの中身が入る value = EditBox…
Tkinterでテキストボックスを利用する (Python テキストボックスの配置)
本日の課題と目標 Tkinterでテキストボックスを利用する 日本語入力が出来るかテストする はじめに 今回から新たにTkinterを勉強していきます。ラベルとボタンは後回しにして、テキストボックスを作っていきます。 プログラムのコード(エラー) import sys import Tkinter # ウィンドウのタイトル名、幅と高さを設定 root = Tkinter.Tk() root.title(u"test") root.geometry("300x150") # エントリー(テキストボックス) EditBox = Tkinter.Entry(width=200) EditBox.in…
「ブログリーダー」を活用して、ReyLukeさんをフォローしませんか?