Webサービス開発の誘惑(振り返り)

こんちは。

 

プログラミング勉強を振り返り。

 

最初はAndroidサンプル本を買って永遠サンプルコードを書いてました。

正直、完成しても全く意味がわからなかった。メソッドの説明見ても意味がわからなかった。それに多くの時間を費やした。

やり終わった後にRetrofitを使いApiサービスを利用した飯アプリをサンプル(勉強がてら)開発した。これに更にものすごく時間がかかった。

この期間にものすごく挫折や未熟さを感じました。

 

ただ飯アプリの場合は自分で思い通りに完成は出来たし、コードが理解できるようになった。サンプル本と比べて大いに収穫や学んだことが大きかったと思います。

 

ほんと、IntentからFragmentに変えるだけでもエラーの出まくりでWaste time.

RecyclerView、ClickListenerを実装するだけでもWaste time.

ニートでお金がないから朝から晩までバイトでWaste time

みたいな勉強始めからの一年でした。

もっとガシガシとコードを書けば半年ぐらいで出来たのかな。

切り替えて今年はプログラミングに時間を捧げます。

 

現在は、Android開発を一段楽終え、模索中です。

模索中というか、作りたいものがない感じです。

 

今は、Webサービス開発の誘惑にかられていてRailsを勉強し始めているところです。

とゆうのも、Twitterで僕がフォローさしてもらっている方々がRailsを使ってサービスなど面白いことをしているからです。後は、Railsは直感的で楽しいと聞いたことがあるからです。

 

プログラミングを始めるならRailsがオススメらしいです。Javaは苦労するらしいです。

僕はAndroidアプリを作って自分の手で触って動かして見たいと思ったからJavaから始めたんですけどね(結果、Javaで苦しい思いと多くの時間を費やしました)。

 

とりあえず行動してサービス作って見たいと思います。

今年にはエンジニアとして就職したい。本場のコードに触れたい。

 

みたいな感じで今回は箇条書きな感じで今の思いを書いて見ました。

では!!

 

RecyclervView/ClickListener/Retrofit2実装した。

前回に引き続きClick機能をつけたもの作りました。

コードはこちら

Interface class

public interface OnItemClickListener{
    void onItemClick(View view, int position);
}


