ラベル システムエンジニア の投稿を表示しています。 すべての投稿を表示
ラベル システムエンジニア の投稿を表示しています。 すべての投稿を表示

上司がクソ野郎になってきた

上司がクソだ。

全然勉強していなくて話が通じなくてクソ
REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。

計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどういうことなんだろう。何割完了とかいうレベルじゃなくて、お客さんがその方式だと運用が大変だから無理ってる状況って進捗状況ほぼ0割だろ。なんでリスケしないでこの状況まで放っておいているんだろう。自分の作業計画のマネジメントも出来ないのか。
上司は弊社に入社してから10年以上が経過しているはずなんだが、全く勉強してこなかったことが伺える。

話が通じないから、無知でも分かりやすいように噛み砕いて説明するのが面倒なのだが、それは別にいい。そこまで嫌ではない。最高にクソなんだが次にあげることだ。


威圧してきてクソ
上司の威厳を保つためか、平常心を保つためか知らないが、威圧してきやがる。「それ前にも言ったよね」「だから前にもいったように」とか言ってきやがる。前にも言ったかどうかなんて聞いてねえんだよ。聞かれたことにまず答えろ。そして答えを曖昧にするな、上司的には逃げ道を作っているのだろうが、分かりにく過ぎる。いったい何の話ししてたの??ってなるわ!聞き流すわ!


このまま放置しておくわけにはいかない
何とかしてこの状況を打破しなければならない。出来ることをやってそれでもダメなら、最悪はアカウント変更だ。最高は出世して、この上司の下から外れることだ。しかし、出世するにはこの上司に認められなければ難しいのではないかと感じている。この上司に認められなくても出世できないわけではなくて、実際の評価者に認められればOKだ。しかし、1段飛ばしで認めてもらうには、よっぽど私が出世に値すると周囲に周知していかなければならない。


考えよう。道はあるはずだ。


新卒で入った企業を退職するときに悩んだこと

新卒で入った企業を退職するとき、私はものすごく悩みました。


私は社内評価は低かったのですが周囲に与える影響を気にしてこんな記事をブックマークしてたりしました。


新卒で入社した企業は、今振り返ってもとても良い企業でした。おそらく、退職せずに定年まで働いても幸せに暮らすことが出来たでしょう。少しの心のモヤモヤを抱えて。


心のモヤモヤは社員への手厚い契約が原因でした。社員に有利な契約形態は、入社する際には有難く感じるものですが、働いてみると全然有難くないことに気付きます。日系企業によくあると思うのですが、社員がどれだけ頑張らなくても成果を上げなくても雇用が継続されるんですね。

これが給与が低い原因かと思います。そして、一日中油売ってる人の給与が自分の倍とかモチベーションが上がりようがないです。若手はほぼみんな、一日中ガムシャラに働いていました。しかもほぼみんな脳を鍛え上げてきた人たちで、処理能力や記憶能力が抜群。それでも一日中ネットサーフィンか睡眠をとっている人の半分の給与。

極めつけは若手が飲み会の幹事までやらされる。無給で。。。部署の固定電話の一時受付やらされる(一日50件くらいある)。不景気などと言って部署に新人があまり入ってこなくて、一体何年間この罰ゲームやらされるんだと思いました。


今記事を書いてて、もうこれで退職理由になるじゃんと思いました。しかし、当時純真無垢の真面目でこれが理不尽であることを知らなかった私は退職理由を必死に考えました。とにかく辞めたい、こんな働き方を30年間も続けることは出来ないと感じていたのですが誰もが納得するような言葉にしなければならないと考えていました。

当時の日記を見返すと箇条書きでこうあります。
・〇〇長が事故で亡くなった。モヤモヤを残して死にたくない。
・上司(直属)が自主退職を求められて、再三に渡り面談を実施されていた。
・先輩(事務系)が自主退職を求められて、再三に渡り面談を実施されていた。
・〇〇の業務を任せるという話で入社したのに、配属先は〇〇の業務だった。
・少ししたら〇〇の業務に配属するからなどと言って5年が過ぎた。信頼が無い。



健気ですね。
その他、日記を見返すと悩んでいたことが伺えます。

ストレス解消には?:他人にどう思われようと気にしない。 
良い上司と悪い上司の見分け方は?:http://blog.tinect.jp/?p=10135

本当に当時の私、お疲れさまでした。無理をしすぎて、最後の方は精神的に少しおかしくなっていたと思います。だから若者に伝えたい、無理せず辞めて大丈夫だと。キャリアよりも健康が一番大切です。


就職活動する学生に向けて

私は多くの失敗の末、今は大手外資系企業でITコンサルタントとして働いている。就職活動時に知りたかった、、、という内容を当記事に書く。私の失敗から学んで無駄なことをせず、世界を進化させることに注力してほしい。


流行り言葉を使う必要は無い
私の就職活動をしているときには、ユビキタス社会などという言葉が流行っていました。就職イベントに行くと必ず使われている言葉で、私もその言葉を使って活動しました。

しかし、結局こういう流行言葉って人に刺さりません。

そもそも「ユビキタス社会」って何なのかっていうのが本当の意味で理解できていなかったので。勉強して言葉の意味を理解している状況だったのですが、その言葉は生まれた背景を知らなかったのです。だから言葉を知っていても、その言葉が何なの?って話になっていました。それでは人に刺さることを話せるわけがないですよね。

就職活動では得てしてこういったことが多いように思います。テクノロジーには流行り廃りがあり、進化していっています。ですから、テクノロジーを付け焼刃のように勉強して語るのは得策とは言えません。そもそも順番としては「社会あるいは個人が実現したいことがあって、それを叶えるためにテクノロジーが生まれたり進化したりする」です。実現したいことを語る前にテクノロジーを語るのは難しいです。


