マネー報道 MoneyReport

マネーにまつわる報道を取り上げ、自分の切り口で切り取り、噛み砕いてお伝えします。

MT4のEA「WeekOverDoubleOption」を作成しました!ご応募作品第1作目です!

MT4のEAアイデア大募集

FXの自動売買でMT4を活用してトレードを模索しています。
せっかく自分でプログラミングできるスキルがあるので、自作のEAを作ってトレードしたいな、と。
そして、折角作るなら多くの人の投資手法をEA(自動売買プログラム)として作って紹介させて頂こうかと。

そう思ってFXの投資手法のアイデアを募集しました(^-^)/

まだ応募フォームの方ではアイデアは集まっていないのですが、ブコメでアイデアを頂きました!

id:nakanemonさん
週末に両建て入れておいて、週明けに片方だけすぐ決済してもう片方はプラスになったら決済するトレード。
18時間してもマイナスだと損切り

id:nakanemonさん、投資手法アイデアの応募ありがとうございます(^-^)/
ふむふむ。
週末の金曜日に相場が閉まるタイミングで両建てでポジションを持っておいて、週明けに利益の出ているポジションを決済して、もう片方のポジションはプラスに転じたら決済する、と。
もちろんプラスに転じない場合もありますから、その場合には18時間後に損切り決済する、と。

おぉ!
アイデアとして面白いですね(^-^)v
少なくとも片方のポジションは必ず利益が出ますし、もう一方のポジションもうまく元の値段に戻ってきてくれればトントンで決済できますから、両方合わせれば利益が出る、と。

ではでは早速作ってみましょう!

MT4のEA「WeekOverDoubleOption」

