2017年6月26日月曜日

最近筋トレにはまってます

今年始めにとあるYouTuberの動画を見てから筋トレになんとなく興味を持ち始めた。
まずは自重トレーニングからスタートし、今ではダンベルやトレーニングベンチを買って
日々筋トレに励んでいる。

筋トレを始めてよかったと感じることは以下の3つ。

  • 体の変化を実感できる
  • 食べるものに気を遣うようになる
  • ストレス解消になる
     

体の変化

まずは当然のことかもしれないが、体の変化を感じることができる点だ。
鍛えている部位の筋肉の肥大。見た目だけでなく、明らかに硬く強くなっている。
それまでめちゃくちゃ重く感じていたダンベルをしっかりとコントロールして扱えるようになる。
このように確かな成長を感じることができたりする。
また、前述した筋肉の成長だけでなく、代謝が上がることによる変化も感じることができる。
僕は筋トレを始める前はけっこうな末端冷え性だったのだが、
筋トレを始めたら、いつの間にか治っていた。

食べるものに気を遣うようになる

筋トレを始めてから、食べるものががらっと変わった。
基本は高タンパク低脂質。
コンビニとかスーパーに行っても、自然と高タンパク低脂質のものしか
選ばないようになってきた。
そして、スナックや菓子パンなどを食べることがかなり少なくなった。
毎日のプロテインも欠かさず飲んでいる。
こういった食事を摂ることが筋肉の成長にいいのは言うまでもないが、
肌ツヤも良くなってきた。
最近はMyFitnessPalというアプリを使って、食べたものを記録している。
カロリーはもちろんのこと、マクロ栄養素(炭水化物、タンパク質、脂質)なども
表示されるのですごく便利。
バーコードを読み取る機能もついているので、記録するのも楽です。
おすすめです。

ストレス解消になる

筋トレをするとストレス解消できる。
なんか嫌なことがあってイライラしているときでも、筋トレをすると
気分がスカッとします。本当です。
筋トレをするとテストステロンという男性ホルモンが分泌される。
このテストステロンにはストレスを軽減する効果があるため、
筋トレはストレス解消には持ってこいなのです。

まとめ

こういった感じでまだ筋トレを始めてから日は浅いものの
すでにいい効果を実感している。
これからも筋トレを継続して、そこから得られた変化や気付きなんかを
書いていこうと思います。

2016年11月21日月曜日

PandasでSeriesオブジェクトとDataFrameオブジェクトを作る

Pandasのデータ構造


Pandasでは、データの入出力、抽出、並べ替えなどの処理をすることができる。
Pandasでは、主に以下の2つのデータ構造が定義されている。
- Series:ラベル付きの1次元配列
- DataFrame:ラベル付きの2次元配列。スプレッドシートやデータベースのテーブルや辞書のようなもの。

pandas.Series()


まず、Seriesオブジェクトを作ってみる

import pandas as  pd

s = pd.Series([10 , 4, 7, 34, 6])
s

#結果
#0    10
#1     4
#2     7
#3    34
#4     6
#dtype: int64

date_range()を使って日付をインデックスにすることもできる。

import pandas as  pd

s = pd.Series([10 , 4, 7, 34, 6], index=date_range('1/1/2016', periods=5))
s

#結果
#2016-01-01    10
#2016-01-02     4
#2016-01-03     7
#2016-01-04    34
#2016-01-05     6
#Freq: D, dtype: int64

pandas.DataFrame()


次に、DataFrameオブジェクトを作ってみる。
適当に果物屋さんの売上のようなものでやってみましょうか。

import pandas as  pd

fruit_sales = {'Fruits': ['Apple', 'Orange', 'Grape', 'Peach', 'Lemon'],
                'Price': [100, 120, 150, 130, 90],
                'Sold': [14, 40, 23, 25, 12]}

df = pd.DataFrame(fruit_sales)
df

#結果
#   Fruits  Price  Sold
#0   Apple    100    14
#1  Orange    120    40
#2   Grape    150    23
#3   Peach    130    25
#4   Lemon     90    12

もちろん、インデックスを指定することもできる。
set_index()を使って、Fruitsをインデックスにしてみましょう。

import pandas as  pd

fruit_sales = {'Fruits': ['Apple', 'Orange', 'Grape', 'Peach', 'Lemon'],
                'Price': [100, 120, 150, 130, 90],
                'Sold': [14, 40, 23, 25, 12]}

df = pd.DataFrame(fruit_sales)
df.set_index('Fruits', inplace=True)
df

#結果
#        Price  Sold
#Fruits             
#Apple     100    14
#Orange    120    40
#Grape     150    23
#Peach     130    25
#Lemon      90    12

指定したカラムだけを抽出することもできる。

df = pd.DataFrame(fruit_sales)
df['Price']
#df.Price ←このようにドットでつなげても同じ結果が得られる

#結果
#0    100
#1    120
#2    150
#3    130
#4     90
#Name: Price, dtype: int64

複数のカラムを抽出することもできる。

df = pd.DataFrame(fruit_sales)
df[['Price', 'Sold']]