自分のことを話せばいい
じゃテクノロジーのことじゃなくて何を話せばいいのか。自分のことを話せばいいのです。自分はどんなことに興味を持っていて、これまでどのように生きてきたのか。こういった話はテクノロジーを詳しいプロフェッショナルが聞いても面白いものです。(あ、社会に出るとプロフェッショナルはたくさん居ますが遠慮してはダメですよ)これまで20年くらい生きてきたわけですから、そのことを話せばいいです。

自分には何も無いと思う人も何かあるはずです。どうしても書けない人はマインドマップを書いて、人と比べてみると何となくわかってくるのではないでしょうか。


つづく。。。



無能だと認識していた上司が昇進した件について

無能で意味不明な指示を出す上司が昇進した。以前にも少し当ブログに出てきたかもしれないが、数々の謎指示で私を残業地獄に落とし苦しませてきた方だ。代表的な指示は次のものだ。

Linuxでbatファイルを動作させてくれ、設計書は作成しておいたがもっといい方法があるなら設計書に従わなくても良い。


このように能力は疑う余地もないくらい低く、年齢も若い。作業に至ってはExcelで作成された進捗管理表に作業者から聞いたままの値を入力するのがほぼ全ての作業だ。昇進した意味が分からない。いったい何が要因となって昇進に至ったのだろうか。現場を見ていない人が昇進に関わっているので、弊社の昇進システムのバグみたいなものなのかもしれない。


しかし恐ろしいことはこの昇進が弊社の昇進システムのバグではなく、平常運転だったときの場合だ。これはお先真っ暗コース。


もしこの昇進が平常運転だったとすると、私が認める「能力」と会社が認める「能力」は違うということになる。いったいその会社が認める能力とは何なのか、私が弊社で昇進するにはそこを見極める必要がある。来年はそこに注目して昇進を勝ち取りたいものだ。



ITコンサルタントとして初めての部下が出来た

今年入社の新人が研修を終えて現場に配属されてきました。そして私はその新人を部下に持つことになりました。新人のミッションはプロトタイプシステムを作ることです。

新人を私の部下につけることは適切なアサインだと思います。今の職場では偉い人(?)ばかりで、ソースコードをまともに読み/書きできるのはかなり少数ですのでプロトタイプシステムを作るにあたって、指導していくのが難しいからです。

どうやらソースコードの読み書きが不自由なのは、今のアカウントだけでなく弊社全体的に言えることのようです。というか、私は弊社に転職して3社を経験していますが3社ともソースコードをまともに読み/書き出来るのはかなり少数でした。

ですので、ソースコードをまともに読み/書きできる社会人エンジニアは日本ではかなり少数なのではないかと思います。ここで言っている”まともに”とは、オンプレミス環境上でもクラウド環境上でも自分で何かしらのアプリケーションを作ってインターネットに公開する程度のことを指していて大層なことではないかと思います。それこそ、趣味でいじってればそのうち出来る、趣味レベルのことを指しています。

そんな貴重な(?)ソースコードの読み書きが不自由なく行える社会人エンジニアの私の部下として配属される新人はとても幸運だし、作業量が増えてきてパンクしかけていた私にとっても幸運なことです。ちょうど弟子が欲しかったのです(弟子が欲しいは私の幼少のころからの口癖でした)。

こうして新人くんを部下に持って数か月経ったのですが、学習能力がすごいです。みるみる内にものを覚えていきました。特定分野に関しては私よりも詳しく、教えてもらっている状況です。まさに切磋琢磨しあえている。そして同時に見えてきた課題、頑張りすぎて自分のコンディションが乱れがち。これは管理職しっかりしろよって感じですが。

ソースコードの読み書きが出来ない、アーキテクチャを正しく認識できない、人の話を正しく認識できない、これではスケジュール管理できるはずもない。勉強しない管理職とはもう二度と関わらないと心に決めた。

攻撃し返さないと攻撃される職場はクソ

タイトルのとおり、攻撃し返さないと攻撃される職場はクソだと思います。そして、私は今そんな職場にいるのかもしれないと感じています。「のかもしれない」というのは、今は冷静に判断できないと思うためです。攻撃されて抗戦すると冷静さを失います。

攻撃するという特性を持つ人は、新人だろうが中途で入ったばかりだろうが他者を攻撃するんですね。これは私の想像に反していて、意外なことと感じました。攻撃する人というのは、同じ会社に長く所属してロールが偉くなり調子に乗って攻撃するようになるものかと思っていました。しかし実際は、攻撃者本人の立場はあまり関係なく攻撃しても大丈夫な相手を見つけて攻撃するようですね。

攻撃しても大丈夫な人というのは、攻撃しても反撃してこない人ですね。私は基本的に攻撃もしなければ反撃もしないので、狙われがちです。攻撃してくる人は自然災害と同じようなものと考え、避けることにしています。

しかし、最近そうもいかなくなってきました。自衛のため抗戦しています。こういったことをあまり経験してこなかった私は非常にスマートさにかける戦い方をしています。そういう戦いをしていると、消耗が激しいのでそろそろ対策を考えなければならないのかと感じ始めました。

今までは戦い方を考える必要もない環境でした(日系企業でITエンジニアとして勤務)。しかし今は転職して、周囲の攻撃する人の率が非常に高くなりました(外資系企業でITコンサルタントとして勤務)。体感としては、日系企業でITエンジニアでは攻撃してくる人は2%、外資系企業でITコンサルタントで攻撃してくる人は20%といった感じです。