週またぎで両建てのポジションを持つとの事なので、「週またぎ=WeekOver」、「両建て=DoubleOption」という合っているかどうかもわからない英語で命名してみました(^-^;

サクッと作ってみましょう!

++++ (実装中) +++++

・・・

・・・

出来た~!
完成品はこちら。

f:id:MoneyReport:20170420150043j:plain

テスト

と、いうわけで作れましたが、テストもしておかないとダメですね。

バックテストを行いましょう。
とりあえずはUSD/JPY(米ドル/円)で1年間ほど試験で回してみましょう!
結果は・・・

f:id:MoneyReport:20170420145736j:plain

ジャン!

うーん、残念(;_;)
右肩下がり。

テスト結果はこちら。
f:id:MoneyReport:20170420150230j:plain

テストレポートは下記。
f:id:MoneyReport:20170420150252j:plain

PFが0.86という事で、1.00を下回ってしまうと損失が出ていますね(^-^;

試しに別の期間でユーロ/円とかでやったら利益が出たりもしました(^-^)v
しかし、やはりこれはというしかないでかもですね(^o^;

EUR/JPYだと

一応EUR/JPYでもバックテストを行ったので、結果を載せておきます。

このトレードはうまくはまると(週末大したニュースもなく、週明けの乖離が小さい場合)案外、履歴が乗りやすく、こんな感じに。
f:id:MoneyReport:20170420160107j:plain

しかし、週末にニュースがあって値段が飛んでスタートすると、18時後までにポジションがプラスに転じる事がないと大きな損失確定になるのが痛いところ(-_-;
f:id:MoneyReport:20170420160155j:plain

2011年初~2016年末までの5年間でテストを実施したところ・・・
f:id:MoneyReport:20170420160400j:plain
ん~、やっぱりジグザグ(^^;

PFは0.98と先ほどよりはよくなりましたが、やはり1.00以下でマイナスですね~。
f:id:MoneyReport:20170420160423j:plain

週末に大きなニュースがある時(まさに今週末のヨーロッパの選挙など)は避けて稼働させれば、まだ多少は良い結果になるのかもしれませんね(^o^;

EAダウンロード

一応完成したEAはダウンロードできる様にしておきますので、テストしてみたい方は使って見て下さい(^-^)v

ただ、あまりにも雑に作っているのでもう少し手直ししてから良いバージョンを再びアップロードしたいとも思っています。

投資手法大募集!

という事で、引き続きFXの投資手法についてはアイデアを大募集しています!
下記リンクの応募フォームよりお申込ください。

MT4のEA・CIアイデア募集フォームMT4のEA・CIアイデア募集フォーム 

今回は全員向けにEAを提供させて頂きましたが、きちんと良いEAが出来たら販売や特定の方向けに提供させて頂く予定です。
ですが、アイデアを応募して頂いた方には原則無料でEAを提供させて頂きますのでよろしくお願いします(^-^)/

確定申告向けMT4スクリプト『TaxReturnCSV_MF』(MFクラウド確定申告版)の使い方

MT4スクリプトをプレゼント!

確定申告の季節が近づいてきました。
最近の私のブログでの人気記事は下記の「確定申告の還付申告」の話題について書いた記事です。

還付申告のみの人は既に1月から申告可能になっていますが、本格的な確定申告は2月16日からの1ヶ月間となっています。
もう既に確定申告の帳簿付けが終わった方達もいらっしゃるんじゃないでしょうかね。

え、私?
帳簿付けなんて全然終わっていませんよ(^-^;
3ヶ月に一度ずつ領収書の整理は行いましたが、それ以外の確定申告周りの作業はまだ全然やっていません。

さて、そんな確定申告シーズンを間近に控えたこの頃ですが、
確定申告向けのMT4(メタトレーダー4)のプログラムを作ってみました!
MT4を使ったトレードの確定申告では、年間収支を出して提出すれば基本的には良いのですが、個人事業主の方で「FXトレード」を事業としてやっている方は1回ずつのトレードの利益と損失を仕訳として提出したい人もいらっしゃるかと思います。

そうした人達向けのプログラムを作りました。
MT4のトレード結果を手作業で1件ずつ仕訳として会計ソフトに入力しようとすると、動かしているEA(エキスパートアドバイザー)によっては1日に何度もトレードするので、膨大な件数を入力する必要が出てきます。
1日10回のトレードとして1年間で何回ほどのトレード回数になるのでしょうか?
1年間は365日で、FXトレード可能な平日は年間260日ほどありますから

 10回 × 260日 = 2,600回

となりまして、2,600件もの仕訳を手入力するとなるとシャレになりません(-_-;

そこで、これらのMT4を使ったトレード履歴の全てのトレードの収支をCSV出力できるプログラムを作りました。
常時動かすようなプログラムではないので、EAではなくてScripts(スクリプト)で作成しました
また、クラウド会計ソフトで簡単に取り込めるように、個別のサービスに合わせたバージョンを作成しています。
MFクラウド確定申告」と「無料会計ソフトfreee」に対応しています。

そして、これらの確定申告向けMT4スクリプトをプレゼントさせて頂こうかと(^-^)/
プレゼントの概要をまとめたのは下記記事になります。

そして実際のプレゼント応募ページは下記になります。

MT4確定申告向けScpitsプレゼント | マネー報道 FXMT4確定申告向けScpitsプレゼント | マネー報道 FX 

このスクリプトが欲しい方は応募期間中にご応募ください
原則は確定申告の受付期間前までにしたいと考えています。

MFクラウド確定申告のMT4スクリプト『TaxReturnCSV_MF』の使い方

今回プレゼントするスクリプトの内、「MFクラウド確定申告」対応版のスクリプトの名称が「TaxReturnCSV_MF.ex4」となっています。
f:id:MoneyReport:20170120155136j:plain

この対象スクリプトをMT4のスクリプトフォルダに入れて動かします。
MT4のスクリプトフォルダにファイルを配置するのには、MT4を起動し「ファイル」→「データフォルダを開く」を選択します。
f:id:MoneyReport:20170120160042j:plain

次に「MQL4」フォルダ→「Scripts」フォルダを開き、そのフォルダ内に「TaxReturnCSV_MF.ex4」ファイルを貼り付けます。
f:id:MoneyReport:20170120160056j:plain

そしたらMT4の画面に戻ってナビゲーター内の「スクリプト」フォルダ上で右クリックして「更新」を選びます。
f:id:MoneyReport:20170120160832j:plain

するとスクリプトが反映されて読み込まれます。
f:id:MoneyReport:20170120160854j:plain

そしてこのスクリプト「TaxReturnCSV_MF.ex4」をマウスでつかんで、チャート上にドラッグ&ドロップします。
f:id:MoneyReport:20170120161006j:plain

するとScriptの子画面が表示されます。
f:id:MoneyReport:20170121152725j:plain
バージョン情報には「TaxReturnCSV_MF 1.00」と表示されています。

「パラメーターの入力」タブを選ぶと、変更可能なパラメーターが表示されます。
f:id:MoneyReport:20170121152904j:plain

スクロールするとこんな感じ。
f:id:MoneyReport:20170121152950j:plain
2ページ分(?)くらいのパラメーターがあります。
こちらを個別に設定することで、個人個人に合わせて項目でCSVが出力可能です。

「OK」ボタンをクリックしてスクリプトを実行してみましょう!

実行すると「ターミナル」→「操作履歴」にこの様な感じでスクリプトが動作した後が残ります。
f:id:MoneyReport:20170121153102j:plain

  • 2017.01.21 14:31:22.759 Script TaxReturnCSV_MF USDJPYmicro,H1: removed
  • 2017.01.21 14:37:07.379 Script TaxReturnCSV_MF USDJPYmicro,H1: loaded successfully

スクリプト動作後はMT4内部のフォルダにCSVファイルが出力されています。
f:id:MoneyReport:20170121153422j:plain
先ほどまでスクリプトファイルを置いていたフォルダの「Scripts」と同じ階層にある「Files」フォルダ内に出力されています。

出力されたCSVファイルの中身は下記の様な感じ。
f:id:MoneyReport:20170121153642j:plain
これはsakuraエディタで開いた様子。

Excelで開くとこんな感じになります。
f:id:MoneyReport:20170121153703j:plain
Excelの方が見やすいですか。

スクリプトの使い方はここまでです。

MFクラウド確定申告でのインポート方法

続いて、出力したCSVファイルを「MFクラウド確定申告」にインポートしてみましょう。
MFクラウド確定申告にログインしてから以後の操作は行ってください。

MFクラウド確定申告の基本的な使い方等は下記書籍に詳しく載っていますので、そちらをご覧ください。

「会計帳簿」→「仕訳帳」をクリック。
f:id:MoneyReport:20170121153734j:plain

仕訳帳画面の上部右側に「インポート」ボタンがあるので、それをクリックします。
f:id:MoneyReport:20170121153944j:plain

「インポート」→「仕訳帳」をクリック。
f:id:MoneyReport:20170121154040j:plain

「仕訳帳(CSVファイル)のインポート」子画面が表示されますので「インポートするCSVファイルを選択してください。」枠内にある「ファイルを選択」ボタンをクリックして、先ほどスクリプトで出力されたCSVファイルを選びます。
f:id:MoneyReport:20170121154323j:plain

CSVファイルが選べたら「インポート」ボタンをクリックします。
f:id:MoneyReport:20170121154503j:plain

50件以上の取引履歴の場合には下記メッセージが表示されます。
「下記表では50行以上は表示を省略しています。データの取り込み自体は省略された箇所でも行われております。」
f:id:MoneyReport:20170121154546j:plain
MT4で自動売買していると、結構な数の取引履歴(100件~1,000件程度)になるので、皆さんこのメッセージは表示されると思います。
「確認」ボタンをクリックします。

未指定の勘定科目や税区分などがあると下記の様なメッセージが途中で表示されますが、大抵は気にせずに最後まで辿り着けると思います。
f:id:MoneyReport:20170121154809j:plain

エラーがない場合には下記の「仕訳ファイルインポート」画面が表示されます。
f:id:MoneyReport:20170121155028j:plain
問題がなければ「保存」ボタンをクリックします。

CSVファイルのインポートが成功すると下記の様なメッセージが表示されます。
「ファイルのインポート受付が完了しました。取り込み状況はトップページにてご確認いただけます。
なお、インポート受付直後は、他ファイルのインポートを行う事は出来ません。トップページにて対応完了の確認後に実施してください」

f:id:MoneyReport:20170121155203j:plain

インポート直後は何故か取り込んだ仕訳データが表示されないので、再度左メニューの「会計帳簿」→「仕訳帳」をクリックして再表示させるとインポートしたデータが表示されます。
f:id:MoneyReport:20170121155239j:plain
左側に「インポート」の文字が見えますね。

また、トレードの取引手数料が掛かる口座でトレードしている方は、複合仕訳で「利益と手数料」、「損失と手数料」として取り込むことも可能です。
f:id:MoneyReport:20170121155403j:plain
その場合には、2行で1仕訳として取り込まれます。

利用時の注意点

当ツールを利用したことに関連して生ずる損害について、一切責任を負いません。(自己責任でお使いください)
当ツールはプレゼントという形式をとりますがフリーソフトです。
個人使用・業務使用に関わらず自由にご使用いただいて構いませんが、著作権は放棄しておりません。
また当ツールの販売、再配布は禁止いたします。

もし不具合等ございましたら当記事のコメント欄またはプレゼントページに記載のメールアドレスまでご連絡ください。

なお、どのように確定申告するかはご利用者個人や税務署ごとに異なります。
ご不明な点等は税務署の方へお問い合わせください。
確定申告について、私にお問い合わせ頂いてもお答えしかねます。

まとめ

と、ざざっと『TaxReturnCSV_MF』(MFクラウド確定申告版)の使い方を説明させていただきました。
普段MT4のEAを使っている人にすればなんてことはない作業だと思うので、順を追って実行して頂ければと思います。

また、実際に「MFクラウド確定申告」にインポートする場合には、いきなり全件で取り込むのではなくて、10件程度に減らしてインポートしてみてください。

「ありゃ、間違っていた!」

と気付いた時にデータを消すのは非常に手間なので、失敗してもダメージの少ない(手間の少ない)10件程度で一度テストしてみて、問題なければ全件を取り込むようにしてください。

またパラメーターについての記載は今回の記事ではまだ未記載です。
普通に使うだけならデフォルト設定で問題ないと思いますが、勘定科目や補助勘定科目とうをご自身の登録している内容に沿って修正する場合にはパラメーターの変更が必須になります
ですがすいません、時間切れです(;_;)
追って、この記事に追記しますのでご利用時にはこの記事を再度見に来られるように、ブックマークやPocket等で戻ってこれるようにしておいて下さい

この一ヶ月くらいの間は確定申告向けMT4スクリプト『TaxReturnCSV_MF』をプレゼント致しますので、確定申告の申告準備もあるでしょうから早めにお申し込み下さい。

MT4確定申告向けScpitsプレゼント | マネー報道 FXMT4確定申告向けScpitsプレゼント | マネー報道 FX 

ではではFXトレーダーの皆さん、確定申告を頑張りましょう(^-^)/

連載目次:確定申告の話題

MT4の確定申告用スクリプトをプレゼント!トレード履歴をCSV出力しMFクラウド確定申告とfreeeに取込可能です!

MT4の確定申告が個人的に増えた

2016年度の確定申告日程が税務署より発表されています。
平成28年分の確定申告期間は
平成29年2月16日(木)~平成29年3月15日(水)
となっています。

昨年1年間の収入の内、給与以外で20万円以上の収入を得た人やマイホームを新築した人などが行うのが確定申告になります。

また、個人事業主を営んでいる人も確定申告を行う必要がありますね。
会社が年末調整で一気に提出してくれたりしないので、自分で収入と支出をまとめ、経費や控除を差し引いて「所得が幾らですよ」というのを提出しなければいけません。
私も昨年の確定申告ではフリーランスになって初めての確定申告だった事もあり、分からない事だらけで泣きながら多くの人の助けを得ながらなんとか申告しました(;_;)

そして、今年提出する確定申告では昨年までの事業所得の申告とは別に、さらにFX(外国為替証拠金取引)のMT4(メタトレーダー4)の収益も申告する必要があります。
昨年もFXのトレードは行っていたので投資分の申告は行っていましたが、FXの自動売買であるMT4を使ったトレードは今年の申告で初めて提出します。
2016年に初めてMT4を使ったトレードをしたものですから。

というわけで、今から事前に調べておいて、スムーズに申告できるように準備をしていこうかと。

今回作ったMT4スクリプト

そして今回作ったMT4のスクリプトは「MT4の年間取引収支データを個別に全てCSV出力する」ものになります。
トレードの収入と損失をそれぞれ1回の取引毎に、1件の仕訳データとして出力します。
基本的には自分で使うように開発したので、私が使っているクラウド会計サービスの「MFクラウド確定申告」に対応したものを作成しました。
また「他にも対応できるかな?」と調べてみたところ「無料会計ソフトfreee」も仕訳データの取り込みが可能だったので別バージョンで作成しました。
残念ながら「やよいの青色申告 オンライン」については仕訳データのインポート機能が提供されておらず(実際には提供されているが非常に使い辛い)作成しませんでした。

ですので今回作成したMT4向けのスクリプトを使う対象者は下記全てを満たす人になります。

【MT4の確定申告用スクリプト使用対象者】

  • FXをMT4でトレードしている人
  • 確定申告予定の人
  • クラウド会計サービスの「MFクラウド確定申告」か「freee」を使っている人
  • 確定申告で仕訳データとしてFXの取引履歴を取り込みたい人


上記に当てはまる人は、今回のスクリプトを使うことでMT4上で1度実行するだけで全ての取引履歴をクラウド会計サービスでインポートするのに最適化された状態でCSV出力してくれます。

対象スクリプトの使い方等については、今後の記事で書いていきますのでお待ち下さい。

MT4スクリプトをプレゼント!

で、今回作成したMT4の確定申告用スクリプトを自分一人で使っても良いのですが、せっかくなので多くの方に使って欲しいなと思いまして、プレゼントさせて頂くことにしました(^-^)/

ただ、当ブログのプレゼントとしてしまうと色々とうまくない事もあるかと思いまして、サブで使っているドメイン側のページでプレゼントを行います!
プレゼントページは下記。

MT4確定申告向けスクリプトプレゼント | マネー報道 FX

MT4確定申告向けScpitsプレゼント | マネー報道 FXMT4確定申告向けScpitsプレゼント | マネー報道 FX 

プレゼント詳細や申し込み方法については上記のMT4確定申告向けSciptsプレゼントページにて確認して欲しいのですが、条件はありますが無料でプレゼントさせて頂きます(^-^)/

興味のある方や、MT4で確定申告で困っていた人は是非お申し込み下さい!
プレゼントの申し込みお待ちしています。

いちばんわかりやすい確定申告の書き方平成29年3月15日締切分―――マイナンバー対応2017年版

いちばんわかりやすい確定申告の書き方平成29年3月15日締切分―――マイナンバー対応2017年版

フリーランスを代表して 申告と節税について教わってきました。

フリーランスを代表して 申告と節税について教わってきました。

スクリプトの使い方

各スクリプトの使い方を個別の記事にまとめましたので、リンクを貼っておきますね。
参考にして下さい。


連載目次:確定申告の話題

2017年の目標を元旦に掲げる!フリーエンジニアの挑戦!

あけましておめでとうございます

新年、あけましておめでとうございます!
2017年1月1日、元旦を迎えました。

正月元旦は幸い好天に恵まれ、落ち着いた天候となっています。
北海道は昨年末の12月は大荒れとなる大雪に見舞われ大変だったので、正月は好天に恵まれそうという事でホッと一安心しています。

さて、新年を迎えての元旦と言えば、やはり今年1年の抱負というか目標を掲げるのに最適かな、と。
やはり新年のスタートですからね。
一年の計は元旦にあり、という事で今年の目標をば掲げていきたいと思います(^-^)

今週のお題「2017年にやりたいこと」

f:id:MoneyReport:20170101152314j:plain

2017年の目標

本年の目標をば掲げます。
ババン!

【2017年の目標】

  1. フリーエンジニアとして長期間開発に従事する!
  2. FXの勉強をし直し、通年で増やしていける様にトレードの腕を磨く!
  3. 既存Webサイトの見直しを行い収益増へ!


との事で個別に見ていきましょう。

1.フリーエンジニアとして長期間開発に従事する!

昨年、初挑戦したフリーランスのITエンジニアとして仕事をするフリーエンジニアとしての開発を一ヶ月だけ経験しました。
普段は自分自身の企画・設計をしたWebサイトやWebサービスを作っていますが、それとは別に「誰かのシステムを作る」というのも経験としては面白いなというのがありました。
他のエンジニアの方達との交流であったり、他の人のソースコードを見て学ぶことも多く、良い刺激をもらえたのがありました。
また、作業単価が高く「流石、技術職!」という感じで、浮き沈みの大きなフリーランスの収益と比べ、事前にお互い納得した金額が月毎にきちんともらえるというのは、やはり魅力的。

ただまぁ「人のシステムを作るのはつまらない」という部分は正直あるにはあるのですが、それよりも今年はまとまった出費が控えているので、きっちり稼ぐ必要がありフリーエンジニアとして長期間働いてきっちり稼ごうかと。
以前仕事をもらった会社さんのところで、春からの大きめの案件が動くそうで、そこで働く予定です。
今年はフリーエンジニアとして頑張りますか!

2.FXの勉強をし直し、通年で増やしていける様にトレードの腕を磨く!

フリーランスになってからは、かなりサボっていたFX(外国為替証拠金取引)のトレードですが、今年は本格的に取り組みます!
FXの自動売買についてもう少し進めてみるのが一つと、もう一つがやはり裁量トレード(手動トレード)できちんと利益を出せる様に今一度勉強しようかな、と。

FXで普通に勝てる様になり収益を増やしていけるようになれば、フリーランスの収入の浮沈にそれほど神経質にならないで済むようになりますし、より安定しあ生活が送れるようになるかな、と。
まぁ負けが込めば生活を根幹から揺るがしかねませんが(^-^;

なので今年はきちんと勉強する期間を設けてFXを今一度勉強し直します!

3.既存Webサイトの見直しを行い収益増へ!

これまでは割と新規Webサイトを作ることを主眼において取り組んできました。
昨年も2Webサイトを作り公開しました。
ただ、既存のWebサイトを作りっぱなしになってしまっていたり、より良いデザインへと変えることでユーザービリティの向上等ができるのですが、それも手つかずになってしまっていたり・・・。
運用が雑になっている部分があります。

ですので、今年は新規Webサイトの作成よりも既存Webサイトの見直しを行ってよりブラッシュアップしたサービスを提供する事が出来ればと思っています。


と駆け足でしたが補足させて頂きました。

まとめ

というわけで2017年の目標を書かせて頂きました。
今年はリソースの多くをフリーエンジニアとして開発に従事する事を選ぶのがやはり比重が非常に大きいです。
これまでの取り組みとは大きく変わります。

その分、自分自身の開発に割ける時間が減ってしまうので、今年は「すでに持っている物を大事に育てる」ことにチャレンジしようかな、と。
既存のWebサイトであったり、FXのトレードスキルであったり、自分自身がすでに持っている資産やスキルをより活用していく方向で進めて行こうかと。

大きな一歩は難しいですが、時間のない中で少しずつ歩を進められる一手を今年は多く打っていきたいと思います。

それでは皆様、2017年の本年もどうぞよろしくお願い致します<(_ _)>

2016年度上半期総括 & 仕事時間の見直し

フリーランスの仕事時間

2016年10月で、フリーランスとして独立してから1年半が経過しました。
上半期はスケジュールの管理方法を春から見直しまして、割と予定通りの作業を行う事が出来ました。

下半期のスケジュール組みも、昨日ガントチャートで書きまして、まずは予定を立てました。

対お客さんの仕事はちょっと流動的なので、多少の時期はずれるかもしれませんが、それ以外は自分の仕事ばかりなのでドンドン片付けていって進めていきたいと思っています。

f:id:MoneyReport:20161013145548j:plain

上半期総括

2016年度の上半期はブログのアクセス減少があり、ブログからの収益は減少傾向にあります。
その収益減少を補填するために、フリーエンジニア(フリーランスのITエンジニア)として一ヶ月間は企業でお仕事をしてきました(^o^;

ただ現在は収益構造の変換を行っている最中で、新規のWebサイトをリリースしまして、そちらでの収益化に取り組んでいる所です。
また、今後3ヶ月の間にもう1本Webサービスをリリースする予定なので、この2本のサイトで収益を上げて行くことが出来ればと思っています。

こちらが軌道に乗れば、下半期はフリーエンジニアとしてのお仕事は引き受けなくても良いかな、と(^o^;
フリーエンジニアとしての働き方は、プログラマーとしては楽しいものですが、自分の設計じゃない物を組んでいく作業になるので、そこだけちょっとツマラナイと感じています。

何とか自分のアイデアを形にしたWebサイト群で食べていけるように、下半期も開発&改善を頑張っていきたいと思います(^-^)/

仕事時間の見直し

またフリーランスの特徴として

 好きな時間に仕事が出来る

という特権があります。
ただ、これは全てのフリーランスに該当する話ではなくて、客先常駐をしなくて良かったり、対お客さんと顔を合わせる頻度が少ない仕事を選んでいる人の話ですけれどもね(^-^;

私は幸い在宅作業間借りオフィス作業がメインなので、仕事時間の自由度は高い方かな、と思っています。

で、仕事時間の見直しをばしようというか、既にしているのでその辺の話も書いてみようかな、と。

多少、仕事時間の自由が効く私の作業時間は、昨年の独立直後は下記のとおり。

【私の1週間の仕事のタイムスケジュール】
月:6:00~8:00、8:30~12:00
火:6:00~8:00、8:30~12:00、13:00~18:00
水:6:00~8:00、8:30~12:00、13:00~18:00
木:6:00~8:00
金:6:00~8:00、8:30~13:00
土:6:00~8:00、10:30~13:30
日:6:00~8:00


仕事時間の確保。それが問題だ。 - マネー報道 MoneyReport

朝早く起きて、家族の寝ている間に仕事をしていたのが分かります。
また、午後にまで仕事の出来る日数が極端に少ないです。

今にしてみれば

「なんて無理のあるタイムスケジュールを組んでいたんだ(-_-;」

という思いが強いですね(^o^;

実際に上記のタイムスケジュールで仕事をしていた頃は

「細切れの時間で集中して仕事をするのが難しい(>_<)」

と感じる事が多かったです。
開発のお仕事なので、どうしても雑事から離れてプログラム脳に頭を切り替えてプログラミングする必要があるので、その切り替えにはどうしてもちょっと時間が掛かる事が多いです。
なのでせっかくプログラム脳に切り替わっても、作業時間の終了がきてやめてしまうのでは、なかなかプログラミングが進まないという弊害を生みました。

プログラミング脳に切り替わったら、一気にプログラムを書き上げる!

という事をしないと、断続する仕事時間の中では厳しかったです。
その反省を活かして最近では下記のようにタイムスケジュールを見直しています。

【2016年10月の1週間のタイムスケジュール】
月:22:30~24:00
火:10:00~18:00、22:30~24:00
水:10:00~18:00、22:30~24:00
木:22:30~24:00
金:10:00~17:00、22:30~24:00
土:10:00~17:00、22:30~24:00
日:10:00~17:00、22:30~24:00

という形で、日中仕事をする時には連続して仕事時間を取るようにしてプログラミングし、後は夜寝る前に日々1時間半ほど仕事をしてから寝るスタイルに変更しました。

曜日別の仕事時間数を算出してみると・・・

【2016年10月の曜日別仕事時間数】
月:1.5時間
火:9.5時間
水:9.5時間
木:1.5時間
金:8.5時間
土:8.5時間
日:8.5時間
-------
合計:47.5時間

となりまして、昨年春が週に42時間労働でしたから、比較すると5.5時間ほど増えた事になります。
ただ実際には細切れ時間をなくして、連続する仕事時間を確保したお陰で開発速度は向上しています(^^)/
あとは、PHPでの開発にも慣れてきたからというのもあるかとは思いますが。

しばらくは、このタイムスケジュールに沿って仕事を進めて行き、良い下半期に出来るよう頑張ります(^-^)/

まとめ

  • フリーランスとして独立して1年半経過!
  • 2016年度上半期はブログ収益減↓、フリーエンジニア収益増↑
  • 2016年度下半期は新規のWebサイト2個の追加運用で収益増加を目指す!
  • 仕事のタイムスケジュールを見直して、開発に合うスタイルに変更中!

2016年度下半期のスケジュールを組む!一人親方フリーランスの作業計画。

スケジュール管理の方法変遷

2016年度の上半期が9月末までで終わり、10月から下半期が始まりました!
私の作業の方も丁度9月末までで大きな作業が一段落しまして、最後の調整やら家庭の雑事やらをやっていて、気が付けば下半期がスタートして12日も経っていますね(^o^;

ちょっと遅れましたが、2016年度の下半期の自分自身の仕事の計画をしていこうと思います。

ちなみに上半期の春先以降の流れを決定した内容は下記記事に記しました。

幸い春から夏の終わりまでは、このスケジュールに沿って思った通りの作業を行う事が出来ました(^-^)v

春からのガントチャートの引き方が私の作業管理としては適していたので、同じくフリーランスとして作業している方達の参考になればと、作業管理について書いてみたいと思います。

Pile-up Gantt Chart

上半期の失敗

春先以降は良いガントチャートが引けたと思っているのですが、今年の最初に引いたガントチャートはどうだったのでしょうか?
まずは振り返ってみたいと思います。

今年の1月頃に引いていたガントチャート。
f:id:MoneyReport:20160118173111p:plain

あ、ガントチャートは「Brabio!」というWebサービスを利用して作成しています。

個別のWebサイト作成の開発に特化して「調査、デザイン、データ登録、開発、リリース」と作業を並べて書いていました。
実際の開発フェーズに合わせてガントチャートを書く、一般的な書き方です。

ただ、この方法は私のスケジュール管理としては不適合でした(-_-;

どうしてか?

細かい!

まずは「細かすぎた」点にあります。
複数の開発メンバーで開発を行う場合には、自分の作業だけではなく、他の開発者の方達の作業進捗も非常に大事になってきます。
共通部品が出来あがらなければ、個別の画面やページを実装した所で完成しませんし、他画面から遷移してくる場合にも受け取るパラメーターやデータの受け渡しの部分の調整をきちんと行わないと、個別の単体テストは出来ても繋げての結合テストでバグが頻発します(-_-;
このため、上述のような細かい作業単位のスケジュールの把握と調整が必要で、重要になってきます。

ところが1人で設計・開発・テスト・運用をやっている私の場合には、この個別の各フェーズのスケジュールを引く意味はあまりありません。
設計が早く終われば、その後すぐに開発に入ればよいですし、テストが遅れてもリリースは私の権限なので後ろ倒しになっても何ら問題ありません(^-^;

要はせっかく引いた細かいスケジュールの遅延や前倒しに大して意味が発生しないのです。

前後作業や他者の作業への影響度がない分、細かいガントチャートは作業終了単位でイチイチ管理タスクの「終了」とか「遅延発生」などの実績を書いていきますが、この作業管理のために発生する作業すらも邪魔というか管理しても意味がないというか・・・。
自ら無駄な作業を増やすだけという、状態になっていました。

開発案件単位の弊害

また「次の開発案件との兼ね合いが分からない」という問題もありました。
開発案件単位にガントチャートを作って管理していたので、一つの開発案件が終わって次の開発案件に移る時に、2つのガントチャートに作業進捗を書き込む必要がありました。
1つ目の案件が遅れれば、2つめの案件の開始も遅れます。
それをわざわざ別々のガントチャートを開いて、「こっちを遅らせて」、次に「あっちもずらして」と無為な作業が発生します(-_-;

顧客がいたり、他の開発者との兼ね合いがあれば、案件の切り替わりタイミングは非常に重要ですが、一人親方で自分で次の案件を漫然とスタートするだけというフリーランスの身だと、案件切り替わりも

「これが遅れて、次も遅れて。次の案件を短縮して進めよう!」

と思えば良いだけという(^o^;

いずれにしても開発案件単位のガントチャート管理は私にはまったく合っていませんでした(;_;)

下半期のガントチャート

その反省を活かしたのが春先からの

1つのガントチャートに全ての開発案件を載せて管理する

という方法を採用しました!

しかも、案件単位には個別の作業を書くのをやめて「●●開発案件」と書くだけにして設計・開発・テスト・運用の全てを含むことにしました(^o^;

この方法に沿って書いたのが下記のガントチャートです。

2016年度下半期のガントチャート
f:id:MoneyReport:20161012173212j:plain

あ、案件部分が塗りつぶしてあって、すみません(^-^;

1本の線を1つの案件としてしまい「どの案件がいつからいつまでの作業なのか?」「この案件はいつ頃やる予定なのか?」が一目で分かる様にしました!

これは、他者との作業兼ね合いがない私にとっては、自分の作業を管理する上では非常に管理しやすい手法となりました。
1つの案件の遅れが全体に影響しますし、まぁ早く終われば次の案件やスポット案件を入りこめたりしても良いですし、柔軟なスケジュール管理が可能となりました!

パッと見で「この時期にこの案件をやるから、事前調査をそろそろ開始しないとなー」と準備も出来て良い感じです♪

春先に確立したこの手法を下半期も採用して、効率的なスケジュール管理をしながら色んな案件の開発を進めていきたいと思います(^-^)/

Webサイトのメンテナンスと放置の弊害

Webサイト

今日はお仕事の話をば。
現在、私はWebサイトやWebサービスを自分で設計&開発し、複数サイトを運用しています。
基本は開発後は放置気味に運用してはいるのですが、それでも時々メンテナンスをしてあげなければいけません。

今日は、そのコストとどの程度の労力を掛けるのが適正なのかといった話を徒然なるままに書いてみたいと思います。

Webサイトの運用

Webサイトの運用では大きく分けて長期フェーズと短期フェーズのものに分かれます。

私が運用するサイトは大抵膨大なデータ量を誇るものが多いので、原則はDB(データベース)でデータ管理をしています。
このDBのデータはDBのデータは内容が古いままだと陳腐化する場合も多々あるので、適宜更新する必要があります。
データのメンテナンスに関しては短期フェーズに分類されます。
長いもので3ヶ月、短いものでは1ヶ月程度でデータメンテナンスが必要になり、日々の運用業務として組み込んでいます。

また運用サイトは自前サーバーとかではなく、レンタルサーバーを利用しているので、レンタルサーバーの動作環境に沿ったプログラムを作る必要があります。
原則は開発時点の最新のサーバー環境に揃えています。
PHPバージョンなどもその時点で選べる最新のものを選んで、それに沿ってプログラムコードを書きます。

ただ半年に一度や1年に一度程度の頻度で、レンタルサーバーの環境が変更される場合があります。
大規模なサーバー入れ替えや、PHPバージョンの新バージョン対応などなど。
その最新環境に合わせてプログラムを書き換えたり、そのバージョンに合わせてソースコードを調整したりといった事が発生します。
こちらが長期フェーズに分類されます。

こうして一度作ったからといって完全に放置することが出来る訳ではなく、ある程度の期間が過ぎたら色々とメンテナスしていかなければいけません。
これを放置すると酷い目にあいます。

運用放置の弊害

これは過去に書いていたブログで発生したことですが、昔はWordPressよりもMovable Type(ムーバブルタイプ)と呼ばれるCMSを使ってブログを書くことが一般的でした。
私も安いレンタルサーバーを借りてMovable Typeをインストールしブログを複数運用していました。

しかしメンテナンスなんかほとんどせずにブログだけを書き放置していました。

そしてある日、ブログが更新できなくなってしまいました(>_<)
利用していたレンタルサーバーのPHPバージョンが徐々に徐々に上がって行っていたのですが、それに付いて行くことなく古いPHPバージョンのままで利用していたいのです。
しかもDBもMySQLとかではなく、テキストファイルベースの簡易DBを使っていました。

気が付いた時には時すでに遅く、PHPバージョンが不一致でそもそもCMSのプログラムでエラーが発生して動作しなくなり、またMovable Type自体の最新バージョンではテキストファイルベースのDBが選択できなくなっていて、DBの更新もできなくなりました(-_-;

そうしてメンテナンスを行わなかった影響でそのブログは更新できなくなり、現在も当時コンパイルされて出力されたHTMLのまま残っていて、どうにも更新できない状態で放置してあります(^o^;

この様に、一度作ったWeb上のサービスは適宜メンテナスをしていかないと、更新すらも出来ないしプログラムも動かなくなる恐れがあります。
きちんとWebサイトのメンテナンスは行っていきましょう(^-^;

まとめ

  • Webサイトを開発する時は、その時点のレンタルサーバーの最新スペックに合わせて開発するほうがWebサイトの寿命を長く出来る!
  • Webサイトのメンテナンスには長期フェーズと短期フェーズのものがあり、両方に対応していく必要がある!
  • Webサイトメンテナンスを放棄すれば、ある時点で動作しなくなったり更新できなくなったりする!

Webサイトのアイデア出し!数で勝負から!

自作Webサイト

自分で設計して、自分で開発して、自分で運用して。
そんな全部自分で作ってメンテナンスしてという事を生業(なりわい)として食べているフリーランスです。

じゃあ「どんなWebサイトを作るのか?」という事を考える時のアイデア出しの話をば。

website

開発ペース

ここまで私が作ってきたWebサイトやWebサービスの数としては、全部で6本ほど。
内、1本はメンテナンス対象外となっているので、実際に稼働しているのは5本になりますか。
あ、このブログで紹介しているWebサービスは数えていませんよ。
あんな勢いだけで作ったモノは数えていません(^-^;

これまでの1年半で6本ほど作ってきたので、ざっくりと開発に掛かる期間を算出してみると・・・

 1年半(18ヶ月) ÷ 6本 = 3ヶ月/本

と、なりまして、3ヶ月に1本のペースで新しいWebサイトやWebサービスをリリースしている計算になります。

これは最近の肌感覚とも一致していまして、新しいWebサイトの構想を考えている時に

「設計1ヶ月、開発1ヶ月、データ入れや調整で1ヶ月」

くらいは掛かるな~、という思いがありますから、昨年独立してすぐの頃の

「Webサイトなんて1ヶ月に1本作ってやるぞ~♪」

みたいな若気の至りみたいな勢いだけの計算は今後は慎みたいと思います(-_-;

開発のアイデア出し

何せWebサイト開発は独立前に作った1本程度で、ほとんど初心者(^-^;
プログラムの経験は少々ありましたが、本格的な開発作業はした事がなかったので素人同然です。

素人がなにがしかのアイデアを出そうと思ったら、まずは数で勝負するしかないです。
1日に20分程度ずつ、思いつく限りのWebサイトアイデアを出していきます
最初の30個くらいはすぐに思いつきますが、そこから先がなかなかすぐには出てきません。
でも考えてはメモして、ひねり出してはメモしてと、何とか数を出していくことに最初集中します。
ある程度、数を出して行くと多少深く考える様になります。
単なる思い付きで書けるものは前半に出尽くしていますから、後半出てくるものは多少ひねったものというか、もう少し考えた物を出せる様になっていきます。

そうして数日かけて100個以上のWebサイトアイデアを出しました

100個出してから、今度は分類をします。
カテゴリ別に分けていって、重複しているアイデアはブラッシュアップして一方だけ残します。

そして削っていきます。
こんな100個も作っている場合じゃないですし、どこで勝負していくのかを見極めていく必要があるので、無駄なアイデア倒れのWebサイトを省いていきます。

削る理由は色々ありますが、多少書いてみましょう。

【アイデア出し後に削るWebサイトの理由】

  • 開発の難易度が高すぎる!
  • 需要がない!
  • 利益が出ない!
  • メジャーサイトが寡占化している!
  • etc.

こうして100個アイデアとして出した中から、削って削っていくと良さげな10個ほどが残ります。
まぁこれがダイヤの原石ですか。
輝くかもしれませんし、単なる石ころで終わるかもしれません。

こうして残った良さげなWebサイトアイデアを元に、調査し肉付けしていき、改めて競合のチェックや、技術的な課題を拾ったりとしていきました。

後は実際に作って世に出してみて問う!という感じですか(^-^;
試行錯誤はどうしても必要ですし、成功もあれば失敗もありますが、四の五の言わずに、まずはどんどん作っていってリリースしていく事が大事かな、と思っています。

さぁ、開発、開発!

PHPでRSS配信!自作WebサイトでRSS1.0、RSS2.0、Atomを出力しました!

自前で作ったWebサイトの更新情報

Web開発言語「PHP」でWebサイトやWebサービスを作ることが出来ます。
自作すれば何の制約もなく色んなWebサイトを作ることが可能です(^-^)v

ただ自作したWebサイトの問題点として

RSS配信ができない

点が挙げられます。

色んなデータを日々更新していくようなニュースサイト的なWebサイトの場合、更新情報をRSS配信できるかどうかは非常に大きな問題です。
読者の方はパソコンやスマートフォンのブラウザで見る人も多いですが、中にはRSSリーダーで読んでいる方も多いからです。
RSSリーダーで読んでもらうためには、当然RSSを配信していなければ読むことは出来ません。
というかRSSリーダーに登録するのも難しいのではないかと思います(^-^;

で、最近作って公開したWebサイトが割と日々更新していくタイプのものだったので

「RSS配信も出来た方が利用者さんも増えて良いのでは!」

と思い至った次第です(^-^)v
データはDBで管理しているので好きに取り出せますから、RSS配信方法さえ分かれば作れるかな、と。

PHPでのRSS作成方法

Google先生に聞いて調べてみると、PHPで調べると大抵上位表示される「Syncer」のサイトにたどり着きます。
やりますなぁSyncerさん(^-^)v

今回参考にさせていただくページは下記。

GitHubで公開されている「PHP Universal Feed Generator」というライブラリを利用して簡単にRSS配信を実現することが出来るそうです(^-^)v

GitHubのライブラリへのリンクは下記。

また、実際にこのライブラリを組み込んでRSS配信するソースコードはSyncerさんのサイトに掲載されていますので、参考にして下さい。

私は実際に組み込んで作ってみましょう!

PHPでRSS実装

では、いざ作り込み開始!

・・・(実装中 以下独り言)・・・

「DBから公開ページのデータを取得して」

「あ、全件はいらないのか!新しいデータのみの通知機能か!」

「最新30件程度配信すれば良いのかな?」

「RSS1.0完了」

「後は一緒か」

「RSS2.0、Atom完了!」

・・・(実装終了 以上独り言)・・・

というワケで実装完了です!


表示してみたRSS 2.0の画像です!
f:id:MoneyReport:20160920152836p:plain

ってほとんど見えてませんが無事に表示できました(^-^;

RSS2.0、RSS1.0、AtomFeed三兄弟を全て出力する事が出来ました!

やっぱり便利なライブラリは使わせてもらうと、実装時間が短縮できて有り難いですね~(^-^)v

jQueryを今さら勉強してみる(^-^;テキスト挿入とかも簡単なんだ!

jQuery

最近はCRONについて勉強し、そこそこ便利に使えるのが分かり色々と自動実行させています(^-^)v

CRONはあくまでもサーバー側のPHPでの処理なので、ほとんどWebサイト利用者の方の目には触れません(^-^;

使う人の目に触れる部分で何かしらの動きを出そうと思ったら、フロントエンドの勉強も必要なのかな、と。
こまでは

「動けばいいや」

でWebサイトのサーバー側処理でゴリゴリやって表示する事が多かったのですが、多少なりとも見た目に動きを付けたり便利なUI(ユーザーインターフェース)を提供しようと思うと、クライアントサイド側でも何かしらやらねばいけないかな、と。

で、たまたま参考にしつつ勉強してたサイトがJavaScriptを結構使っていました。
JavaScriptも単なるJSではなくて、jQueryというものを使っていました。

jQuery(ジェイクエリー)は名前は聞いたことがありましたが、自分で実装した事はないですし、勉強した事もないので、今回少々勉強してみようかと(^-^)v

jQueryとは

こういう時はWikipediaに教えてもらいましょう。

jQuery(ジェイクエリー)は、ウェブブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計された軽量なJavaScriptライブラリである。 ジョン・レシグが、2006年1月に開催された BarCamp NYC でリリースした。


jQuery - Wikipedia

ふむふむ。
jQueryとは「JavaScriptコードをより容易に記述できるようにするために設計された軽量なJavaScriptライブラリ」の事なんですね!
確かにリッチなUIを提供出来ても重くて読込に時間が掛かる様なJSライブラリだと使いにくいというか、利用者が離れていってしまいそうですから、軽量なのは良い事ですね(^-^)v

また、Webサイトの開発においてはプログラマーとデザイナーが一緒に開発にあたる事が多いですが、一々処理全てをプログラマーに依頼していると、デザイナーの「あぁしたい!こうしたい!」というUIに関係する処理までプログラマーが担当すると大変なので、デザイナーの人でも簡単にUI処理が書けるjQueryは非常に人気が出た、と聞きました。

私はデザイナーではないですが、自分一人でWebサイト開発やらWebサービス開発やらをやっているので、デザイナーが担当する仕事も自分で出来ないといけないので、今回はjQueryも覚えてみようかと(^o^;

テキストの挿入

で、jQueryでは色んな事が出来ます。

【jQueryで出来ること!】

  • HTML/CSS操作
  • イベントの利用
  • フォーム機能利用
  • Ajaxの使用
  • アニメーション効果


ですが、いきなりAjaxやアニメーション効果を使うのはハードルが高いので、手軽に「HTML/CSS操作」からやってみようかと。
しかも「テキストの挿入」がまずは使いたいです!
これが使えればゴニョゴニョしたい事があったので、すぐにも使える用途があるので(^-^)v

jQueryの使い方の基本としては下記の様になるそうです。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
    jQueryの処理を書く
</script>

先にjqueryライブラリの読み出し記述をして、その後ろにscriptでJavaScriptを宣言してjQueryの処理を記載すると。
この感じで進めてみましょう。

HTML要素の前に挿入

まずはHTML要素があったとして、その前にテキストを挿入します。
ソースコードは下記の感じ。

<html>
	<head>
		<title>HTML要素の前に挿入Sample</title>
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
		<script type="text/javascript">
$(function(){
	$("p#first").before("<h1>前に挿入</h1>");
});
		</script>
	</head>
	<body>
		<p id="first">テキストテキスト</p>
	</body>
</html>

実際にブラウザで動作させると下図の様な結果になります。
f:id:MoneyReport:20160912155327j:plain

pタグのid「first」の前に「前に挿入」というテキストが挿入できました(^^)v

HTML要素の後ろに挿入

続いてHTML要素の後ろにテキストを挿入します。
ソースコードは下記。

<html>
	<head>
		<title>HTML要素の後ろに挿入Sample</title>
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
		<script type="text/javascript">
$(function(){
	$("p#first").after("<h1>後ろに挿入</h1>");
});
		</script>
	</head>
	<body>
		<p id="first">テキストテキスト</p>
	</body>
</html>

実際にブラウザで動作させると下図の様な結果に。
f:id:MoneyReport:20160912155608j:plain

pタグのid「first」の前に「後ろに挿入」というテキストが挿入できました(^^)v


何がしかのHTML要素に名前を付けて、そのHTML要素を指定してテキストの前や後ろへの挿入が出来ました!

まとめ

  • 2006年に発表されたjQueryは10年経過した2016年でも現役で動く!
  • jQueryはWebデザイナーが使えるJavaScript軽量ライブラリ!
  • jQueryを使うとUIに動作のあるページ表現が可能!
  • テキストをHTML要素の前後に挿入!

CRON使って自動でメール送信!PHPのmb_send_mail関数で簡単♪

CRON

本日もWebサイト開発のお仕事のお話です。

昨夜CRONを初めて使ってみまして、レンタルサーバー上からPHPの実行ファイルを定期実行させる事に成功しました(^-^)v

CRON試してみる!
まずは簡単なPHPファイルのサンプルを作って、CRON上から呼び出してみたいと思います。
いきなりDB更新は怖いので、ファイルを出力するのをやってみようかと。


「sitemap.xml」というファイルを出力するものです。
早速レンタルサーバー上にアップして動作させてみたいと思います!
PHPファイル名は「test_cron01.php」という名前にします。


さぁ、2分経過しました!
FTPでディレクトリを確認すると・・・
「sitemap.xml」ファイルが出力されていました!
無事に動きました!


CRONでPHPファイルを定期実行したい!レンタルサーバー上で動作検証! - マネー報道 MoneyReport

という感じでechoやprintで何かを出力してもCRONだとブラウザ上に何か表示される訳じゃないので、テキストファイルを出力してみました。
案外簡単に動いてくれたので良かったです(^-^)v

複数のphpファイル

昨日調べた中では、参考にしたサイトの中で「複数のphpファイルが、相対パスでincludeやrequire_onceとかされている場合、エラーで動かない。」という記載があったので紹介していたのですが、
最近はそんな事はないというブコメを頂きました(^-^;

id:photoblgさん
外部から読み込んでも落ちたことはないですね。それ以外の問題じゃないですか?

CRONで外部のphpファイルをincludeしたりrequire_onceしたりしても特段問題ないんですね~(^-^)v

私の使っているレンタルサーバーは、Webサイト公開用ディレクトリとCRON動作用ディレクトリが全く別の階層に置く様に指定されていたので、Webサイト公開側のphpファイルをincludeしたりするのはやめて、1PHPファイルで完結する様に処理を記載して実行する様にして作りました。
なので、上記の件に関しては自分自身で試していなかったので、非常に参考になりました(^-^)/

最近のCRONで動かすPHPファイルでは相対パス表記でincludeやrequire_onceをしても問題ないそうです。

メール送信

CRONを使った定期実行でもう1つ行いたかったのは「メール送信」になります。

Webサイトのデータ更新後に通知をメールで送りたかったので、それをCRONで定時実行してメール送信したいのです。

しかし以前、PHPでメール送信周りを実装した時には「PEAR」をインストールしたりと結構面倒なことをしたので気が重い状態で作業を始めました(-_-;

以前PEARを使った時の話(サブブログに掲載)が下記。

「うーん、どうかな~」

と思いながらPHPの参考書である「PHP逆引きレシピ 第2版」を開いて探していたら・・・

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)

611ページの「7.8 メール処理」という章があるじゃないですか!!!

・・・(読み込み中)・・・

ふむふむ。
「メールを送るにはmb_send_mail()関数を使用します。」
とのこと!

「あれ?PEAR使わなくて良いの!?」

との事で、関数1つで簡単にメール送信ができるようです!

なんだ~、それなら簡単に実装出来るじゃないですか!

mb_send_mail関数

本のソースコードを参考に組んだソースが下記。

<?php
	mb_language("Japanese");
	mb_internal_encoding("UTF-8");

	$to      = 'to@hoge.ne.jp';
	$subject = 'テストメール';
	$message = 'これはテストです。';
	$headers = 'From: hoge@hoge.com'."\r\n";

	if (mb_send_mail($to, $subject, $message, $headers))
	{
	    echo "メールが送信されました。";
	}
	else
	{
	    echo "メールの送信に失敗しました。";
	}
?>

で、試しにWebサイトに仮置きして実行してみると・・・

f:id:MoneyReport:20160911162012j:plain

無事にメールが届きました(^-^)/

ただ、このメール送信怖いですね。
Fromのメールアドレスって適当に指定しても、メールサーバーとか通さずに送れちゃったんですよ(-_-;

こんな簡単にメール送信できるなら、そりゃあスパムメールもなくならない訳ですね。
簡単にメアド偽装ができちゃいますもんね、これって。
まぁ色々とレンタルサーバーとかでも対策は練られているんでしょうけど、大量のメール送信が実行されたらスパムメールとして送信できなくする、など。

いずれにしても、これでCRONでPHP実行ファイルから簡単にメール送信できる事がわたっかので収穫でした(^-^)v

CRONでPHPファイルを定期実行したい!レンタルサーバー上で動作検証!

CRON

本日は開発のお仕事の話題です。

レンタルサーバーを使っていると「CRON」(クロン)という機能があることに気が付きます。
なんでも処理を定期実行してくれる便利な機能なんだとか。
さくれのレンタルサーバーなんかだと、一番安いプランではCRONは使えなくて、スタンダードプラン以上とかじゃないと使えない機能となっていたりしました。

これまでは縁が無かったので使わずにここまで来ました(^-^;

ただ、現在開発中のWebサイトでは「データの定期更新を行いたい」ので、このCRONを使って自動でDB更新をさせたいな、と。

前に調べた時にはCRONではPHPファイルもコマンド実行できるとかって見た様な気がしましたが、どうなんでしょうか(^-^;?
改めて調べついでに簡単なPHPサンプルも動作させてみたいと思います(^-^)/

CRON調査

まずはCRONで簡単にPHPファイルが実行出来るのか?

・・・(調査中)・・・

見付かりました!

cronを使用してphpファイルを指定した時間に自動実行する方法を記載します。また、その時のcronの設定方法をメモします。
システムを作成しているとログの削除やバックアップ、データの更新などを決められた時間に実行したい場合があります。
cronを使用すると自分でphpファイルを実行しなくても指定した時間で自動実行してくれるので便利だと思います。


Linux:cron(クーロン)でphpを自動実行する | raining

ふむふむ。
CRONを使用するとPHPファイルを指定した時間で自動実行してくれるようですね(^-^)v

CRON設定時の書き方にはルールがあるようですね。

  • 書式
分 時 日 月 曜日 コマンド
  • 設定する値
0~59の値で指定。*を指定した場合、毎分となる。
0~23の値で指定。*を指定した場合、毎時となる。
1~31の値で指定。*を指定した場合、毎日となる。
1~12の値で指定。*を指定した場合、毎月となる。
曜日 0~7の値で指定。*を指定した場合、毎日となる。
コマンド 実行するコマンドやシェルスクリプトを指定する。

実際にコマンドを書くと下記の様になるようです。

10 5 * * * /var/www/html/cron/cron.php

分に「10」、時に「5」、日・月・曜日は「*」でコマンドが「cron.php」というPHPファイルを指定しています。
これをCRON設定すると、毎日5:10にcron.phpを実行してくれることになります。
コマンドはサーバー上の絶対パスで指定しないと動かないそうです。
相対パス指定はダメとのこと。

また、別のPHPファイルをincludeとかで呼び出しているとエラーで落ちる事が多いそうです。

phpスクリプトが一つのファイルで構成されている場合ならば、これでも動く。複数のphpファイルが、相対パスでincludeやrequire__onceとかされている場合、エラーで動かない。
実行時のカレントディレクトリが変わってしまうため、ファイルを参照出来ないから。


解決案

  • includeやrequireするときに絶対パスを書く
  • (php限定)ini_setでinclude_pathを設定する
  • シェルスクリプトを書いて、そいつを実行する


cronの走らせかた - Qiita

ふむふむ。
CRONはPHPを絶対パスで呼び出して動作させますが、PHPファイル上からincludeする時って相対パスで指定するので、CRON上からは見えない(追えない)位置にファイルがあるから、ダメとの事。
はまったら、解決案も試してみたいと思います(^o^;

CRON試してみる!

まずは簡単なPHPファイルのサンプルを作って、CRON上から呼び出してみたいと思います。
いきなりDB更新は怖いので、ファイルを出力するのをやってみようかと。

ソースは下記。

<?php
    $fileName = "sitemap";
    $fileExt = ".xml";
    $item = "CRON_TEST_01";

    $f = fopen($fileName.$fileExt, "wb");
    fwrite($f, $item);
    fclose($f);
?>

「sitemap.xml」というファイルを出力するものです。
早速レンタルサーバー上にアップして動作させてみたいと思います!
PHPファイル名は「test_cron01.php」という名前にします。

初CRON指定です。
私の使っているレンタルサーバー上では各設定値を個別に入力して指定で来たので、分だけを2分後に指定して実行予定を組みました!

・・・(2分待機中)・・・

さぁ、2分経過しました!
FTPでディレクトリを確認すると・・・
f:id:MoneyReport:20160910231855j:plain
「sitemap.xml」ファイルが出力されていました!
無事に動きました!

「sitemap.xml」ファイルをメモ帳で開いてみたところ。
f:id:MoneyReport:20160910231950j:plain
「CRON_TEST_01」の文字が出力されています!
(拡張子はXMLですが、単純なテキストを出力したので、こんな内容に(^-^;)

おーし!
こりゃ簡単だ!
普通にコマンドライン上で動作するPHPを組んでレンタルサーバーにアップして、後は絶対パスでPHPファイルを指定して定期実行したい日時を指定してあげるだけで簡単にPHPの自動実行が出来ます!

実際にDB更新するPHPも組んで動作テストしましたが、無事に動きました(^-^)v
こりゃ楽ちん♪

開発向けにiPhone7を購入すべきか?

間もなく

さぁいよいよ後2時間ほどで「Apple Special Event September 2016」の開催ですね~♪
日本時間の2016/09/08の午前2時に世界同時ネット生中継をしつつ、iPhone7の発表会がとり行われます。
日本語での同時通訳もあるみたいですから、そちらもあわせて視聴すると何を言っているのか分かって楽しいかと思います。

詳しくは昨日の記事に。

私は明日は出掛ける用事があるので、夜中に起きている訳にもいかないのでイベント視聴はしません(^-^;
ただ、iPhone7自体は気になりますね~。

f:id:MoneyReport:20160906140232j:plain

Webサイト開発

本日、ようやく現在作っているWebサイトのプロトタイプを公開しました。
まだ作りこみの甘い部分もありますが、まぁ動く部分としては問題ないので先行して公開した所です。

後は設計的に後回しにした部分を作るのと、運用周りの裏方処理を作らないといけないので、その辺だけはもう少し時間が掛かるかな、と。
普段使うユーザーさんはほとんど意識しない部分のみ、後から作る感じにしています。

で、もちろん今時のWebサイトですからスマホファーストでスマホユーザー向けの操作性や視認性を意識しながら作りこんでいます。
Googleクロムの「デベロッパーツール」を使って、各種サイズのスマホで動作検証も行うのですが、やはり実際のスマホのハードでの確認も欠かせません。

私が現在使っているのはもう3年前の機種となるiPhone5sです。
購入した当時は

「なんて革新的なスマホなんだ!」

とビックリしましたが、その後iPhone6やiPhone6sも出ているので4インチスマホとなるiPhone5sでの動作検証は

「果たして現在の日本人ユーザーの何割程度をカバーしているのかな?」

と気になる事があります。
友人・知人のスマホを見ても皆さん、もっと大きなiPhone6やiPhone6s Plusとかを使っているのを見掛ける事が多いので、多数のユーザーは5インチ以上の大きなスマホでWebサイトを見ているのかなぁ、と。

Androidスマホは5インチスマホを持っているので、これでもある程度動作検証は出来るのですが、日本人ユーザーが圧倒的に使っているiPhoneの大きなサイズの機種でも動作検証はした方が良いのじゃないかな、と。
今晩のiPhone7発表を前に思ったりするわけです(^o^;

iPhone7

ただ最新機種となるiPhone7は結構高価でしょうからね~。
昨年発売のiPhone6s Plusとかは一番安いモデルでも10万円を超える価格となっていましたから、今回のiPhone7も10万円を超えてくるのかな、と。
10万円も出して動作検証環境を確保すべきかと言うと、ウウム(-_-;

2年前のモデルになるiPhone6 Plusの中古品とかでも買えば良いですかね?

下記のdocomoモデルなら 64,480円でAmazonから購入可能なようです。

Apple docomo iPhone6 Plus A1524 (MGAA2J/A) 16GB ゴールド

Apple docomo iPhone6 Plus A1524 (MGAA2J/A) 16GB ゴールド

2年前のモデルでもスマホの画面サイズはiPhone7Plusのサイズと一緒でしょうから、充分確認環境としては問題ないのかな?
あ、でも解像度が違うんだったかな、今回のiPhone7は?
詳しいスペックまでは今回調べていないので分かりません。
どうなんでしょうかね~(^-^;

というわけで、とりとめもないことを書いてみました。
iPhone7Plusが欲しいような、見送りになりそうな、そんな夜更けでした(^-^;

FX先生のトレードシグナルをEAにしたら良いかな?

FXの半自動売買

FXの自動売買ツールであるMT4を使うようになって3ヶ月ほど経過しました。
これまで使っていたFX業者が提供してくれていたFXツールを使うのをやめて、MT4に乗り換えるのはなかなか大変だった部分もありますが、スマホ版MT4の起動が早くてサクッと使えるのは非常に気に入っています(^-^)v
FX業者のFXトレードツールって、起動が重たい事が多いので、シグナル通知が来てすぐに起動してチャートがチェックしたいのに待たされたりすると非常にイライラしていたので、それがなくなったのは快適です♪

で、MT4を使うからには自動売買プログラムのEA(エキスパートアドバイザー)を使わにゃ損々というやつで、有料EAに自作EA(正確には他作EA(^-^;)を使っています。
そして、自分のトレードシナリオに沿ったEAが行った自動売買をシグナルとしてスマホで受け取って、その後自分で手動トレード(裁量トレード)を行うというのを行いました。

そしたらば、結構良い利幅が取れて

「これはいいける!」

と(^-^)v

自分の得意とするトレードシナリオを自動売買プログラムで作ると自分で行うべき、「分析&チャートチェック」をEAが肩代わりして行ってくれるので、トレードに掛けるべき労力をかなり削減する事が出来ます。

EAを併用してトレードシグナル通知が来た時だけ、自分でチャートをチェックして「実際にトレードする or しない」を自分で判断する。
こうする事で、トレード実施部分にだけ注力でき、かなり省略化でき良いと思います。

特に、専業トレーダーではなくて、サラリーマンやフリーランスの方などで「仕事が忙しいけどFXトレードもしたい!」という人に非常に合う手法じゃないかと思います。

得意なトレードシナリオ

これを使うためには、自分自身の得意なトレードシナリオで行う必要があります。
人のトレードシナリオなんて、慣れていないし、読みが甘いしでロクな事がないので、自分自身がこれまでトレードを行ってきた中で

「このトレード手法では勝てた!」

と自身のあるトレード手法(トレードシナリオ)で行うのが良いのかと思います。

で、昨日は私自身が得意とする「三角持ち合いブレイク」の手法を検討してみました。

三角持ち合いの分析を行うロジック部分をもう少しイメージしてから作りこむ必要がありますが、これも

「ペナントが来てるよ!」

と教えてくれるだけでも相当助かります♪

書籍「FX先生」

また、私が「売りが得意」になったきっかけをくれた書籍が下記の「FX先生」です。

FX先生

FX先生

FX先生

こちらの書籍、中古では1円で買えたりしますが、FXの為替相場の「買い」と「売り」のタイミングを逆張りじゃなくて、順張りで教えてくれる良書です。

詳しい解説については、以前書いた下記記事にまとめていますので、FX先生のロジックが気になる方は読んでみて下さい。

で、書籍の著者の方のトレードロジックなので「ブログで大公開!」とかそういう、「著作権的にどうなの?」みたいな事はやりません。
気になる方は書籍をご購入下さい(^-^;

で、ロジックは伏せますがさわりだけ書いておくと

普通の移動平均線を使うのではなくて、EMA(Exponential Moving Average)こと「指数平滑移動平均線」を使う事を

推奨しています。
ちょっと調べていませんが、MT4のEAロジックでEMAは普通に使えると思いますので、EMAを指標にそこをブレイクした時に買いや売りを仕掛けるようなEAを作ることが出来れば、良いなと思います。

ただEMAは鉄板なのですが、「初期反応が遅い」デメリットがありますので、その辺を多少EAロジック実装時に吸収しながら作りこめれば楽しそうかな、と(^-^)v

さぁ、今の仕事が一段落したらMQL4の勉強がてら自分自身のトレードシナリオを作りこんでいって、自分のトレードを盤石なものにしていく事が出来たら、と考えています。

MT4のEAで自分のトレードシナリオを作れば最強では?三角持ち合いが作りたい!

MT4で半自動トレード

先週は久々にFXのトレードを行いました(^-^)v
春先に手痛いミスをしていたので謹慎していたのですが、MT4のEAをシグナルとして裁量トレード(手動トレード)をすると良さそうな事が分かり、また自分のトレードシナリオである「トレンドブレイク手法」を実装したEAが手に入ったので、それを元にトレードを行いました。

結果としては万々歳の130pips(ピプス)の収益を上げる事ができました!
詳しくは前回の記事に。

で、今後も「トレンドブレイク手法」を元にしたトレードもやっていこうと思ってはいるのですが、それ以外にも自分自身のトレードシナリオに沿った動きをするEAを作る事が出来るなら、そのEAに分析&トレードシグナル出しを任せて、自分はシグナル通知が来た時だけトレードをすれば非常に勝率を上げる事が出来ます!

「これは良いぞ!」

と♪

私のトレードシナリオ

とはいえ、私はそれほどトレード手法に詳しい人間ではないので、手持ちの勝てるトレードシナリオはあと幾つかあるだけです(^-^;
その中の1つで非常に勝率が高い手法がありまして、それが

三角持ち合いブレイク手法

になります!
手法っていうのか分かりませんが『三角持ち合い(ペナント)が発生した後に、ブレイクした方についていく』のをよくやっていて、大抵利益を上げる事が出来ています(^-^)v
まぁ鉄板な手法かと。

過去の私のトレード履歴から三角持ち合いを見てみましょう。

三角持ち合いの下離れで売り!

これは典型的な上下からすぼまっていくタイプの三角持ち合いでトレードした時の記録です。


今回は米ドル/円の日足で三角持ち合い(ペナント)が発生しました。
f:id:MoneyReport:20151018003119j:plain

上下に振れ幅が小さくなって行って、ほとんど上下動しなくなりました。
こうして三角持ち合いが発生した後は、上下のいずれかにブレイクアウトして大きく動き出します。

チャートにあるとおりで、米ドル/円の日足で三角持ち合い(ペナント)が発生し徐々に徐々に値幅が狭まっていっているのが分かると思います。
市場参加者的には「ジリジリしながら大きく動くのを待って、トレードを手控えている状況」になっています。
そして何らかのニュースに乗って一気に上や下にブレイクして動き出します。
それまで手控えていたトレーダー達が一気にトレードを活性化させるため、その動いた方向に伸びやすいです。

まぁたまに、まったくニュースとか関係なしにブレイクしたりもしますけどね(^-^;
まぁブレイク理由は後付けみたいなものなので。

三角持ち合いの上放れで買い!

そして次は三角持ち合いのうち、上辺や下辺が平らでそれに向かって上下どちらかからだけすぼまっていくパターンがこちらです。


そうです、前回の記事と同じですが三角持ち合いが発生しています!
f:id:MoneyReport:20151022070841j:plain

今回は上辺がほぼ水平で、下側が徐々に上に収束していくタイプの三角持ち合いです。
この様に上辺が水平の場合には、実はどちらにブレイクするのかほぼ決まっています。
どちらだと思いますか?


って、まぁチャートに出てしまっていますからアレですが


上辺が水平な三角持ち合いは大抵
上方向にブレイク
します!

この時は上辺が平らだったので、上ブレイク。
下辺が平らなら、下ブレイク。

と、相場は決まっています。
もう狙いやすさや、さきほどの上下両方からすぼまるよりも簡単です(^-^)v

まぁ、この時は上ブレイク後にすぐに失速して失敗になってはしまったのですが(;_;)

どのくらいの値幅をブレイクして伸びるかは、その時々によるので一概には言えませんが、いずれにしてもどちらか一方向に動くのが確定しているのは非常に狙いやすいです。

EAで三角持ち合い

なので、この三角持ち合いをEAで実装して作ることが出来れば良いのかな、と。
そして自動で三角持ち合いを見つけて教えてくれるプログラムが作れれば、後はシグナルが来た時にブレイクした方についていくだけで簡単に利益を上げる事が出来ます(^-^)v

後は、三角持ち合いを実装するアイデアを考え付けばよいだけ。
チャートの足情報を20本くらい遡ってみていけば、案外簡単に実装できそうな気はしますが、いかんせんEA開発言語「MQL4」に関しては初心者なもので(^o^;

もうちょっと勉強してから作ってみたいと思います(^o^)/