前回は、乃井野陣屋の三日月藩藩主である森氏について書きました。
が、長くなったので藩祖忠政のところまででしたね。
今回はそのややこしい続きを。
津山藩藩祖の忠政は、あの鬼武蔵で有名な長可の末弟です。
この人も兄に負けず劣らず、兄が信州から撤退する際に敵対した北信濃の一族をわざわざ探し出して処刑するなど、なかなかクセのある人でした。
その為か、施政もかなり苛烈で、川中島藩では一揆が起きていますが、これに対しても圧力をもって対応しています。
慶長8年(1603)には、津山へ加増転封となっていますが、苛烈さを聞いた土豪らが反発し、入国にも策を講じるほどでしたが、これは忠政が一枚上手だったようで、一揆の裏をかいてさっさと入国してしまいました。
こうなると一揆も弱いもので、新領主にお伺いを立てる人間も出て分裂状態となり、一揆は瓦解しています。
この辺りは、なんだか集団心理をよく知ってるような感じですね。
ただ、前回も言ったように、津山藩の家中では刃傷沙汰が多く、ちょっとまとまりに欠ける印象です。
津山城築城の前に院庄に築城を試みていますが、その現場で名古屋山三郎と井戸宇右衛門が口論の末に斬り合いとなり、山三郎は宇右衛門に、宇右衛門は他の藩士に斬殺されています。
これが1件目。
名古屋山三郎と言えば、「なごやさんざ」の名で知られる歌舞伎の祖とされる人物で、妻は同じく歌舞伎の祖といわれる阿国とされています。
とても美男子だったといわれ、芸達者でもあったので、忠政のお気に入りだったようですね。
一方の宇右衛門は、叩き上げの猛者で、長可が東美濃を席巻した際に加治田城の降兵のまとめ役として仕えていますが、元々は大和の出身です。
筒井順慶の家臣として出てくる井戸良弘と同族と思われますが、系図は分かりません。
山三郎自身は、どうも上昇志向の強い人間だったようで、妹が忠政の側室であったことから外戚として権力強化を志向し、忠政もそれに同調したようです。
川中島藩の頃からこの両者には諍いがあったようですが、最終的には忠政が宇右衛門一党の討滅を図り、宇右衛門と同時に別の場所で弟も討たれました。
結果的には上位討ち、という形式ですね。
ただ、暗殺を立案したと思われる山三郎が武のある宇右衛門にさくっと斬られているのが情けないですが。
しかし、まぁなんともきな臭い・・・
この事件後、院庄への築城は縁起が悪いと断念され、津山へ築城することになるのですが、忠政の父可成の正室の弟で、宇右衛門の義兄でもあった重臣林為忠は事件に怒りを発し、後処理をしていた川中島から美作へ向かう途中で出奔してしまっています。
林家は、各務家と共に可成時代から森家を支えた家臣で、土岐家や斎藤家での同僚筋でした。
蜂須賀家における稲田家、細川家における松井家、堀家における奥田家が近いかな。
姻戚でもあり、藩内の鎮め役でもあったわけです。
森家にとってこのような古参筋の武将を失ったのは痛手でした。
代わりに筆頭家老になったのは、同じく元同僚筋の重鎮である各務氏でしたが、可成と長可の時代に森家を支えた元正はすでに亡く、その嫡男元峯が就任しています。
しかし、事もあろうに、鎮めとなるべき元峯が、5年後に家老の小沢彦八を殺害し、止めに入った細野左兵衛も元峯の家臣が殺害するという事件を起こしてしまいました。
これが2件目。
筆頭家老というのに、あまりにもいただけない。
戦国の雰囲気がまだ色濃い時代ですから、家臣の刃傷沙汰は各藩でありましたが、家老などの上級家臣同士で、このような事件が何度も起こる藩というのは稀ですな。
よく取り潰しにならなかったもんです。
以後、忠政もどうにもならんと思ったのか、可成の弟で旗本になっていた可政を招聘し、家政の引き締めを図りました。
この可政は、可成の弟とは言え、父通安の晩年の子の為、甥の長可よりも年下で、しかも長可とは喧嘩別れして出奔していたという経歴があります。
ちなみに、この可政の娘婿で、関成政の長子である武兵衛も森家に仕えていたんですが、やはり忠政と対立して出奔しました。
森家中の出奔、どんだけ多いねん!
とツッコミたくもなりますが、激烈な気性の家系なんでしょうね。
この可政が迎えられた後、津山藩は一応の安定を見るようになりました。
しかし、まだまだ森家には苦難が。
忠政には3人の男子がいたものの、皆、父に先立って早世してしまうのです。
ここで登場するのが関氏。
先ほど、ちらっと出てきた関さんです。
元々は可成と織田家中で同僚だった家ですが、そもそもは土岐氏の家臣筋でもあり、その頃から両家に付き合いがあったのかもしれません。
ともあれ、どういう縁かは不明ですが、可成の娘が関成政の室となり、両家は縁続きとなります。
しかし、成政は長可と同じく小牧長久手の合戦で討死してしまい、室と遺児は母方の実家である森家を頼りました。
この縁で先ほどの武兵衛も森家に仕えていたわけですが、成政の末子、武兵衛の弟に成次という人物がおり、この人物も同様に長じてから森家に仕え、室に忠政の娘、つまりは従兄弟にあたる於郷を迎えています。
そして、この嫡子である長継が忠政の養子となり、津山藩森家を継承するわけですな。
長継は、忠政にとっては外孫にあたります。
子も早世し、内孫もいない。
なかなか綱渡りな継承と言えますかね。
あ~長かった。
ようやく三日月藩誕生の分裂のところまで来たわ(^^;)
というわけで、つづく。
参考:
津山城
地図付きはこちら
2015年10月30日金曜日
2015年10月24日土曜日
乃井野陣屋
先日、神戸新聞に兵庫県の史跡として乃井野陣屋が載っていました。
乃井野陣屋と聞いてもピンと来ませんが、藩としては三日月藩という風流な名前の藩の陣屋ですね。
この陣屋、三日月という名前に惹かれて予備知識も無く寄ってみた事があるんですが、陣屋としては恐ろしく風格があります。
岡山の成羽陣屋の重厚な石垣も陣屋としては破格でしたが、この乃井野陣屋には、堀があり、橋が架かり、櫓門があります。
どう見ても近世城の風格。
上月城などにちょっと寄った時に、寄り道しても損はありません(^^)
陣屋というのは平地に造られる事が多く、維新後は中心部の平地ということで行政施設の用地や学校施設なんかに使われ、遺構がほとんど残っていないという所がほとんどです。
なので、乃井野陣屋のように丁寧に整備されているのは珍しい。
ちなみに、城と陣屋の違いというのは不鮮明で、いかにも城という構えでも藩が小さければ陣屋ですし、居館城郭でも藩が大きければ城と呼ばれます。
江戸時代には、城というのは名誉呼称で、城持ち大名というのはステータスでした。
その上が国持ち大名、もしくは国主と呼ばれる大名で、これは戦国時代に名を成した戦国武将の家がほとんどです。
で、三日月藩はと言うと、当然ながら陣屋ですから無城大名でした。
三日月藩の藩主は森氏です。
その祖は、と言うと、鬼武蔵として名を馳せた森長可、そしてその父の可成の2代が中興ということになるでしょうか。
系譜としては、美濃森氏の一族で、美濃守護の土岐氏に仕えていました。
土岐氏の滅亡後、やがて可成は信長に仕え、尾張統一戦、桶狭間の合戦、上洛戦など、信長の合戦にほぼすべて参陣し、度々武功を挙げています。
信長は門地に囚われず、実力主義で家臣を登用しましたが、可成は織田家としては外様であり、その政策の最初期の家臣だったのでしょう。
その証拠に、上洛以降は近江宇佐山城を任されました。
当時は、近江から京へ入るルートは、坂本から峠越えで入るのが一般的で、その非常に大事な街道を押さえる城が宇佐山城であり、そこを任されていたわけですから、信頼振りが窺えます。
ちなみに、後に天下人となった秀吉は、東からの入京路は瀬田川宇治川ルートを使い、その京の入口である伏見に居城を築いていました。
また、大阪に出るにも木津川淀川ラインで行き来できますから、非常に便利ですね。
街道を押さえる城というのは多いですが、京周辺の城には、特にそういう政治的役割があるんですね。
で、宇佐山城を任された可成ですが、元亀元年(1570)の織田浅井手切れ後の姉川の合戦の直後、浅井朝倉連合軍の進出を寡兵でもって迎撃し、奮戦するも下坂本で討死しました。
信長は可成の死を非常に悼んだといいます。
可成には、森蘭丸、坊丸、力丸の幼い子がおり、信長が小姓に取り立てるわけですが、それも可成の死を哀れんだ為といわれますね。
森家は、嫡子可隆は越前攻めの際に討死していたので、次男長可が家督を継ぎました。
この武将が鬼武蔵と呼ばれた人物です。
当時の鬼という異名は、強いと同義で、戦に強ければ鬼○○と呼ばれました。
有名な所では、鬼の半蔵、鬼島津、鬼和子。
丹波は多くて、丹波鬼、丹波の赤鬼、青鬼。
挙げればキリがないですが、長可の何が鬼かって、その所業がリアルで鬼。
強いじゃなくて鬼なんですね。
合戦にも強いが、気性も恐ろしく激しかった。
そして敵対者には容赦ない・・・
ま、その辺りのネタは幾らでも出てくるので置くとして、長可は順調に織田家中の上級家臣となり、本能寺の変の直前には信濃川中島周辺の20万石の大名になりました。
信長横死後は美濃へ帰って東美濃を席巻し、後継者レースでは岳父である池田恒興と共に秀吉に味方しましたが、小牧長久手の合戦で岳父と共に討ち死にしてしまいます。
まだ27歳。
嫡子もおらず、長可も遺領は信頼できる人に任せると遺言状に書いていたんですが、秀吉の裁量で家督は末弟の忠政に引き継がれました。
普通は何としても家の存続を図るのが武士の宿命ですが、何とも変わった人だったんですねぇ
こんなひと悶着を挟みつつ、忠政が森家を存続させ、やがて江戸時代には川中島藩主、そして津山藩主となって森氏の藩祖となります。
ただ、この忠政も性格的に難があったのか、兄長可に似た部分があって、逸話には事欠きません。
また、津山藩でもやたら刃傷沙汰が多い。
可成は三国志の超雲のような正統派猛将の匂いがするんですが、長可や忠政は非常に扱い難い印象がありますね。
一部にネタになっている森氏のややこしいイメージも、この兄弟に由来する部分が多そうです。
森氏はちょっとネタが多いのか、乃井野陣屋に辿り着かないまま、長くなってしまいました。
というわけで、次回へつづく。
参考:
乃井野陣屋
地図付きはこちら
乃井野陣屋と聞いてもピンと来ませんが、藩としては三日月藩という風流な名前の藩の陣屋ですね。
この陣屋、三日月という名前に惹かれて予備知識も無く寄ってみた事があるんですが、陣屋としては恐ろしく風格があります。
岡山の成羽陣屋の重厚な石垣も陣屋としては破格でしたが、この乃井野陣屋には、堀があり、橋が架かり、櫓門があります。
どう見ても近世城の風格。
上月城などにちょっと寄った時に、寄り道しても損はありません(^^)
陣屋というのは平地に造られる事が多く、維新後は中心部の平地ということで行政施設の用地や学校施設なんかに使われ、遺構がほとんど残っていないという所がほとんどです。
なので、乃井野陣屋のように丁寧に整備されているのは珍しい。
ちなみに、城と陣屋の違いというのは不鮮明で、いかにも城という構えでも藩が小さければ陣屋ですし、居館城郭でも藩が大きければ城と呼ばれます。
江戸時代には、城というのは名誉呼称で、城持ち大名というのはステータスでした。
その上が国持ち大名、もしくは国主と呼ばれる大名で、これは戦国時代に名を成した戦国武将の家がほとんどです。
で、三日月藩はと言うと、当然ながら陣屋ですから無城大名でした。
三日月藩の藩主は森氏です。
その祖は、と言うと、鬼武蔵として名を馳せた森長可、そしてその父の可成の2代が中興ということになるでしょうか。
系譜としては、美濃森氏の一族で、美濃守護の土岐氏に仕えていました。
土岐氏の滅亡後、やがて可成は信長に仕え、尾張統一戦、桶狭間の合戦、上洛戦など、信長の合戦にほぼすべて参陣し、度々武功を挙げています。
信長は門地に囚われず、実力主義で家臣を登用しましたが、可成は織田家としては外様であり、その政策の最初期の家臣だったのでしょう。
その証拠に、上洛以降は近江宇佐山城を任されました。
当時は、近江から京へ入るルートは、坂本から峠越えで入るのが一般的で、その非常に大事な街道を押さえる城が宇佐山城であり、そこを任されていたわけですから、信頼振りが窺えます。
ちなみに、後に天下人となった秀吉は、東からの入京路は瀬田川宇治川ルートを使い、その京の入口である伏見に居城を築いていました。
また、大阪に出るにも木津川淀川ラインで行き来できますから、非常に便利ですね。
街道を押さえる城というのは多いですが、京周辺の城には、特にそういう政治的役割があるんですね。
で、宇佐山城を任された可成ですが、元亀元年(1570)の織田浅井手切れ後の姉川の合戦の直後、浅井朝倉連合軍の進出を寡兵でもって迎撃し、奮戦するも下坂本で討死しました。
信長は可成の死を非常に悼んだといいます。
可成には、森蘭丸、坊丸、力丸の幼い子がおり、信長が小姓に取り立てるわけですが、それも可成の死を哀れんだ為といわれますね。
森家は、嫡子可隆は越前攻めの際に討死していたので、次男長可が家督を継ぎました。
この武将が鬼武蔵と呼ばれた人物です。
当時の鬼という異名は、強いと同義で、戦に強ければ鬼○○と呼ばれました。
有名な所では、鬼の半蔵、鬼島津、鬼和子。
丹波は多くて、丹波鬼、丹波の赤鬼、青鬼。
挙げればキリがないですが、長可の何が鬼かって、その所業がリアルで鬼。
強いじゃなくて鬼なんですね。
合戦にも強いが、気性も恐ろしく激しかった。
そして敵対者には容赦ない・・・
ま、その辺りのネタは幾らでも出てくるので置くとして、長可は順調に織田家中の上級家臣となり、本能寺の変の直前には信濃川中島周辺の20万石の大名になりました。
信長横死後は美濃へ帰って東美濃を席巻し、後継者レースでは岳父である池田恒興と共に秀吉に味方しましたが、小牧長久手の合戦で岳父と共に討ち死にしてしまいます。
まだ27歳。
嫡子もおらず、長可も遺領は信頼できる人に任せると遺言状に書いていたんですが、秀吉の裁量で家督は末弟の忠政に引き継がれました。
普通は何としても家の存続を図るのが武士の宿命ですが、何とも変わった人だったんですねぇ
こんなひと悶着を挟みつつ、忠政が森家を存続させ、やがて江戸時代には川中島藩主、そして津山藩主となって森氏の藩祖となります。
ただ、この忠政も性格的に難があったのか、兄長可に似た部分があって、逸話には事欠きません。
また、津山藩でもやたら刃傷沙汰が多い。
可成は三国志の超雲のような正統派猛将の匂いがするんですが、長可や忠政は非常に扱い難い印象がありますね。
一部にネタになっている森氏のややこしいイメージも、この兄弟に由来する部分が多そうです。
森氏はちょっとネタが多いのか、乃井野陣屋に辿り着かないまま、長くなってしまいました。
というわけで、次回へつづく。
参考:
乃井野陣屋
地図付きはこちら
2015年10月20日火曜日
プロ野球の新監督
10月になると、夏をシーズンとするプロスポーツもオフシーズンに入って行きますが、今年もプロ野球は残すところ、日本シリーズのみとなりました。
今年の全日程終了ももうすぐですね。
ところで、来年から阪神タイガースの監督にアニキ金本の就任が決定しました。
アニキ金本は努力の人です。
甘やかされて伸び悩む阪神の若手に、ぜひ影響を及ぼしてほしいですね。
一方、ライバルとされる読売ジャイアンツも監督の交代があります。
まだ、確定ではないですが、長期政権だった原監督の辞任は確定で、後任を高橋由伸兼任コーチに絞ったというニュースが流れていました。
なぜ、このニュースを出したかと言うと、元野球部というのもありますが、
2人の誕生日が自分と同じ
だからです。
そう、誕生日が同じだからと言って、全くもって、完全に、有り得ないほど、天と地が引っくり返っても、自分が偉いわけではないんですが、個人的にはやっぱり勝手に親近感を抱いてて、何となく嬉しいものなんです。
誕生日同じで野球も同じなのにお前はヘッポコやったやん!
という指摘は無しの方向でお願いします(笑)
さてさて、秋と言えばスポーツ、秋と言えばツーリング。
この前の九州ツーリングは快晴で気持ち良かったですな。
春のツーリングも早くまとめないと!
そして、ぼちぼちスポーツして体を絞っていかないとね。
秋はご飯が美味すぎる・・・
今年の全日程終了ももうすぐですね。
ところで、来年から阪神タイガースの監督にアニキ金本の就任が決定しました。
アニキ金本は努力の人です。
甘やかされて伸び悩む阪神の若手に、ぜひ影響を及ぼしてほしいですね。
一方、ライバルとされる読売ジャイアンツも監督の交代があります。
まだ、確定ではないですが、長期政権だった原監督の辞任は確定で、後任を高橋由伸兼任コーチに絞ったというニュースが流れていました。
なぜ、このニュースを出したかと言うと、元野球部というのもありますが、
2人の誕生日が自分と同じ
だからです。
そう、誕生日が同じだからと言って、全くもって、完全に、有り得ないほど、天と地が引っくり返っても、自分が偉いわけではないんですが、個人的にはやっぱり勝手に親近感を抱いてて、何となく嬉しいものなんです。
誕生日同じで野球も同じなのにお前はヘッポコやったやん!
という指摘は無しの方向でお願いします(笑)
さてさて、秋と言えばスポーツ、秋と言えばツーリング。
この前の九州ツーリングは快晴で気持ち良かったですな。
春のツーリングも早くまとめないと!
そして、ぼちぼちスポーツして体を絞っていかないとね。
秋はご飯が美味すぎる・・・
2015年10月13日火曜日
多国籍企業の税金
先週月曜のニュースですが、ひとつ節目となるニュースがありました。
http://www.sankeibiz.jp/macro/news/151005/mca1510052131016-n1.htm
各新聞社が報じていますが、それほど深く取り上げたところは無かったようです。
結構大きな話だと思うんですけどね。
この多国籍企業の税金の話なんですが、リーマンショックの前から問題点は指摘されており、まとまるまでに結構時間が掛かったな、という印象でしょうか。
リーマンショック以前の話ですが、あるファンドを率いる投資家が、雇っている事務員より遥かに税率が低かったという話がありまして、この話と、この多国籍企業の税金逃れの話は、なんだか凄く不公平に思った記憶があります。
稼ぐのは全く構わんけど、相応の税金は払えよ、と。
新自由主義が掲げられていた時代の歪みですかね。
その頃から、この話はすでに国際会議の議題には挙がっていて、穴が塞がれるのはそう遠くない未来の話かな、なんて思ってましたけど、なかなか進みませんでした。
ただ、国境というハードルが低くなっていく時代にあって、有利な国で利益を最大化する、というのは、グローバルな営利集団としては生存本能みたいなもので、責めるのも酷な気はします。
ともあれ、一歩前進ですね。
グローバル企業にとって国民が富裕な先進国は重要な市場ですが、コストも高けりゃ税金も高い。
だから、商売だけは先進国でして、義務は他のところで、となるのも合理的ではあるんですが、先進国のインフラや生活水準を利用した商売をしている以上、それだとフリーライダーと本質的に変わりません。
少し前にスターバックスやグーグルの租税回避が話題になっていましたが、各国子会社間で仕入れや商標権料などをやり取りして、法人税の高い国では利益を少なく申告し、法人税の安い国で利益を計上するという手法や、ダブルアイリッシュダッチサンドウィッチという、アイスランドとオランダの2国間の租税協定を利用したものでした。
また、アマゾンも、日本にあるのはただの倉庫だと主張して、日本の税務当局と揉めてましたね。
この辺りも、数年前にスイスがアメリカに屈してスイス国内の銀行口座の情報を提供したように、タックスヘイブンなどと共に締め付けがきつくなっています。
アマゾンやその他ネット通販企業に対しても、今回の報告で、名目上倉庫でもビジネスの根幹である場合は課税できるようにするよう報告書に記載されました。
やっぱり、正々堂々と、商売した国で義務を果たして欲しいですね。
近江商人の、「売り手よし、買い手よし、世間よし」という三方よしの精神を持ってもらいたいものです。
この前、ふとポートアイランドに行った際にイケアを見まして、そういえばスウェーデン発祥のイケアの本社ってオランダなんよな、と思い出しましたが、イケアも立派なグローバル企業です。
オランダ人は歴史的に見ても重商主義で、商売に長けた優秀な人が多く、そういう人材の確保やヨーロッパ各地との交通の便がいい事が理由として紹介されていましたが、オランダに本社を移したのはそういう面だけではないんでしょうな。
オランダにはグローバル企業が集まっていますが、その目的のひとつが安い租税にあったりしますからね。
資本主義の行き着く先は、合理化を推し進めた巨大企業化で、インターネットの普及というのも、国境を越える煩雑さを少なくする要素であり、時代と言えば時代なんですが、巨大企業はその図体故に影響も大きいので、あまりにドギツイやり方は、倫理的に考えても控えて欲しいものです。
http://www.sankeibiz.jp/macro/news/151005/mca1510052131016-n1.htm
各新聞社が報じていますが、それほど深く取り上げたところは無かったようです。
結構大きな話だと思うんですけどね。
この多国籍企業の税金の話なんですが、リーマンショックの前から問題点は指摘されており、まとまるまでに結構時間が掛かったな、という印象でしょうか。
リーマンショック以前の話ですが、あるファンドを率いる投資家が、雇っている事務員より遥かに税率が低かったという話がありまして、この話と、この多国籍企業の税金逃れの話は、なんだか凄く不公平に思った記憶があります。
稼ぐのは全く構わんけど、相応の税金は払えよ、と。
新自由主義が掲げられていた時代の歪みですかね。
その頃から、この話はすでに国際会議の議題には挙がっていて、穴が塞がれるのはそう遠くない未来の話かな、なんて思ってましたけど、なかなか進みませんでした。
ただ、国境というハードルが低くなっていく時代にあって、有利な国で利益を最大化する、というのは、グローバルな営利集団としては生存本能みたいなもので、責めるのも酷な気はします。
ともあれ、一歩前進ですね。
グローバル企業にとって国民が富裕な先進国は重要な市場ですが、コストも高けりゃ税金も高い。
だから、商売だけは先進国でして、義務は他のところで、となるのも合理的ではあるんですが、先進国のインフラや生活水準を利用した商売をしている以上、それだとフリーライダーと本質的に変わりません。
少し前にスターバックスやグーグルの租税回避が話題になっていましたが、各国子会社間で仕入れや商標権料などをやり取りして、法人税の高い国では利益を少なく申告し、法人税の安い国で利益を計上するという手法や、ダブルアイリッシュダッチサンドウィッチという、アイスランドとオランダの2国間の租税協定を利用したものでした。
また、アマゾンも、日本にあるのはただの倉庫だと主張して、日本の税務当局と揉めてましたね。
この辺りも、数年前にスイスがアメリカに屈してスイス国内の銀行口座の情報を提供したように、タックスヘイブンなどと共に締め付けがきつくなっています。
アマゾンやその他ネット通販企業に対しても、今回の報告で、名目上倉庫でもビジネスの根幹である場合は課税できるようにするよう報告書に記載されました。
やっぱり、正々堂々と、商売した国で義務を果たして欲しいですね。
近江商人の、「売り手よし、買い手よし、世間よし」という三方よしの精神を持ってもらいたいものです。
この前、ふとポートアイランドに行った際にイケアを見まして、そういえばスウェーデン発祥のイケアの本社ってオランダなんよな、と思い出しましたが、イケアも立派なグローバル企業です。
オランダ人は歴史的に見ても重商主義で、商売に長けた優秀な人が多く、そういう人材の確保やヨーロッパ各地との交通の便がいい事が理由として紹介されていましたが、オランダに本社を移したのはそういう面だけではないんでしょうな。
オランダにはグローバル企業が集まっていますが、その目的のひとつが安い租税にあったりしますからね。
資本主義の行き着く先は、合理化を推し進めた巨大企業化で、インターネットの普及というのも、国境を越える煩雑さを少なくする要素であり、時代と言えば時代なんですが、巨大企業はその図体故に影響も大きいので、あまりにドギツイやり方は、倫理的に考えても控えて欲しいものです。
2015年10月9日金曜日
初めてのpython その2
予定通り(?)の続報です(笑)
前回の最後で、python単体とCGIとしての動作が違うと書きましたが、それも回避に成功しました。
問題点を整理すると、
・python単体では全てutf-8で処理できて、file書き出しも画面出力も問題なし
・CGIとして実行すると、あの有名な Encode Decode Error が出る
というもの。
どうも単体での実行とCGIとしての実行で、文字コードの扱いが変わるようですね。
CGIとして実行した場合、日本語出力の部分で、ASCIIでやってみたけど変換できひんやろが!とエラーを吐くので、
'日本語部分'.encode('utf-8')
として出力すると、エラーを出さなくなりました。
しかし、画面には日本語ではなく見慣れない文字列が・・・
ん゛ーなんじゃこら。
と小一時間四苦八苦してると、バイト列ということに気付きました。
よくよく調べてみると、python2系とpython3系でencodeの扱いが変わり、python2系ではunicodeから指定する文字コードの文字列への変換だったのが、python3系では指定する文字コードのバイト列への変換に変わったようです。
なので出力がバイト列になってしまう。
この辺りは、検索しても解説しているページが少なかったですね。
なので、なんでバイト列に変換されんねん、と訳も解らず、ハマりました(^^;)
回避方法は、
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
の一文を入れること。
sys.stdout(システムの標準出力=画面)をutf-8でラップしてしまいますよ、という設定。
これで出力が自動的にutf-8の文字コードになります。
ざっと、日本語扱う時はこれ入れとけばいいよ、と書いているサイトはいくつかあったんですが、個人的には、そういうのは対象のみに絞って変えたいってのがあって、標準出力の設定を一括で変えてしまうことは躊躇してました。
でも、バイト列ですべて処理するといった他の回避方法は非常にややこしそうだったので、最終的には導入することに。
これでオールクリア。
無事、CGIとして動くようになりました。
色々と調べてもややこしかったpythonですが、python2系とpython3系は明確に分けて検索したほうが素人にはいいですね。
混乱の原因になります。
それぐらい下調べしてから始めろよ、という話でもあるんですが(^^;)
検索した感じでは、まだ2系の解説ページの方がちょっと多いかな。
3系をやろうと思ってる人には、要注意事項です。
でも、ハマッたお陰でpythonの理解はちょっと深まったでしょう!
でないと浮かばれない・・・
あと、検索して一番の収穫は、
忘備録って間違い発祥の単語だったこと!
備忘録の間違いかららしいです。
辞書にも載ってるぐらい市民権を得てますがね。
そら変換できんわな(笑)
前回、堂々と忘備録と書いた気がしますが、スクリプト動作記念にそのままで(^^;)
前回の最後で、python単体とCGIとしての動作が違うと書きましたが、それも回避に成功しました。
問題点を整理すると、
・python単体では全てutf-8で処理できて、file書き出しも画面出力も問題なし
・CGIとして実行すると、あの有名な Encode Decode Error が出る
というもの。
どうも単体での実行とCGIとしての実行で、文字コードの扱いが変わるようですね。
CGIとして実行した場合、日本語出力の部分で、ASCIIでやってみたけど変換できひんやろが!とエラーを吐くので、
'日本語部分'.encode('utf-8')
として出力すると、エラーを出さなくなりました。
しかし、画面には日本語ではなく見慣れない文字列が・・・
ん゛ーなんじゃこら。
と小一時間四苦八苦してると、バイト列ということに気付きました。
よくよく調べてみると、python2系とpython3系でencodeの扱いが変わり、python2系ではunicodeから指定する文字コードの文字列への変換だったのが、python3系では指定する文字コードのバイト列への変換に変わったようです。
なので出力がバイト列になってしまう。
この辺りは、検索しても解説しているページが少なかったですね。
なので、なんでバイト列に変換されんねん、と訳も解らず、ハマりました(^^;)
回避方法は、
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
の一文を入れること。
sys.stdout(システムの標準出力=画面)をutf-8でラップしてしまいますよ、という設定。
これで出力が自動的にutf-8の文字コードになります。
ざっと、日本語扱う時はこれ入れとけばいいよ、と書いているサイトはいくつかあったんですが、個人的には、そういうのは対象のみに絞って変えたいってのがあって、標準出力の設定を一括で変えてしまうことは躊躇してました。
でも、バイト列ですべて処理するといった他の回避方法は非常にややこしそうだったので、最終的には導入することに。
これでオールクリア。
無事、CGIとして動くようになりました。
色々と調べてもややこしかったpythonですが、python2系とpython3系は明確に分けて検索したほうが素人にはいいですね。
混乱の原因になります。
それぐらい下調べしてから始めろよ、という話でもあるんですが(^^;)
検索した感じでは、まだ2系の解説ページの方がちょっと多いかな。
3系をやろうと思ってる人には、要注意事項です。
でも、ハマッたお陰でpythonの理解はちょっと深まったでしょう!
でないと浮かばれない・・・
あと、検索して一番の収穫は、
忘備録って間違い発祥の単語だったこと!
備忘録の間違いかららしいです。
辞書にも載ってるぐらい市民権を得てますがね。
そら変換できんわな(笑)
前回、堂々と忘備録と書いた気がしますが、スクリプト動作記念にそのままで(^^;)
2015年10月5日月曜日
初めてのpython
色々な集まりに使える出欠ツールを作ろうかと思い立ち、どうせ作るなら以前からやってみようと思ってたpythonで作ってみるかと、先週はずっとコーディングしてました。
ブログだの旅行で行ったスポットなんかの整理を投げ捨てて。
でも・・・
ハマッた・・・
1週間やって成果物ゼロという驚きの白さに!!
恐ろしいですわ、python。
いや、python+cgiが、と言うべきか。
作ろうと思ったのは、日付、場所、時間、参加人数が羅列されているリストのページと、そこからリンクで行ける入力ページ。
リストのページは、直近の任意の期間の確定曜日を抽出してデータファイル化し、それをリスト表示するというもの。
この辺りは後々のメンテが要らないよう全部自動化。
DBとかはめんどくさいので使わずにcsvのみ。
で、無駄にアイコンとかに凝ってページデザインに2日かかった(笑)
なので、先週水曜からコーディング開始。
環境はwindows版python3.5で動作確認し、本番環境はubuntu。
都度都度構文を調べながら書くという泥臭さながら、金曜には目標の動作をするようにはなりました。
それを本番環境に持っていくと・・・エラー続出。
もうね、洗い出しが大変でしたわ。
調べても、意外と日本語ページが少ないんですよね。
なので初心者がハマり易いこまごました部分ってのも少ない。
その代わり、オフィシャルのリファレンスは凄く解り易いですね。
というわけで、自分の為の忘備録と、同じようにハマってまった初心者の方の参考にちょいと書き出し。
まず最初は、BOM(Byte Order Mark)。
python3系は標準がunicodeです。
なので何も宣言しなくてもUTF-8でやってくれるらしいです。
で、エディタはwindows版に付いてたIDLEというのを使ってたんですが、どうも最初にコードの宣言をしないと、BOM付きのUTF-8のファイルとして保存されてしまうようです。
UTF-8のファイルにはBOM付きとBOM無しがあってメモ帳なんかで編集するとBOM付きになります。
このBOMが付いていると、スクリプトの最初の1行目のシェバンという#!から始まるパスが認識されません。
なので実行できないとか、実行できないformatというエラーが出ます。
調べる方法は、
> od -tx1 ファイル名
これで先頭に EF BB BF があれば、それがBOMです。
これの対処法は、BOM無しで保存する事。
エディタにBOM有無のオプションがある場合は簡単ですが、IDELにはそれらしき場所が見当たらなかったので、全文コピーして新規ファイルに貼り付け、そしてコード宣言を足して保存、という方法で回避しました。
シェバンの次の行に足したのは、
# -*- coding:utf-8 -*-
-*-はemacsというエディタの対応部分なので、# coding:utf-8でもいいらしいです。
emacsなんて20年ぐらい使ってないですけど、入れといても損は無いので入れときました(笑)
次の問題点は、改行コード。
windowsとmac、unix系で改行コードが違うのは有名な話ですが、これに引っ掛かっていました。
ちゃんとテキストモードでFTPしたんですがねぇ
問題発覚後、何度テストしても改行コードは変わってませんでした。
所詮はおまけのFTPクライアントか・・・
でもphpやplではちゃんと変換してくれてたんやけどなぁ
したつもりでできてないと、ハマり度数が大きくなりますな。
したつもりだけに、気付くのが遅れる。
linuxでの確認方法は、
> od -c ファイル名
これで改行部分が \r\n と見えていると、改行が変換されずに転送されてしまってます。
取り合えず、これでシェバン絡みのエラーは出なくなり、直に実行する分には動くようになりました。
しかし、しかし、cliでは動くのに、cgiとしてブラウザから動かすとエラーを吐くという現象が。
どうもprintとcsv.writerやcsv.readerで文字コードの扱いに違いがある様子。
ASCIIで変換しようとしたけどできんかったわ!という、pythonで有名なハマりエラーが出まくり。
まだまだ精進が必要ですな。
多分、続報アリです・・・
ブログだの旅行で行ったスポットなんかの整理を投げ捨てて。
でも・・・
ハマッた・・・
1週間やって成果物ゼロという驚きの白さに!!
恐ろしいですわ、python。
いや、python+cgiが、と言うべきか。
作ろうと思ったのは、日付、場所、時間、参加人数が羅列されているリストのページと、そこからリンクで行ける入力ページ。
リストのページは、直近の任意の期間の確定曜日を抽出してデータファイル化し、それをリスト表示するというもの。
この辺りは後々のメンテが要らないよう全部自動化。
DBとかはめんどくさいので使わずにcsvのみ。
で、無駄にアイコンとかに凝ってページデザインに2日かかった(笑)
なので、先週水曜からコーディング開始。
環境はwindows版python3.5で動作確認し、本番環境はubuntu。
都度都度構文を調べながら書くという泥臭さながら、金曜には目標の動作をするようにはなりました。
それを本番環境に持っていくと・・・エラー続出。
もうね、洗い出しが大変でしたわ。
調べても、意外と日本語ページが少ないんですよね。
なので初心者がハマり易いこまごました部分ってのも少ない。
その代わり、オフィシャルのリファレンスは凄く解り易いですね。
というわけで、自分の為の忘備録と、同じようにハマってまった初心者の方の参考にちょいと書き出し。
まず最初は、BOM(Byte Order Mark)。
python3系は標準がunicodeです。
なので何も宣言しなくてもUTF-8でやってくれるらしいです。
で、エディタはwindows版に付いてたIDLEというのを使ってたんですが、どうも最初にコードの宣言をしないと、BOM付きのUTF-8のファイルとして保存されてしまうようです。
UTF-8のファイルにはBOM付きとBOM無しがあってメモ帳なんかで編集するとBOM付きになります。
このBOMが付いていると、スクリプトの最初の1行目のシェバンという#!から始まるパスが認識されません。
なので実行できないとか、実行できないformatというエラーが出ます。
調べる方法は、
> od -tx1 ファイル名
これで先頭に EF BB BF があれば、それがBOMです。
これの対処法は、BOM無しで保存する事。
エディタにBOM有無のオプションがある場合は簡単ですが、IDELにはそれらしき場所が見当たらなかったので、全文コピーして新規ファイルに貼り付け、そしてコード宣言を足して保存、という方法で回避しました。
シェバンの次の行に足したのは、
# -*- coding:utf-8 -*-
-*-はemacsというエディタの対応部分なので、# coding:utf-8でもいいらしいです。
emacsなんて20年ぐらい使ってないですけど、入れといても損は無いので入れときました(笑)
次の問題点は、改行コード。
windowsとmac、unix系で改行コードが違うのは有名な話ですが、これに引っ掛かっていました。
ちゃんとテキストモードでFTPしたんですがねぇ
問題発覚後、何度テストしても改行コードは変わってませんでした。
所詮はおまけのFTPクライアントか・・・
でもphpやplではちゃんと変換してくれてたんやけどなぁ
したつもりでできてないと、ハマり度数が大きくなりますな。
したつもりだけに、気付くのが遅れる。
linuxでの確認方法は、
> od -c ファイル名
これで改行部分が \r\n と見えていると、改行が変換されずに転送されてしまってます。
取り合えず、これでシェバン絡みのエラーは出なくなり、直に実行する分には動くようになりました。
しかし、しかし、cliでは動くのに、cgiとしてブラウザから動かすとエラーを吐くという現象が。
どうもprintとcsv.writerやcsv.readerで文字コードの扱いに違いがある様子。
ASCIIで変換しようとしたけどできんかったわ!という、pythonで有名なハマりエラーが出まくり。
まだまだ精進が必要ですな。
多分、続報アリです・・・
登録:
投稿 (Atom)