#結果
#   Price  Sold
#0    100    14
#1    120    40
#2    150    23
#3    130    25
#4     90    12

1次元配列(Series)であれば、tolist()を使って、指定したカラムの値をリストにすることが可能。

df = pd.DataFrame(fruit_sales)
df.Price.tolist()

#結果
#[100, 120, 150, 130, 90]

しかし、以下のように2次元配列(DataFrame)にはtolist()を使うことはできない。
DataFrameオブジェクトにはtolistという属性はないと怒られます。

df = pd.DataFrame(fruit_sales)
print(df[['Price', 'Sold']].tolist())

AttributeError: 'DataFrame' object has no attribute 'tolist'

こういった多次元のデータセットを扱うにはNumpyを使うのがいい。Numpyをインポートして、np.array()でN次元配列を扱うことができる。

import numpy as np

df = pd.DataFrame(fruit_sales)
print(np.array(df[['Price', 'Sold']]))

#結果
#[[100  14]
 #[120  40]
 #[150  23]
 #[130  25]
 #[ 90  12]]

2016年10月28日金曜日

pythonでリストの各要素の四則演算をする

以下のリスト内にある全ての要素を掛け算する(足し算でも引き算でもいい)方法をメモります。
言語はpython3です。

nums = [1, 2, 3, 4, 5]

使うモジュール


実行結果


では、実際にnumsの積を求めてみる。
operatorモジュールからmul関数をインポートする。
functoolsモジュールからreduce関数をインポートする。
reduce関数は関数とイテラブルを引数にとって、イテラブルの要素に対して、左から右に累積的に関数を適用する。

from operator import mul
from functools import reduce

nums = [1,2,3,4,5]
print(reduce(mul, nums)) #結果=>120

関数を作ってみる


次に、任意の数だけ引数を与えて、その積を返してくれる関数を作ってみます。

from operator import mul
from functools import reduce

def mul_nums(*args):
nums = []
for i in args:
    nums.append(i)
return reduce(mul, nums)

mul_num(1,2,3,4,5)  #結果=>120

もちろん足し算、引き算、割り算もできる。

足し算

from operator import add
from functools import reduce

def add_nums(*args):
nums = []
for i in args:
    nums.append(i)
return reduce(add, nums)

add_num(1,2,3,4,5)  #結果=>15

引き算

from operator import sub
from functools import reduce

def sub_nums(*args):
nums = []
for i in args:
    nums.append(i)
return reduce(sub, nums)

sub_num(1,2,3,4,5)  #結果=>-13

割り算

from operator import truediv
from functools import reduce

def div_nums(*args):
nums = []
for i in args:
    nums.append(i)
return reduce(truediv, nums)

div_num(1,2,3,4,5)  #結果=>0.008333333333333333

無名関数

ちなみにlambdaを使うと一行でいける。

from operator import add, mul, sub,truediv, floordiv
from functools import reduce

reduce(lambda x, y: x*y, [1, 2, 3, 4, 5])   #結果=>120

2016年9月6日火曜日

作りました!前回記事のパターンを使ったコート

前回書いたオーバーコートの我流パターンメイキングで作成したパターンで実際に作りました。
まだボタンはつけてないんですけどね。


サイズ詳細は以下です。

サイズ
着丈 113cm
肩幅 64cm
身幅 70cm
袖丈 54cm

正面から見るとこんな感じ。
フリーサイズでゆったりしています。
袖の内側や縫い目などの見せたくない部分は身頃のゆとりで隠すのが鉄則でしたね。(鉄則とまでは言ってない)
オーバーコート正面


前身頃は2パーツに分けて、切替上にシームポケット作って、右前立てのみアテをつけました。
シームポケットの作り方は以前書いたこの記事と同じです。

シームポケット

前立てアテ


サイドスタイルはこんな感じ。
ポイントは袖です。最近この袖にハマってます。
オーバーコートサイドスタイル


バックスタイルはこんな感じ。
後ろも袖の縫い目などの見せたくない部分は身頃のゆとりで隠すのが鉄則でしたね。(鉄則とまでは言ってない)

まあ右は縫い目見えちゃってますけどね。
これはボディへの着せ付け方の問題です。

裾はベンツ明きの仕様にしました。
オーバーコートバックスタイル

後中心と肩とアームホールと袖の縫い代はパイピング始末。
パイピングにするとやっぱり見栄えがよくなりますね。
あとは素材が固めなので肌にあたった時に痛くないようにするという理由もあります。

パイピングの図

2016年8月31日水曜日

オーバーコートの我流パターンメイキング


オーバーコートのトワル


正面から見るとこんな感じ。
袖をきれいに見せることを意識して作ってます。
具体的には見える部分には変なシワなどが入らないようにすること、袖の内側や縫い目などの見せたくない部分は身頃のゆとりで隠してしまうことを意識してます。
enter image description here

サイドスタイルはこんな感じです。
袖の前振りが大事。
enter image description here

バックスタイルも前同様、身頃のゆとりで見せたくない部分を隠す感じ。

enter image description here


パターン解説