このような環境は早く転職してしまえばいいのですが、給料は良いので転職するには惜しい気持ちもあります。そこで、攻撃してくる人への対策をしてスマートに自衛出来るかもう少し様子を見てみようかと思います。とはいえ、今まで攻撃してこなかった人が攻撃するのはなかなか難しいものがあります。

ですので、攻撃してくる人への対応策をインターネットで調査してみました。すると、大変参考になる記事を発見。
攻撃的な人から身を守る意外と単純な方法!平穏な日々はもう目前!


このブログの書き手さんも相当な苦労をされてのでしょうね、ブログを見て知識をつけて実践してみようと思います。

このブログは他にも参考になりそうな記事がたくさんありましたので、特に読みたいなと思った記事をまとめておこうと思います。

最後に、やはり私は他者を攻撃することが嫌いです。ただ、必死で生きていると抗戦して自分を見失ってしまいます。そんなときには次の記事を読んで今の気持ちに戻ろうと思います。

自分が有能であることを示すために、こんなことするなんてひどい。こうなったら成長ストップ、仕事もつまらないだろうな。仕事は楽しくやろう。仕事も遊びも人生の一部。

新人から4年目まで私は迷走していた

昇給額が同期の半額

プログラムどころかExcelさえまともに使ったことのなかった私は、新人から4年目まで迷走していて全然成長しませんでした。

上司からの評価も毎年低く、昇給も同期中では最低額だったかと思います。良く出来ると評判の事務系の同期に聞いてみると、自分の倍の昇給額で大変驚きました。

個人の努力ではどうしようもない

今だからわかることですが、私がこのような状況に陥ってしまったのは会社側に明確な理由があります。長時間労働で体力を削られ、理由もなくされる否定で精神を削られ、生きているだけで精一杯でした。当時の私は自分ばかりを責めていましたが、私個人の努力ではどうしようもなかったのです。

同期の中でも飛びぬけて出来ない

それに気付くのが遅れた原因が同期の優秀さです。同期は国立大学出身か情報系修士という背景を持ち、過酷な環境の中でもうまくやっていけていました。人柄としても人生2週目という感じで、もう本当に優秀でした。システム開発はもちろんのこと、理不尽や意味のわからないタスクも難なく消化していきました。国立大学出身でも情報系修士でもなく大学のころ部活動でスポーツばかりやっていた私はうまくやっていけず、よりコントラストが効いて落ちこぼれました。

仕事を覚える仕組みがない

入った会社も良くなければ入ったプロジェクトも良くありませんでした。スキル・経験不足で一人で動けない新人なのにフォローする余裕のないプロジェクトで、育成が後回しになっていました。今だからわかることですが、このプロジェクトに余裕がないのは契約内容の理解が甘いためです。だから、何をするプロジェクトなのかが分かっておらずハンドルできない。

理解が甘いけども進捗は出さなければならないので、結果として場当たり的な作業が増えていました。当然、見当違いの成果物になるので手戻り作業も増えました。そして残った場当たり的な作業は、知る人ぞ知る経緯としてプロジェクトは属人化していきました。

怒りの矛先は弱い者へ

プロジェクトが属人化すると、有識者でしか仕事を回せなくなり当然その人たちは忙しくなります。しかし、他の人はわからないので手出しできません。認識共有しようにも、有識者は忙しいので、認識共有の場を設けることも出来ませんでした。この不毛な状況にプロジェクトメンバーはだんだんと怒りを募らせていきます。そして、怒りの矛先は弱いものに向けられました、つまり当時若者であった私です。仕事が嫌で嫌で仕方がありませんでした。

異常への気付き

そんなこんなでプロジェクトをなんとか終えて次のプロジェクトに配属されました。そのプロジェクトで今までのプロジェクトの異常性に気付きました。きっかけをくれたのは一人の先輩でした。

その先輩と一緒に働いたとき、本当に成長を実感しました。そして、自分の考え方がそれほど間違っていないことに気付きました。ゴールを明確にしてから仕事することしないこと、どうしてもゴールが見えないときは少しやってみてゴールを明確にすること。分からいないなら聞く、当たり前のことですね。

良い先輩とは自信をくれるもので、初めて仕事が楽しいと思いました。楽しいとは仕事内容でなくとも一緒に働く人間でも感じるものなのだと実感しました。これは、就職活動にも応ずる考えだと思います。

人が育つ環境 / 人が育たない環境。個人の努力だけでは超える事の出来ない循環

私のこれまでの経験から人の育つ環境についてまとめてみました。


システム開発の現場を10年経験し、人が成長するシーン・人が停滞するシーンを見てきました。こういったシーンを多く見ることで客観的に「環境が人に与える影響」をとらえることが出来た気がします。また私自身の経験としても成長と環境は多いに関連していると感じています。

今回の記事は、そういった「人に影響を与えるプロジェクトの循環」をまとめます。なお、一部の突き抜けたものを持っている方はこの限りではありません。世の中には本当に凄い方、何もしない方はいるものです。


人が育たない循環

  1. 顧客についての理解が不十分。分かってるふりしてるので聞けない、能力不足で聞いても分からない。
  2. 発注者の意図が理解・把握できない。
  3. プロジェクトを定義することが出来ない。
  4. 何をすればいいかそれぞれが考えるのでメンバーの方向性がバラバラ。
  5. それぞれに進めると時間がかかるので、だんだんと予算がなくなっていく。
  6. 予算も時間もないので、出来る人で回すしかなく育成が後回しになる。

以下ループ


人が育つ循環

  1. 顧客のみならず社会の状況を理解しており、業界ニーズがわかる。
  2. 発注者の意図を理解・把握できる。
  3. プロジェクトを定義することが出来る。
  4. 何をするべきか定義されているのでメンバーの方向性が一致し主体的に働ける。
  5. 早く進むので時間も予算も余裕がある。
  6. 未熟な人にも機会を与えられる、失敗してもフォローできる余裕がある