RecyclerView Adapter class

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {


    private List<Shop> resultData;
    private Context mContext;
    private int rowLayout;
    private OnItemClickListener mClickListener;

    public CustomAdapter(List<Shop> resultData, int rowLayout, Context context) {
        this.resultData = resultData;
        this.rowLayout = rowLayout;
        this.mContext = context;

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(rowLayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder viewholder, final int position) {
        viewholder.item_text.setText(resultData.get(position).getName());
        Picasso.with(mContext).load(resultData.get(position).getPhoto().getMobile().getS())
                .into(viewholder.item_pic);

    }

    @Override
    public int getItemCount() {
        return resultData.size();
    }

    public void setmClickListener(OnItemClickListener mClickListener) {
        this.mClickListener = mClickListener;
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TextView item_text;
        private ImageView item_pic;

        public ViewHolder(View itemView) {
            super(itemView);
            item_text = (TextView)itemView.findViewById(R.id.item_text);
            item_pic = (ImageView)itemView.findViewById(R.id.item_pic);
            itemView.setOnClickListener(this);


        }

        @Override
        public void onClick(View v) {
            mClickListener.onItemClick(v, getAdapterPosition());
        }
    }

}

MainFragment class

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        rManager = new InternetManager();
        getGourmetData();
        mRecyclerView = (RecyclerView)view.findViewById(R.id.recycleView);





    }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {


        return inflater.inflate(R.layout.activity_main_fragment, container, false);
    }

    private void bindViews() {
        mRecyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setLayoutManager(layoutManager);
        adapter = new CustomAdapter(shops, R.layout.activity_custom_items, getActivity());
        mRecyclerView.setAdapter(adapter);
        adapter.setmClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                DetailActivity detailFragment = new DetailActivity();
                Shop shopInfo = shops.get(position);
                Bundle bundle = new Bundle();
                bundle.putString("title", shopInfo.getName());
                bundle.putString("address", shopInfo.getAddress());
                bundle.putString("catches", shopInfo.getCatch());
                bundle.putString("access", shopInfo.getAccess());
                bundle.putString("open", shopInfo.getOpen());
                bundle.putString("close", shopInfo.getClose());
                bundle.putString("wifi", shopInfo.getWifi());
                bundle.putString("private", shopInfo.getPrivateRoom());
                bundle.putString("card", shopInfo.getCard());
                bundle.putString("about", shopInfo.getOtherMemo());
                bundle.putString("budget", shopInfo.getBudget().getAverage());
                bundle.putString("photo", shopInfo.getPhoto().getMobile().getL());
                bundle.putString("url", shopInfo.getUrls().getMobile());

                detailFragment.setArguments(bundle);

                FragmentManager fragmentManager = getActivity().getFragmentManager();
                FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.activity_main, detailFragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

    }





    private void getGourmetData(){
        String shinsaibashiCode = "Y315";


        String json = "json";
        final Call<ShopData> requestData = rManager.getApiInterface().getShopData("APIキー",
                shinsaibashiCode, json);

        requestData.enqueue(new Callback<ShopData>() {
            @Override
            public void onResponse(Call<ShopData> call, Response<ShopData> response) {
               shopList = response.body().results.getShop();
               shops = shopList;
                bindViews();
            }

            @Override
            public void onFailure(Call<ShopData> call, Throwable t) {
                Log.e("Restaurants","Error" + t.getMessage());
                Toast.makeText(getActivity().getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();

            }
        });



    }

f:id:MrRoy:20180312013752p:plain:w250:h350
みたいな感じです。
ただRunするとRecyclerView: No adapter attached; skipping layoutと表示されるのでなぜかはわからない

とりあえず思った通りに形にすることができた。
サービスを何で作ったらいいのか迷ってる。Androidサーバーはみんな何使ってるの?
Web系も触りたいが、、早くエンジニアとして働いてサービス開発したい。

ついでにこのアプリのGitHubも載せておきます。

github.com

ではまた!!

RecyclervView実装してみた。

お久しぶりです。最近、以前に作ったアプリを改良してListViewからRecyclerViewに変えようとしていました。

しかし、、なかなかうまくいかなかった。

 

RunしてもNull Exception Java.util.listやら、 Interfaceのクリック機能がおかしいないなど、、

 

 しかし!!!!

 

ようやく思った通りにできました。ほんとに時間かかった。

 

一応、初コード載せに挑戦してみます。

requestData.enqueue(new Callback<ShopData>() {
            @Override
            public void onResponse(Call<ShopData> call, Response<ShopData> response) {
                List<Shop> shopList = response.body().results.getShop();
                adapter = new CustomAdapter(shopList, R.layout.activity_custom_items, getActivity());
                mRecyclerView.setAdapter(adapter);




            }

            @Override
            public void onFailure(Call<ShopData> call, Throwable t) {
                Log.e("Restaurants","Error" + t.getMessage());
                Toast.makeText(getActivity().getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();

            }

RecyclerView

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {


    private List<Shop> resultData;
    private Context mContext;
    private int rowLayout;
    private OnItemClickListener mClickListener;




    public void setClickListener(OnItemClickListener clickListener) {
        this.mClickListener = clickListener;
    }

    public CustomAdapter(List<Shop> resultData, int rowLayout, Context context) {
        this.resultData = resultData;
        this.rowLayout = rowLayout;
        this.mContext = context;

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(rowLayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder viewholder, final int position) {
        viewholder.item_text.setText(resultData.get(position).getName());
        Picasso.with(mContext).load(resultData.get(position).getPhoto().getMobile().getS())
                .into(viewholder.item_pic);





    }

    @Override
    public int getItemCount() {
        return resultData.size();
    }




    public class ViewHolder extends RecyclerView.ViewHolder{
        private TextView item_text;
        private ImageView item_pic;


        public ViewHolder(View itemView) {
            super(itemView);
            item_text = (TextView)itemView.findViewById(R.id.item_text);
            item_pic = (ImageView)itemView.findViewById(R.id.item_pic);


        }



    }



}

こんな感じです。
使ってみた感想は、ListView覚えるよりこっち覚えたほうがいいかもねと思いました。
あとはクリック処理がうまく機能してくれるように実装頑張ります。

サンプルアプリは完成仕掛けとして、web系触るべきか、kotolinで同じようなもの作るか
考え中です、、、。

サービス作ってみたいんだけど、大学卒業して独学でプログラミング勉強して
もう3月だしできればエンジニアとして就職活動したいけど、このスキルでいけるのか、、

とりあえず頑張ります。

コードレビューを定期的に受けれる場所に行きたい

お久しぶりです。

 

最近サボってました。。

 

とゆうのも、独学でアプリを開発してこれから先にどうしたら良いのか路頭に迷っている。独学だと頼れる人いないし、周りに開発している人少ないし、

 

定期的にコードレビュー受けれるとこに行きたい。

 

なかなか、エンジニアアルバイト、インターンも受からないし、、

本当に悩んでます。開発は楽しいし、続けて行きたいけど、、

どうすればいいのだーーーー

 

github.com

独学で作ったアプリ

最近サボりすぎた。アプリ完成したのにかかわらず、全然行動していなかった。

 

以前に自分が作ったアプリをGitHubに載せていたけど、

DEMOのgif画像の重要性を感じ、メルカリでAndroid端末を買い、gif画像製作したりして今回README.mdにてgif画像を追加しました。

Android Toolてすごい便利!!

便利なものがたくさんある世の中は素晴らしい。

 

 

DEMO画像はこんな感じ

 

興味ある方はぜひ見てください。

では!!

 

github.com

久しく投稿!!

お久しぶりです。本当におひさです。

 

最近はバイトしたり、釣り動画見たりしてました。

以前からブログにリンクを載せている「飯アプリ」の開発も行なってました。

以前はNavigationDrawer実装して、

今回はFragmentの実装などなど、いじってました。

以前も書いたと思うが、Fragmentの使い方が全然わからなかった、、(今思えば簡単だった、、。)今ではFragmentは主流だと思うが、、、

Intentがいらないのは画期的でスルスル動く感じがすごいとFragmentを使ってみて思った。

 

だいぶ前と比べてデザインが変わって使いやすくなったかな。

 

インターンも落ちてこれからどうしよか、、

前を向いて突き進もう!!

開発したプログラムのリンクもついでに載せときます

みてね!!

github.com

まだまだひよこ。

こんにちは。

 

某インターネット会社のインターンに応募したのですが見事にお祈り。

仕方ない。じぶんが未熟なだけ。受かって内容の濃いインターンに参加できる人は羨ましいな。落ちた理由は簡単。自分がひよこだから。参加できる人は大分優秀なんだろうな。

まぁエントリーした自分の勇気をたたえよう。開発したお店アプリも動くけど納得いかないし、xmlのエラーも直さなきゃいけないし。

とりあえず、インターンにいけなかった事は寝て忘れよう。

ただこれからどうしようか、もう大学卒業してる身だし、ITのアルバイト探すか、、。

アルバイトしないと本当にコードとか書けないしな、、、。

だからこそインターン行きたかった。エンジニアのコードに触れたかったぜ。。。。

 

とりあえず自分のエンジニアのスキルがまだ未熟でひよこなまだエンジニアとも名乗れないスキルの落ち込むお話でした。では。