パターンの要点をさらっと解説します。
ただし、独学の我流理論なので絶対正しいというものではないです。

では、解説スタート。
肩幅64cmのオーバードロップ。

ドロップショルダーなんですが、肩線は前のみ下げて後は肩先で若干あげています。そして、後肩線には肩甲骨のゆとりを5mm程度残し、イセで処理するようにしています。
このようにしたのは主に以下の理由があります。

  • 肩線を前方向に落とし、袖の前振りをつけやすくするため
  • 肩線を肩の形状に合わせるため
  • 後肩先を上げることで後アームホールが体から離れ、袖を前方向にひねらせるため

前見頃のパターンはこんな感じ。
前身頃のパターン



後身頃
後身頃のパターン



次は袖です。
肩幅が広いので袖山は低めで作ります。
もちろん素材に応じて変える必要はありますが、袖山には1mmずつ伸ばしを入れています。
シルエットを作る上でこの伸ばしは必要ではないのですが、同寸にすると縫いにくいので、この伸ばし分量にしています。

袖のパターン



ドロップだからといって伸ばし過ぎると肩先の面がすぼめられて、あまりきれいにならないので、あまり伸ばし分量は多くしない方がいいというのが僕の考えです。


まとめ


以上のような感じで見えるところには変なシワを入れない、見せたくない部分は隠す、体の形状に合わせる(肩とか腕とかね)。というようなことに気をつけてパターン作成してます。
とはいえ、パターンに絶対のルールはないと思いますし、僕の考えもこじつけといえばこじつけです。
あまり考えすぎてもストレス溜まるだけなので、ある程度適当にいってしまっいましょう。
ぶっちゃけ1mmとか2mmのことで大した違いは出てこないし、裁断とか縫製とかでもずれていきますからね。
ということで、ご参考になる部分があれば、ご参考にしていただければ幸いです!

2016年8月30日火曜日

JINS PCのラバーモダンを交換してきた


ラバーモダンは無料で交換してもらえる


以前購入したJINS PCのラバーモダンが劣化してベタベタになってきました。
ラバーモダンとはなにかというと、メガネの耳に引っ掛ける部分のパーツのことです。眼鏡によって樹脂だったり、ラバーだったりしますよね。

まあ安いし、また買えばいいかと思っていたんですが、実はこれ無料で交換してもらえます。
ということで交換してもらいました。


交換するにはどうすればいいの?


店舗に直接持って行く必要があります。
なので、まずはJINSのHPで最寄りの店舗をチェックして行ってみましょう。
   
自分の持っているメガネに合うモダンの在庫があるかどうかがわからないので、最悪2回行かなければいけないことになります。

交換は自分でやってもいいですが、店員さんにやってもらうのが無難でしょう。タダなので。

以上で終わりです。


JINSの店員さんの接客がよかった!


モダンの交換とは直接は関係ないですが、対応していただいた店員さんの接客がとてもよかったです。
丁寧なんだけどお堅いわけじゃなく、フレンドリーなんだけど馴れ馴れしいわけでもなく、なんというか絶妙で話してて楽しかった。
また、この人に接客してもらいたいなと店員さんに対して思ったのは久しぶりです。
さすがJINS!

商品もオシャレで機能的なものが多いし、商品の見せ方も上手ですよね。

また、ラバーが劣化したら行ってみよ(いつの話だよ)。

2016年8月29日月曜日

BeautifulSoupではまったこと

はまったこと


http://hoge.com/” というサイトから、以下のHTMLのhrefとimg srcの絶対パスを抽出したかった。

<article>
    <figure><a href="/hogehoge?id=abcde"><img src="http://hoge.com/1/hoge.jpg"></figure>
</article>

しかし、a hrefは相対パスで記載されているので、普通にスクレイピングすると相対パスしか抽出できない。
img srcの方はうまく抽出できず、以下のようになってしまった。

[<img src="http://hoge.com/1/hoge.jpg">]    

使ったもの


  • Python3
  • Beautifulsoup4.5.1

BeautifulSoupをインストール


BeautifulSoup4はpipでインストール

pip install beautifulsoup4    

実行サンプル


urllib.requestモジュール、urllib.parseモジュールのurljoinメソッド、BeautifulSoupをインポートする。

import urllib.request
from urllib.parse import urljoin
from bs4 import BeautifulSoup

hrefの絶対パスを取得するときにurljoinを使うので、該当HPのurlを変数に入れておく。

url = "http://hoge.com/"

urllib.requestモジュールのurlopenメソッドでurlを開く。
BeautifulSoupを使ってスクレイピングするときに使いたいので、インスタンスを作成。

html = urllib.request.urlopen(url)

BeautifulSoupのインスタンスを作成。

soup = BeautifulSoup(html, "lxml")

HTMLからarticleタグを取得

for item in soup.find_all("article"): 

hrefの絶対パスはurlとhrefの相対パスをurljoinでつなげて作成する

    link = urljoin(url, item.a.get("href"))

img srcの絶対パスは以下のようにすれば取得できる。
絶対パスはimg_path。

    img = item.find("img")
    img_path = img["src"]