以下ループ


どうでしょうか。システム開発の現場を経験した方ならば、思い当たる節はあったのではないでしょうか。


こういったループを仕組みで持てている会社は強いです。人が抜けても次々に育ちます。著名な人物を輩出しながらもその会社自体も元気な会社はおそらくこの仕組みが出来ているのでしょう。



以上、「人が育つ環境 / 人が育たない環境。個人の努力だけでは超える事の出来ない循環」でした。

AWS学習 VPCピアリングとは何なのか調べてみた

AWSの学習をしていて、VPCピアリングという言葉がわからなかったので調べてみました。現状の理解をまとめてみます。

そもそもVPCとは

まずVPCはVirtual Private Cloudのことです。要は、Amazon EC2のネットワーキングレイヤーです。VPCは他の仮想ネットワークから切り離されます。

VPCを使用すると、仮想ネットワーク内にAWSのサービスを起動することができます。この仮想ネットワークはアマゾンが準備しているネットワーク / サーバ群でユーザーはお金を払えば自由にスケールアップさせることが出来ます。

VPCピアリングとは

さて、本題のVPCピアリングについてです。VPCピアリングというのは、上記で説明したVPC同士をつなぐことです。この接続時にはプライベート IPv4 アドレスまたは IPv6 アドレスを使用します。

VPCピアリングによってVPC同士が接続されると、どちらのVPCインスタンスも同じネットワーク内に存在しているかのように扱うことが出来ます。

VPC は複数の異なるリージョンに存在できるので、VPCピアリングを使えば複数の異なるリージョン間でもプライベート IPv4 アドレスまたは IPv6 アドレスで接続することが出来るということです。

まとめ

少し勉強してみた感想ですが、AWSの勉強はAWS固有の知識以外にも色々と勉強になってすごく良いです。まず英語と日本語の説明があるので、両方読むことで英語の勉強にもなます。しかも説明がわかりやすいです。そして、専門用語も所々にあるので、インフラ構築する上で抜けている知識も補うことができる。

今回の記事ではVPCピアリングのみのまとめでしたが、他にも調べてまとめたいことはたくさんありました。リストアップしますとこのような感じです。
・サブネット
・ゲートウェイ
・インターネット VPN
・ルーター
・ソフトウェアルーター
・ルーティング
・NAT / NAPT
・レイヤ3
 ・AWS CLI

こうしてみると基本的なことも含まれていて、勉強不足感が否めませんが私は前職ではアプリ作成の担当だったのでインフラはあまり詳しくないことを言い訳として主張したいところですね。(←誰に)

以上、「AWS学習 VPCピアリングとは何なのか調べてみた」でした。

JavaでAuto Tweet Program作成計画 Twitter4Jを使う

JavaでAuto Tweet Programを作成しようと思っています。

なぜなのか

自動でツイートするのは面白いし、何より自動化の作業経験は未来につながると感じたからです。自動化するにあたってTwitterAPI「Twitter4J」を使用することにしました。ただ、このAPIは機械学習や文章を作成する機能はありませんので、その部分は私自身が作成するか、他のAPIを導入する等の作業が必要になります。

現段階で出来ること

ということで、JavaでAuto Tweet Programを作成の第一段階としてTwitterAPI「Twitter4J」を把握していくことにします。さっそく昨日少しだけ触ってみましたが、非常に使いやすいAPIになっています。とりあえずは現段階で、次のことが出来ました。
  • HOME TLの読み込み
  • 自分が書いた文章の書き込み

このような状況なので、まだまだ使えるようなプログラムは組めていませんが感覚としては良いプログラムが組めると感じています。なぜならドキュメントが揃っており、ユーザーも多いためです。サーベイすることで試行錯誤の回数を大分減らし、素早くプログラムを組むことができると思います。

今日の計画

計画としては、今日は次のことが出来るようにしたいです。
  • 自分のつぶやきの読み込み
  • 定刻になったら任意の文章を書き込むボット作成



ここで考える必要があるのは、一日にどのくらいツイートするか。また、その内容をどうするか。同じ内容を続けてツイートすることは出来ない使用なので、ここは何かしら自分でプログラムを組む必要があります。今日はTwitter4Jの把握に注力するため、他APIを使用して文章を作成することについてはやらない方針にしました。


さらに努力目標として、自分のつぶやきの読み込んだものを加工して、ブログ記事のネタあるいはアウトラインにするところまで出来たら良いかと思います。ここは少し構成を考える必要があるので今日中に出来るかは不明です。


以上、「JavaでAuto Tweet Program作成計画」でした。


AWS/Twitter4Jの学習とジャケット/スーツの購入をしたのが今日の成果

今日はどんな日だったでしょうか。今日で今週も折り返しですね、なんだか今日は色んなことがあった気がするので雑記します。

AWSの勉強

少しだけしました、およそ2時間くらいでしょうか。18日に迫った試験がかなり心配になる進捗です。まだ参考書を一周もしていないので、今日も初めて聞く言葉がいくつかありました。初めて聞いた言葉や理解が曖昧な言葉をリストアップしておきます。

・VPCピアリング
・インターネット VPN
・ソフトウェアルーター
・ルーティング
・NAT / NAPT
・レイヤ3
・AWS CLI


結構ありますね、正直苦戦しています。AWSで二回もブログ環境を構築したことあるので楽勝だろうと思っていたのですが、知らないことが結構あります。明日からペースアップしなければなりません。


Twitter4Jの学習

みなさんご存知の大手Twitter APIですね。これを利用してサンプルプログラムを作りました。私は初めてTwitter4Jに触りましたが、ドキュメントもしっかりしていて理解しやすそうですね。

ちなみに少しだけTwitter4Jの紹介をしますと、Twitter4Jは日本人が作ったAPIです。無料で使用することが出来、世界でも広く利用されています。Javaのライブラリを読み込むだけで利用できるので、とても使いやすいです。しかも機能が豊富で動作も安定しています。大変に素晴らしいですね。

これは引き続き学習を進めて、ツイッターから情報を自動で引っ張ってきてブログを書くときに役立てようと考えています。ゆくゆくはアプリがブログを書くようになってほしいところです。


ジャケット / コートの購入

今日は比較的早めに仕事をあがり、服を買いました。仕事で使うジャケットとコートです。来週からお堅い職場で働くことになったのでスーツ必須なのですが、一着しか持っていなかったためです。ついでにコートも一着しか持っていなかったので買っておきました。

このとき自分でも驚いたのですが、選択がとても早くなりました。1年前の私であれば、ジャケットとコートを買うだけで半日はかかっていたと思うのですが、今回は30分くらいで購入することが出来ました。早く選択すると後悔がなく幸福度があがるというのを脳科学の本で読んだことがありますが、早く選択できることは時間の有効利用という観点からもとても良いことだと思っています。即決と幸福度の関係は、直観と異なりますが研究結果ではそのようなのです。不思議ですね。

どうして即決出来るようになったか考えてみると、金銭的に余裕が出てきたことで気分にも余裕が出てきていることが要因であると考えられます。この余裕は実感できるぐらい大きなものと感じています。お金で解決できるものはお金を使ってすぐに解決することで、生きるのがとても楽になったと感じます。


夕飯

今日の夕飯はそのまま外食しました。地鶏ラーメンと地鶏親子丼を食べたのですが、これが非常に美味しかったです。なお、自撮りはしませんでした。

お口直しにスタバでナッツのラテを飲んで今帰宅。(正確には当記事を書き始める前なので、1時間前くらいに帰宅)ナッツのラテはミルクで作られているのでなく、アーモンドミルクで作られていることをスタバのお姉さんに聞きました。そして、常にオールアーモンドミルクなのでお湯は入っていないということも。味はどうかというと、上に載っているフルーティなナッツは私の好みではありませんでしたが、飲み物はとても美味しかったです。

以上、「AWS/Twitter4Jの学習とジャケット/スーツの購入」でした。今日も楽しい一日だった。明日も楽しもう。


転職してSEからITコンサルタントになりました

前回の記事でサーバー側の記事を書きましたが、サーバー側の記事を書いたのは久しぶりでした。記事を書くの自体が久しぶりだったので、サーバー側の記事を書いたのはかなり久しぶりですね。

転職活動が無事に完了

というのも、色々と思うところや体調面での不安もあって転職活動をしていたんですね。無事に転職がうまくいって一息付けたので勉強して、こうして記事を書くことが出来ました。以前の職場ではフロントエンド中心だったのですが、今回の職場ではサーバーサイドもインフラも担当する予定です。


転職先の職場ではITコンサルタントとして、システム化計画を担当することになりました。以前の職場でもそんな感じのことをしていたので、やること自体はそれほど変わらないのですが技術領域と待遇がすごく変わりました。(給料が爆上げ)


以前の職場ではフロントエンド中心で、今回はサーバーサイドもインフラも担当すると言っていてやることが変わらないとはどういうことかと思うかもしれませんが、システムの規模が違うと「システム化計画」でもやることが全然違うんですね。これは企業によるのかもしれませんが。

システム規模による違い

システムの規模が小さいと「フロントエンド設計≒システム化計画」なんですね。サーバーサイドやインフラはLAMP環境で良しとして、フロントエンドの要件を詰めることがシステム化計画になります。


一方、システムの規模が大きいとそうもいかなくてサーバーサイドやインフラの要件もきちっと詰めていきます。新卒で入社した企業は大規模システム開発をしていて、私はそこでサーバーサイドやインフラの開発もしていたのですが、しばらく離れてしまっている間に大分状況が変わってきているようですね。最近はクラウドも一般化してきましたから、きちんと導入できるように勉強しています。

今後の楽しみ

ということで、今後はクラウドなどの記事も書いていきたいなと考えています。クラウドが今後さらに広まると、システムもデータも人も遠いところにあるのが普通になってリモートワークも広まるんじゃないかななんて考えてわくわくしています。


以上、「転職してSEからITコンサルタントになりました」でした。

Tomcat/Servletの記述をアノテーションで簡易化する方法

Servletへのアクセスがとっても簡単になりました。久しぶりにTomcatやServletを触ったら結構仕様が変わってましたので、私が観測した範囲でまとめておきます。

今回の記事は、先日書いた次の記事の更新版です。もちろん先日の次の記事の設定方法もまだ健在ですよ。今回の記事で紹介するほうが非常に簡単という話です。
「HTMLヘッダ」や「web.xmlのタグ」の解説。オマジナイのようだけどそれだけではありません。

アノテーション

Servlet 2.0からサーブレットにアノテーションを使用することでweb.xmlの編集が不要になりました。web.xmlはアドレスとディレクトリのマッピングを記述していたファイルです。具体的には、Servletのクラスの前行にこのようにアノテーションを記述すればアクセスすることが出来るようになります。
@WebServlet("/SampleServlet")
public class SampleServlet extends HttpServlet {

アクセス方法

具体的なアクセス方法をご紹介します。上記のServletクラスにアクセスするにはアノテーションに記述したクラス名にアクセスすれば良いのです。ここではSampleServletクラスですね。例えばjavascriptのajaxでアクセスするならこのように記述します。
$.ajax({
  url:'./SampleServlet',
  type:'POST',
  data:{ message:sendMessage },
  error:function() {
    alert("ロード失敗");
  },
  success:function(xml) { alert("ロード失敗"); }
});

これでPOSTでメッセージなりのデータを送信することが出来ます。以前の記述方法から見違えるほど簡単になりましたね。視認性が抜群によくなりました。

もう少し具体的に言うと、上記のようにajaxを書くと、ServletクラスのdoPostメソッドに指定したデータを送信することが出来ます。doPostメソッドは送られてきたデータを第一引数で取得し、第二引数を使用して送り返すことが出来ます。doPostメソッドから第二引数を使用して送り返されたデータはajaxのsuccess:function(xml)に入ります。これでjavascript(ajax)とjava(Servlet)を行って帰っての通信をすることが出来ました。簡単でしたね。

このようにアノテーションを使用することでweb.xmlというファイルを変更しなくて良くなりました。

以上、「Tomcat/Servletの記述をアノテーションで簡易化する方法」でした。

フリーランスに挑戦してみようと思う(2016/6/28に考えていたこと)

2016/6/28 の日記より、ブログを書きます。 この時期に私はこんなことを考えていました。
これまで、Webサービスを使ってちょこちょことお小遣いを稼いできました。この4月から就職活動と並行して行ってきたのですが、そのどちらも課題が明確になってきました。


課題

今明確に見えている課題は二点です。
・稼げる金額がちょこちょこ過ぎる。
・転職活動が上手くいかない。

詳しく見ていきます。


・稼げる金額がちょこちょこ過ぎる。
2か月やって会社員時代の1日分くらいでしょうか。情報コンテンツとして未完成なので継続して続けてはいきますが現時点で本業とするには厳しい数字です。

・転職活動が上手くいかない。
これはSEとしてのブランクが懸念されること、他分野他業種への転職にチャレンジしていたことからSEとして定着するかの疑問が払拭できないことが大きな原因になっています。

ということで、この課題を解決する方法としてまずはフリーランスとして働こうと思いました。お小遣いを稼ぎつつキャリアの形成をしていきます。では、フリーランスとして企業と契約するにはどうしたら良いのでしょうか。

フリーランスになるには

フリーランスとして企業と契約するためにはどうしたら良いのか調べてみました。大きな視点で見ると次の3点が必要となるようです。
・開業の届出
・所得税の申告
・企業と契約

詳しく見ていきます。


・開業の届出
開業は法人として開業か、個人事業として開業かの2つのやり方があります。今回、私は手続きが簡単な個人事業としての開業をしようと思います。申請の方法は次の国税庁サイトから届出書をダウンロードして提出です。提出時期は「事業の開始等の事実があった日から1ヶ月以内」とされていますので急ぐことではありませんね。契約が決まってからでも大丈夫です。

個人事業の開業・廃業等届出書(PDF/214KB)
[手続名]個人事業の開業届出・廃業届出等手続|申告所得税関係|国税庁

・所得税の申告
所得税の申告は税理士に頼むか、自分でやる方法があります。今回、私は自分でやろうと思います。自分でやれば無料ですし社会勉強にもなるからです。申告の方法は国税庁サイトから申告書をダウンロードして提出です。提出時期は「事業開始の日から2ヶ月以内」とされていますので、こちらも急ぐことではありませんね。

所得税の青色申告承認申請書(PDF/216KB)
[手続名]所得税の青色申告承認申請手続|申告所得税関係|国税庁

・企業と契約
契約は直接企業と契約するか、エージェントと呼ばれる代理人を通して企業と契約する方法があります。今回、私はエージェントを通して契約しようと思います。初めてのフリーランス契約ですので不明点が多いと思うからです。次のサイトで無料説明会をしているので参加してみることにしました。

案件に関する無料相談
フリーランスITエンジニアの案件・求人情報サイトは【geechs job】まで!


ということでフリーランスになるにあたって、取り急ぎやることはエージェントとして動いてくれる企業への登録ということになります。詳しくは説明会に参加することで明確になることもあるでしょう。追ってブログに書きます。



JSONの構造(オブジェクト・配列)と使い方(Java)

JSONの構造(オブジェクト・配列)と、その使い方(Java)についてご紹介します。

JSONとは

JSONとは、データ交換フォーマットです。特徴としては、人間にとって理解しやすいフォーマット。さらに、軽量かつソースコード上でも扱いやすいといったことがあげられます。また、データ交換フォーマットなので、プログラミング言語の種類によらず使用することが出来ます。

JSONの構造

JSONの構造はオブジェクトと配列に大別されます。それぞれの基本構造はこのようになっています。

オブジェクト

{"name":somegoro, "age":"25"}

配列

["somegoro", "25", "man"]

また、これらを組み合わせることも可能です。

オブジェクトの中にオブジェクト

{"user01":{"name":somegoro, "age":"25"}, "user02":{"name":daigorou, "age":"28"}}

オブジェクトの中に配列

{"user01":["somegoro", "25", "man"], "user02":["somegoro", "25", "man"]}

配列の中にオブジェクト

[{"name":somegoro, "age":"25"}, {"name":daigorou, "age":"28"}, {"name":someko, "age":"18"}]

配列の中に配列

[["somegoro", "25", "man"], ["daigorou", "28", "man"], ["someko", "18", "woman"]]

こうして自由に組み合わせることが可能です。今は配列数やオブジェクト数を絞っていますが、これが膨大な数になり組み合わせも複雑化すると人間が見れたものではないですね。こういうときこそプログラムで人間の見やすい形式に変換しましょう。

変換について

JavaScriptでも自由に変換することが出来ますが、Javaを使える環境ならばJava側で変換した方がシステムとして高速かつ安定したものになります。Java側で処理する際にはライブラリを使用して処理するのが便利です。


JSONC

JavaでオブジェクトとJSONを相互変換するためのオープンソースのライブラリです。JSONIC公式サイト(http://jsonic.osdn.jp/)に使用方法とダウンロードリンクがあります。ここからダウンロードして「Javaのビルド・パス」の「ライブラリ」に追加してください。プログラム上で import すると上記で追加したライブラリが使用できます。

実際に使用しているこのお方の記事がわかりやすいです。
http://blog.codebook-10000.com/entry/20130930/1380507089



以上、「JSONの構造(オブジェクト・配列)と使い方(Java)」でした。

Android 開発するならAndroid Studio!Eclipse pluginのGoogle公式サポートは2015年度に終了

Androidアプリを開発しようと色々調べていたら、Eclipseベースの開発環境は現在の主流では無くなっているようです。私が以前、官公庁向けのAndroidアプリを開発していた2010年頃とは状況が随分と変わっているようですね。

infoQ - Google、Android Eclipseツールのサポートを終了

上記の記事を要約すると、Eclipse AndroidプラグインのGoogle公式サポートは2015年度をもって終了することが書かれています。そして、今後はAndroidの公式開発ツールをAndroid Studioとしてサポートしていくと。

では、これまでのAndroidアプリ開発環境はどうなってしまうのか。調べて見たらこれも情報が出てきました。EclipseのAndmoreプロジェクトで引き続きサポート活動は続くようです。

Eclipse Andmore

ですので、多少の間はEclipse環境のまま開発を進めてもいいかもしれませんが、ゆくゆくはGoogleが公式の開発環境と指定した「Android Studio」に移行しなければなりませんね。これからAndroidアプリの開発を始める方は「Android Studio」一択でしょう。

2010年頃のEclipse環境Androidアプリ開発はたくさんの課題があったことを今でも思い出します。起動に10分くらいかかって、やっと起動したかと思えばクラッシュして再起動なんてことが頻発していました。ベテランエンジニアでも開発に苦戦していましたし、私は当時新卒入社して数年目で、技術力不足だったこともあり開発には本当に時間がかかりました。そんな状況でしたので、プロジェクトは大赤字を記録していました。みんなで徹夜してたのが懐かしいですねぇ。

今のEclipseでのAndroidアプリ開発環境のことは詳しく知りませんが、組込み系は開発環境が重くなりがちです。これは標準化が難しいからで、専用の開発環境を作れば改善されるのではないかと思います。よって、私は「Android Studio」大賛成です。これで大分軽くなるのではないでしょうか。

よって、今回作るAndroidアプリは「Android Studio」で開発してみようと思います。

eclipse pleiades 解凍の仕方。Windows10

eclipse pleiades の解凍にちょっとしたノウハウが必要だったのでご紹介します。今回の環境は Windows10 で Pleiades All in One 4.6 を解凍しました。eclipse のバージョンとしては NEON が対応します。

ダウンロードと解凍

まずは公式サイトから pleiades をダウンロードします。ダウンロード場所は任意です。


最初はこのままダブルクリックして解凍を試みました。しかし解凍できない。解凍中にエラーが出て正常に解凍できないのです。どうやら、私が普段使用しているフリーソフトLhaplusでは解凍に失敗するようです。

色々なサイトを調査してみると、pleiadesのサイトにそれらしい記載がありました。Windows 上で zip を解凍するときの注意とあります。これによると、pleiadesはLhaplusでの解凍は不可とのことでした。そして、Windowsエクスプローラーでの解凍が推奨されていました。

解凍方法の指定

解凍方法の設定を変更するべく対象のzipを左クリックしてプロパティを確認。



続きまして「プログラム」の「変更」をクリックします。



「エクスプローラー」を選択して「OK」をクリックします。



この画面に戻りますので「OK」をクリックします。



無事にエクスプローラーアイコンに変更されました。ファイルの開く種類の変更は出来たということです。ここまではWindows10でも、それ以前のWindowsでも変わりないでしょう。

Windows10の場合

しかし、Windows10はここから少々変わっています。展開する際にエクスプローラーのタブから展開を行うのです。左クリックメニューからの展開は無くなりました。

「展開」タブを選択して「すべて展開」をクリックします。



展開場所の選択画面が表示されるので、展開場所を指定して「展開」をクリックします。


無事に解凍することが出来ました。

以上、eclipse pleiades 解凍の仕方でした。


java から HTML へのデータ受け渡しについて(詳細版)

以前、「java から HTML へのデータ受け渡しについて」の記事を書きました。
https://somegoro.blogspot.jp/2016/11/java-html.html
この記事ではざっくりした内容しか書かれていない所謂簡易版だったので、今回は内容をもう少し掘り下げた記事を書きます。

思えば上記の記事を書いたころはIT業界に久しぶりに戻ってきたときでした。プログラミングどころかエクセルの使い方もすっかり忘れていて、なんでもかんでもWebで調べていたことを思い出します。何をするにも時間がかかって、当時の現場の皆さんには迷惑をかけただろうなぁ。当時の私はまったく余裕が無かったので、強気な発言ばかりしていました。

さて、思い出すこともそれくらいにしておいて本題に入ります。
「java → HTML のデータ渡し」についてです。ここの部分のデータの渡し方は色々あるのですが、私が最も簡単だと思う方法を今日は記事に書きます。具体的にはjQueryを使います。

jQueryには、便利なデータ受け渡し処理が用意されています。代表的なのが次の3つです。
・$.get
・$.post
・$.ajax

$.get はGETでサーバにデータ送信する処理です。$.post も同じようにPOSTでサーバにデータ送信する処理。$.ajax は記述の仕方次第でGETでもPOSTでもサーバにデータ送信することが出来る処理です。私は便利なので、ほとんど $.ajax を使用しています。GETで送るかPOSTで送るかは、用途によって選択するのが一般的です。

サーバにデータを送信する処理は上記3つですが、サーバからのデータ取得はどのようにするのか。実はこれもサーバにデータを送信する上記3つの処理を使用します。どれでもいいのですが、やはり私は便利なことを理由に$.ajax を使用します。$.ajaxのブロックチェーンには、サーバからデータを取得することが出来る次の処理が用意されています。
・done(function(data) {...}
・success: function(data){...}

2つ書きましたが、どちらを使用してもサーバからのデータを取得することは出来ます。jQueryのバージョンによって推奨しているものがあるので、使用しているjQueryのバージョンを確認して推奨していう方を使用するのがいいでしょう。

引数にdataと書いていますがここの名称は任意でいいです。引数で指定した任意の名称のオブジェクトにデータが入っています。では、どのようなデータが入っているのでしょうか。それはサーバで出力したデータです。サーバ側のプログラムであるjavaでprintln で出力してやれば、上記に書いたdataに自動で取得されます。細かいことはみんなjQueryがやってくれるのですね、便利ですね。

それでは最後に通してで記載しておきます。
javascript
$.ajax({
   type: "POST",
   url: "/javaClassName",
   success: function(data){
     alert(data);
   }
 });

java
public class javaClassName {
  ...
  ...
  ...
  System.out.println(678);
}

以上、java → HTML のデータ渡しの詳細でした。

CSS Tips 影を付ける

影を付ける

Web’Notes
CSSで影を付けるbox-shadowの使い方
http://webnonotes.com/css/box-shadow/

★CSS3リファレンス
box-shadow …… ボックスに影をつけるhttp://www.htmq.com/css3/box-shadow.shtml


リンクはaタグで書いた方が良さそう

ヨッセンス
[HTML] リンクタグ(aタグ)って何?基本から応用まで紹介!
http://yossense.com/link-tag/


ボタンリンクの場合はボタンを透過させると良いようです。

Black Flag
CSSで透明度/透過度(opacity)の指定をする方法
http://black-flag.net/css/20110513-3045.html


loadingを表示する

難易度が高いがCSSでアニメーションを作成できます。
HTML5でサイトを作ろう
画像を使わないでCSS3で様々なローディング用アニメーションをつくってみよう
http://www.html5-memo.com/webtips/css3-loading/

cssでなくgif画像を使用すると割合簡単にできます。商用でも無料で使用できるgif画像は、次のサイトにあります。
Preloaders world
http://preloaders.net/en/free

無料で商用ダウンロード可能かどうかわかりやすいです。
GIF画像検索サイト
ローディングGIF画像作り方&商用ダウンロード&JQUERY実装記事まとめ
http://gif89a.net/gif-loading/

コーディングの方法がわかりやすいです。
森のコーディング
画面読込中のグルグルまわるローディング画像を出す。jQuery・javascript
http://mori-coding.blog.jp/archives/6760786.html


リファレンス系

W3C公式サイト
W3C html5 reference
https://dev.w3.org/html5/html-author/


リファレンスのような内容がたくさん載っているサイト
w3schools.com
http://www.w3schools.com/

HTML5 Tag Reference
https://reference.hyper-text.org/html5/


自動生成系

テーブルのコード生成をしてくれるサイト。行や列の数字を入力することで、リアルタイム更新の図を完成テーブルを表示しながらコード生成してくれる。
TAG index
テーブルタグ作成ツール
http://www.tagindex.com/tool/table.html


フォント系

フォントが好きなサイト
WPC
http://web-pc.net/price

java(サーバーサイド処理) → HTML(画面側処理) のデータ渡し

java(サーバーサイド処理) → HTML(画面側処理) のデータ渡しについて、


結構前から調べてたのですが、やっと検討が付きました。というか思い出しました。
サーバー側で取得したり加工した「データ」を、どうやって画面側の処理に渡すのだろうかと考えていたのです。


javaの本では大体printでHTMLを出力しているようでしたが、実務を考えるとどうも現実的でないと思っていました。かと言って本には他の方法は見当たらない。


HTMLの本では form でjava側にデータを送ることについてはよく書いてあるのですが、逆方向の java → HTML へのデータ渡しについて書いてある書籍は見つかりませんでした。


javascriptも上記の二つ同様にサーバーサイド処理 → 画面側処理にデータを受け渡す方法は見つかりませんでした。


そこで、WireSharkなどでHTMLとjavaでどのようなデータを処理しているのかを見たり、HttpRequestやHttpResponseなどの仕様を調べてみました。そして辿りついたのが次の方法です。


次の情報を見ていくと詳細がわかります。
jsonデータを受け渡しに使うのですね、他の方法もあるのでしょうが、一つでもわかれば大分道が開けますね。


jQueryからサーブレットを呼び出してデータ取得、、、パラメータも渡してみたんだが。
http://ojorojoro.hateblo.jp/entry/2014/07/03/200931

JSON形式のWeb APIにアクセスするには?
http://www.buildinsider.net/web/jqueryref/034

ajaxでjavascriptとjavaの連携をする
http://pgori.hateblo.jp/entry/2013/05/24/111855

http://pussade8.hatenablog.jp/entry/2015/07/05/220612
(javascript)jQueryのajaxを利用してサーブレットからJSONを受け取る


これらはGoogle検索で「jquery java」とキーワード指定して検索すると出てきます。他にもたくさんのわかりやすい情報があるかと思いますので、気になる方は検索してみると良いかと思います。



上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...